运行线性回归后,我无法运行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
但是这仍然不能产生正确数量的观察值。是否有直接的方法来获取线性回归实际使用的观测值?
答案 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
,它将被忽略。有关详细信息,请参见?lm
和na.action
部分。
您可以运行na.omit(data[c("outcome", "employee", ..."color")])
来获取带有省略变量的数据框(将公式中的所有列放入na.omit()
中。还可以将其从模型对象{{1 }}是用于模型拟合的数据框(省略缺失值)。
您可能还想研究model1$model
软件包以整理模型。 broom
是一种将预测添加回原始数据的好方法。