2016-07-07 2 views
9

나는이 데이터로 LME 모델을 실행하려고 :오류 : 개체에서 누락 된 값 -하지만 누락 된 값

tot_nochc=runif(10,1,15) 
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0)) 
age=runif(10,18,75) 
agecu=age^3 
day=factor(c(1,2,2,3,3,NA,NA,4,4,4)) 
dt=as.data.frame(cbind(tot_nochc,cor_partner,agecu,day)) 
attach(dt) 

corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu, 
        random = ~cor_partner+agecu+cor_partner *agecu |day, 
        na.exclude(day)) 

나는이 오류 코드 수 :

을 na.fail.default에서

오류 (목록 (cor_partner의 = C를 (1L, 1L, 2L, 1L, 1L, 1L :

객체

에서 누락 된 값 I는 포럼에서 유사한 질문이 알고 있습니다. 그러나 나는 n 내 경우 :

  • cor_partner에는 누락 된 값이 없습니다.
  • 전체 개체는 (적어도 지구 환경이 보여주는 것에서) 요인으로 코딩됩니다.

na.action을 사용하여 해당 NA 값을 제외 할 수 있지만 필자의 데이터가 정확히 무엇을하는지 이해하기 위해 함수가 누락 값을 읽는 이유를 알고 싶습니다.

+0

[재현 가능한 예] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)를 제공 할 데이터 및/또는 코드를 제공해주십시오.)? 그렇지 않으면이 질문에 대답하기가 어려울 것입니다 ... –

+0

@BenBolker 편집 됨, 감사합니다 – InverniE

+0

이것은 저에게 오타/thinko처럼 보입니다. 'na.exclude (day)'가해야 할 일을 설명 할 수 있습니까? 일반적으로 데이터 프레임에 'day'를 추가 한 다음 ** attach()를 사용하지 않고 ** data' 인수에 'day'를 포함하여 결합 된 데이터 프레임을 사용하여이 작업을 수행합니다. ?? –

답변

13

TL; DR 당신은 지금

set.seed(101) 
tot_nochc=runif(10,1,15) 
cor_partner=factor(c(1,1,0,1,0,0,0,0,1,0)) 
age=runif(10,18,75) 
agecu=age^3 
day=factor(c(1,2,2,3,3,NA,NA,4,4,4)) 
## use data.frame() -- *DON'T* cbind() first 
dt=data.frame(tot_nochc,cor_partner,agecu,day) 
## DON'T attach(dt) ... 

시도 ... 나머지 관측 변수에 걸쳐 최대 일치를 유지할 수 있도록, 한 번에 전체 데이터 프레임에 na.exclude() (또는 무엇이든)를 사용해야합니다 :

library(nlme) 
corpart.lme.1=lme(tot_nochc~cor_partner+agecu+cor_partner *agecu, 
       random = ~cor_partner+agecu+cor_partner *agecu |day, 
       data=dt, 
       na.action=na.exclude) 

우리는 수렴 오류와 경고를 얻지 만, 코드에 고유 한 문제가 있기 때문에 충분한 정보가없는 작은 구성 데이터 세트를 사용하고 있기 때문에 지금 생각합니다.

+0

감사합니다. 실제 데이터에 대한 경고없이 작동합니다. 나는 na.exclude (day)가 "day"의 값을 기반으로 전체 행을 자동으로 제외 할 것이라고 생각 했으므로 단일 열 값에서는 작동하지 않으므로 알아두면 좋습니다! – InverniE