如何确定线性回归中使用了哪些观测值?

时间:2018-12-22 02:28:19

标签: r

运行线性回归后,我无法运行predict,因为我无法弄清楚线性回归中实际上包含哪些X变量。

假设我运行模型:

model1 <- lm(outcome ~ employee + shape + size + color + I(color^2) 
  data = data)

在回归输出中确定的观察数为224605。
当我尝试像这样运行预测时:

test = data.frame(y = predict(model1), x = data$employee)

Error in data.frame(y = predict(model1), x = data$employee) : 
  arguments imply differing number of rows: 224605, 233262

我以为我可以得到正确数目的观测值,像这样:

> test = na.omit(data, cols = all.vars(model1))
> nrow(test)
[1] 207256

但是这仍然不能产生正确数量的观察值。是否有直接的方法来获取线性回归实际使用的观测值?

2 个答案:

答案 0 :(得分:3)

尝试model.frame

set.seed(1)

df <- data.frame(x = rnorm(10), y = rnorm(10))
df[c(3, 5), 1] <- NA
df[7, 2] <- NA

df
#             x           y
# 1  -0.6264538  1.51178117
# 2   0.1836433  0.38984324
# 3          NA -0.62124058
# 4   1.5952808 -2.21469989
# 5          NA  1.12493092
# 6  -0.8204684 -0.04493361
# 7   0.4874291          NA
# 8   0.7383247  0.94383621
# 9   0.5757814  0.82122120
# 10 -0.3053884  0.59390132

fit <- lm(y ~ x, df)

model.frame(fit)
#              y          x
# 1   1.51178117 -0.6264538
# 2   0.38984324  0.1836433
# 4  -2.21469989  1.5952808
# 6  -0.04493361 -0.8204684
# 8   0.94383621  0.7383247
# 9   0.82122120  0.5757814
# 10  0.59390132 -0.3053884

答案 1 :(得分:2)

默认情况下会省略缺少的观察。如果一行中有一个用于模型中使用的任何变量的NA,它将被忽略。有关详细信息,请参见?lmna.action部分。

您可以运行na.omit(data[c("outcome", "employee", ..."color")])来获取带有省略变量的数据框(将公式中的所有列放入na.omit()中。还可以将其从模型对象{{1 }}是用于模型拟合的数据框(省略缺失值)。

您可能还想研究model1$model软件包以整理模型。 broom是一种将预测添加回原始数据的好方法。