我在运行线性回归后遇到问题predict,因为我无法弄清楚哪些 X 变量实际上包含在线性回归中。
假设我运行模型:
model1 <- lm(outcome ~ employee + shape + size + color + I(color^2)
data = data)
Run Code Online (Sandbox Code Playgroud)
回归输出中确定的观测值数量为 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
Run Code Online (Sandbox Code Playgroud)
我认为我可以获得正确数量的观察结果,如下所示:
> test = na.omit(data, cols = all.vars(model1))
> nrow(test)
[1] 207256
Run Code Online (Sandbox Code Playgroud)
但这仍然不能产生正确的观察数量。有没有直接的方法来获取线性回归实际使用的观察结果?
尝试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
Run Code Online (Sandbox Code Playgroud)