혼합 모델에서 lme4 예측 함수를 사용하려는 데 어려움을 겪고 있습니다. 술어를 만들 때, 내 설명 변수 중 일부를 특정 레벨로 설정할 수 있지만 다른 변수의 평균을 설정할 수 있기를 원합니다.내 혼합 모델에서 lme4 예측 함수를 사용하는 데 문제가 있습니다.
a <- data.frame(
TLR4=factor(rep(1:3, each=4, times=4)),
repro.state=factor(rep(c("a","j"),each=6,times=8)),
month=factor(rep(1:2,each=8,times=6)),
sex=factor(rep(1:2, each=4, times=12)),
year=factor(rep(1:3, each =32)),
mwalkeri=(sample(0:15, 96, replace=TRUE)),
AvM=(seq(1:96))
)
AVM 번호가 물 밭쥐 식별 번호는 다음과 같습니다
다음은 내 원래의 데이터 세트의 단순화, 말도 안되는 버전입니다 몇 가지로 구성 데이터를합니다. 응답 변수 (mwalkeri
)는 각 벼룩에있는 벼룩의 개수입니다. 관심있는 주요 변수는 Tlr4로 3 가지 유전자형 (1, 2 및 3 코드)이있는 유전자입니다. 다른 설명 변수로는 생식 상태 (성인 또는 청소년), 달 (1 또는 2), 성별 (1 또는 2) 및 연도 (1, 2 또는 3)가 있습니다. 모두를 차지하면서
install.packages("lme4")
library(lme4)
mm <- glmer(mwalkeri~TLR4+repro.state+month+sex+year+(1|AvM), data=a,
family=poisson,control=glmerControl(optimizer="bobyqa"))`
summary(mm)
내가 각각 다른 TLR4 유전자형에 대한 기생충 부담에 대한 예측을 할 : 내 모델 (물론이 모델은 지금까지 만들어진 데이터를 부적절하지만 그건 중요하지한다)과 같다 다른 공변량. 이를 위해 나는에 설명 변수의 각을 설정하기 위해 원하는 레벨을 지정하기 위해 새로운 데이터 집합을 생성하고, 예측 기능 사용 :
b <- data.frame(
TLR4=factor(1:3),
repro.state=factor(c("a","a","a")),
month=factor(rep(1, times=3)),
sex=factor(rep(1, times=3)),
year=factor(rep(1, times=3))
)
predict(mm, newdata=b, re.form=NA, type="response")
이 일을 한을하지만 난 정말 평균에 걸쳐 년에 선호하는 대신에 설정하는 것 특정 수준으로 1 년. 그러나 평균 년을 시도 할 때마다 다음과 같은 오류 메시지가 나타납니다.
model.frame.default (delete.response (terms), newdata, na.action = na.action, : factor year has new에 오류가 있습니다. 수준
내가 지정한 수준을 선택하는 대신 몇 년 동안 평균을 낼 수 있습니까? 또한 이러한 예측과 관련된 표준 오류를 얻는 방법을 찾지 못했습니다. (lsmeans 패키지의) 함수를 사용하여 예측에 대한 표준 오류를 얻으려는 경우 :
c <- lsmeans(mm, "TLR4", type="response")
summary(c, type="response")
자동으로 표준 오류가 생성됩니다. 그러나 이것은 다른 모든 설명 변수를 평균하여 생성됩니다. 나는 아마도 그것을 바꿀 수 있다고 확신하지만 가능하다면 나는 predict()
함수를 사용하려고합니다. 내 목표는 x 축에 Tlr4 유전자형 그래프를 만들고 y 축에 기생충 부담을 예측하여 다른 모든 중요한 공변량을 고려하면서 각 유전자형에 대한 기생충 부담의 차이를 예측합니다.
넌 [재현성 예]를 포함하지 않은 (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example) 따라서 특정 코딩 제안을하고 작동 여부를 테스트하는 것은 어렵습니다. 원래의 데이터 세트와 정확하게 일치하는 컬럼 이름을 가진 새로운 data.frame을 전달하는 한,'predict()'를 사용하는 것은 꽤 쉬울 것입니다. 어떻게하면 시도 중 하나에 대한 코드와 반환 된 정확한 오류 메시지가 포함됩니다. – MrFlick
나는 이것에 약간의 시간을 보내고 싶지만 아직 잠시 빠져있다. 모든 고정 효과에 * * 값을 지정해야하지만 다음 세 가지 옵션 중 하나가 적당합니다. (1) 평균 또는 기준 값 ("조건부")으로 설정하십시오. (2) 합리적인 범위에 걸쳐 변화시킨 다음 예측 된 값을 평균화 ("한계")시킨다; (3) 범위를 넘어서서 최종 플롯의 모든 값을 그릴 수있는 방법을 찾으십시오 (라인을 그룹화하거나 패싯 또는 색상 또는 무언가로 그룹화). –
답장을 보내 주셔서 감사합니다! @MrFlick 나는 내 코드 중 일부를 포함하도록 원래 질문을 편집하여 재현 가능한 예제를 제공했다. 희망적으로 이것이 약간 더 명확 해집니다. @Ben Bolker는 내 설명 변수 중 일부를 지정된 수준으로 설정하는 것이 가능하지만 생물학적으로 가장 의미있는 점에 따라 다른 변수의 평균을 살펴볼 수 있습니까? 데이터 세트에서 이미 코딩 된 수준으로 설정할 때'predict()'를 사용해도 괜찮지 만 다른 일을하려고하면 (예 : 평균을 취함) 작동하지 않을 수 있습니다. 언제나 그렇듯이, 조언을 주시면 감사하겠습니다! – Martha