如何使lm忽略NA列

时间:2017-05-03 04:52:03

标签: r regression linear-regression lm

我试图计算一堆贝塔。不幸的是,有时候某些列都是NA。这是一个玩具示例:

x = structure(c(0.946032318625641, -0.472255854964591, -0.570914946839299, -0.624246840976067, -0.484359645048786, 0.888922481497905, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA), .Dim = c(6L, 3L), .Dimnames = list(c("AAPL", "AXP", "BA", "CAT", "CSCO", "CVX"), c("TV", "HG", "PT")))
y = structure(c(0.0519592742218189, 0.0148741387994269, 0.0646644308305699, 0.0406382502886822, 0.0454770268265812, 0.0403287646059043), .Names = c("AAPL", "AXP", "BA", "CAT", "CSCO", "CVX"))
b = lm(y ~ x)$coefficients

我如何告诉lm忽略这些?如果某些测试版以NA的形式返回,我不介意。

1 个答案:

答案 0 :(得分:3)

我猜您的主要问题是如何实现良好的对齐。看起来你正在使用循环来拟合许多线性模型。设计矩阵的维度保持固定,但不同的列可能突然消失,即在不同的迭代中变为NA。最后,你需要一个漂亮的系数矩阵,为那些消失的列填充NA。

一个简单的解决方案是用零列替换那些NA列。这样,设计矩阵是秩不足的,那些零列的系数将是NA。