2017-10-18 6 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 (objectStatus = list (reStruct = list (point = 8.82313412464084, 아마도 '데이터'또는 '매개 변수'인수가 필요합니다 .' –

+0

물론입니다! 답변을 업데이트했습니다. – Robert