防止在lm回归中使用NA。

8

我有一个包含未来收益的向量Y和一个包含当前收益的向量X。由于最后一个当前收益也是可用系列的末尾,因此最后一个Y元素为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")
1个回答

14

lm的出厂默认设置是忽略包含NA值的观测值。由于全局选项可以覆盖此设置,因此您可能希望明确将na.action设置为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)
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

至于你的第二个问题,cor(X,Y,use='pairwise.complete.obs') 是正确的。由于只有两个变量,cor(X,Y,use='complete.obs') 也会产生预期的结果。


3
你可能需要澄清最后一句话的原因:当只有两个向量相关时,“pairwise.complete.obs”和“complete.obs”是等效的。但是如果有更多的向量(即在矩阵的所有列之间进行相关性分析),它们就不会等效了。 - Ben Bolker

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接