2017-10-18 10 views
1

私は混合モデルとTukeyのテストをループしたいと思います。 私がしたいのは、フィッティングと3列(それぞれ応答を含む)と4つのサブグループ(合計= 12)のフィッティングと比較を繰り返すことだけです。ループの混合モデルとtukeyの比較

同様のデータフレームは、https://drive.google.com/open?id=0Bwrsa11LAnrgTXMzWk1fYXR1MHMにあります。 3つの再配置は、列「RESP_1」、「RESP_2」および「RESP_3」であり、サブグループは列「層」の変数である。私がモデルとすることにより、単一の応答とユニークな層のためのadjustament得る

:次に

#mixed model  
Mlm_RESP_1 <-lme(RESP_1~clay+till, random=~1|strata/point, data=loop_lm_tukey) 

#tukey 
ls_RSP_1 <- lsmeans(Mlm_RESP_1,pairwise~till,adjust="tukey") 
ls_RSP_1$contrasts 
cld(ls_RSP_1) 

を、私はによりループに各列のモデルを試してみてください。今から

#loop model  
mlm_RESP <- lapply(c("RESP_1", "RESP_2","RESP_3"), function(k) { 
     lme(eval(substitute(j ~ clay+till, list(j = as.name(k)))), random = ~1|strata/point, data = loop_lm_tukey)}) 

lapplyがリストを返し、このパッケージがこの種のクラスを処理できないため、lsmeansパッケージを使用してTukey比較をループすることができません。

さらに、これをどのレイヤーごとにループすることができますか?

Tukeyの比較のループを行うための助けがあれば幸いです。

+0

あなたは 'mlm_RESP'リストの上に' tukeyを 'lapply()することができます。 – LAP

+0

リストの各メンバーでlsmeansを実行するだけです。 – rvl

+0

'lsmeans'はリストのメンバーを扱うことができません。しかし、私はループを行う方法を学びたいと思います(私はこのアクションを適用するために他の3つのデータフレームを持っています)。 –

答えて

0

これを試してみてください:

mlm_RESP <- lapply(c("RESP_1", "RESP_2","RESP_3"), function(k) { 
    df=cbind(resp=loop_lm_tukey[,k],loop_lm_tukey[,-c(1:3)]) 
    lme(resp~clay+till, random = ~1|strata/point, data = df)}) 

res1=lapply(mlm_RESP,function(rm)lsmeans(rm,pairwise~till,adjust="tukey")) 

かを:

res2=list() 
for (i in 1:3) res2[[i]]=lsmeans(mlm_RESP[[i]],pairwise~till,adjust="tukey") 

結果は同じです。

+0

コードを実行すると、エラーが返されます。 'as.name(k)のエラー:オブジェクト 'k'が見つかりません。 ref.grid(object = list(modelStruct = list(reStruct = list(point = 8.82313412464084、 おそらく、 'データ'または 'パラメータ'引数が必要です.' –

+0

もちろん、答えを更新しました! – Robert