2011-12-09 4 views
6

나는 미래의 수익을 포함하는 벡터 Y를 가지고 있고 벡터 X는 현재 수익을 포함하고 있습니다. 마지막 Y 반환 값은 NA입니다. 마지막 현재 반환 값은 사용 가능한 계열의 맨 끝이기도합니다.lm 재현에서 NA 사용 금지

X = { 0.1, 0.3, 0.2, 0.5 } 
Y = { 0.3, 0.2, 0.5, NA } 
Other = { 5500, 222, 523, 3677 } 

lm(Y ~ X + Other) 

나는 각 시리즈의 마지막 요소가 회귀에 포함 하지이 있는지 확인하려면. na.action 문서를 읽었지만 이것이 기본 동작인지 확실하지 않습니다.

cor()의 경우 X [4]와 Y [4]를 계산에서 제외시키는 올바른 해결책입니까?

cor(X, Y, use = "pairwise.complete.obs") 

답변

8

lm의 초기 신선한 기본값은 NA 값을 포함하는 관찰을 무시하는 것입니다.

> summary(lm(Y ~ X + Other, na.action=na.omit)) 

Call: 
lm(formula = Y ~ X + Other, na.action = na.omit) 

[snip] 

    (1 observation deleted due to missingness) 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

두 번째 질문에 관해서는 cor(X,Y,use='pairwise.complete.obs')이 정확이이 전역 옵션을 사용하여 오버라이드 (override) 할 수 있기 때문에, 당신은 명시 적으로 na.action na.omit에 설정할 수 있습니다. 단 두 개의 변수 만 있기 때문에 cor(X,Y,use='complete.obs')도 예상 된 결과를 생성합니다.

+3

최종 문장 뒤에있는 이유를 명확히 할 수 있습니다. 두 개의 벡터 만 상관되고 'pairwise.complete.obs'와'complete.obs'는 동일합니다. 벡터가 많을수록 (즉, 행렬의 모든 열의 상관 관계를 취함), 그렇지 않습니다. –