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

Par*_*gue 3 r

我在运行线性回归后遇到问题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)

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

Cam*_*nek 7

尝试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)

  • 如果你想获取原始数据集“data”的行号``row.names(model.frame(fit))``这样``data_used &lt;- data[row.names(model.frame(fit)) ),]`` 可能有用 (3认同)