2011-12-09 798 views
6

Tengo un vector Y que contiene retornos futuros y un vector X contiene retornos actuales. El último elemento Y es NA, ya que el último retorno actual también es el final de la serie disponible.Impedir que NA se use en una regresión lm

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) 

quiero para asegurarse de que el último elemento de cada serie es no incluido en la regresión. Leí la documentación de na.action pero no estoy seguro si este es el comportamiento predeterminado.

Para cor(), ¿es esta la solución correcta para excluir X [4] e Y [4] del cálculo?

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

Respuesta

8

El valor por defecto recién fábrica para lm es hacer caso omiso de las observaciones que contienen NA valores. Ya que esto podría ser invalidado utilizando las opciones globales, es posible que desee establecer explícitamente na.action a na.omit:

> 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) 
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 

En cuanto a su segunda pregunta cor(X,Y,use='pairwise.complete.obs') es correcta. Como solo hay dos variables, cor(X,Y,use='complete.obs') también produciría el resultado esperado.

+3

Es posible que desee aclarar el motivo de su última oración: con solo dos vectores correlacionados, 'pairwise.complete.obs' y' complete.obs' son equivalentes. Con más vectores (es decir, tomando las correlaciones de todas las columnas en una matriz), no serían ... –

Cuestiones relacionadas