2013-06-12 2 views
4

나는 원래 data.frame에 LM에서 잔차를 넣어 위해 노력하고 있어요 : 잔류가 다음 mydata의 행의 수와 동일한 길이를 경우R : lm 잔여를 다시 data.frame에 포함시키는 방법?

fit <- lm(y ~ x, data = mydata, weight = ind) 
mydata$resid <- fit$resid 

는 두 번째 줄은 정상적으로 작동합니다. 그러나 필자의 경우 ind의 일부 요소는 NA입니다. 따라서 잔여 길이는 대개 행 수보다 적습니다. 또한 fit$resid은 "숫자"의 벡터이므로 mydata data.frame과 다시 병합 할 레이블이 없습니다. 이를 달성하기위한 우아한 방법이 있습니까?

답변

7

ind 그냥 벡터하는 경우 그것은 꽤 쉽게해야한다고 생각합니다.

sel <- which(!is.na(ind)) 
mydata$resid <- NA 
mydata$resid[sel] <- fit$resid 
+5

대안으로 모델은'lm (..., na.action = na.exclude)'에 맞을 수 있습니다. residuals()는 누락 된 경우에 대해 해당 출력을 'NA'로 채 웁니다. [이 응답] (http://stats.stackexchange.com/a/11028/1909)을 참조하십시오. – caracal

+0

나는 이것이 data.frame에서 NA의 경우에만 작동하고 data.frame에없는 가중치 배열에서는 작동하지 않는다고 생각했습니다. – John

+0

명백하게, 그것은 무게를 위해 작동합니다. [http://pastebin.com/0VUd68cz](http://pastebin.com/0VUd68cz)를보십시오. 나는 이것을 아주 철저히 조사하지는 않았지만. – caracal

관련 문제