在 R 中运行 "margins" 函数时出错



我已经建立了一个简单的lm模型,如下所示:

model1 = lm(score ~
study_hours +
courses_taken +
study_hours:courses_taken +
taken_before +
mediumenjoyment +
highenjoyment +
female,
data = course_data)

现在,我试着计算均值的边际效应。我的代码是:

mean_list = data.frame(mean(score),
mean(study_hours),
mean(courses_taken),
mean(study_hours:courses_taken),
mean(taken_before),
mean(mediumenjoyment),
mean(highenjoyment),
mean(female))

mar2 = margins(model1, data = mean_list)
summary(mar2)

但是当我运行代码时,会抛出这个错误:

Error in mean(score) : object 'score' not found

我怀疑错误在这一行:

mean(study_hours:courses_taken)

通常,R中的对象名称不包括冒号,所以我认为您不能取平均值。

顺便说一下,我要注意到margins包在许多情况下工作得很好,但是它并没有被积极地开发。你可以尝试更新的marginaleffects包(免责声明:我是作者)。该包允许您通过键入 轻松地计算平均值(文档)的边际效应。
library(marginaleffects)
mod <- lm(mpg ~ ., data = mtcars)
mfx <- marginaleffects(mod, newdata = datagrid())
summary(mfx)
#> Average marginal effects 
#>    Term   Effect Std. Error z value Pr(>|z|)    2.5 %   97.5 %
#> 1   cyl -0.11144    1.04502 -0.1066 0.915075 -2.15964  1.93676
#> 2  disp  0.01334    0.01786  0.7468 0.455209 -0.02166  0.04834
#> 3    hp -0.02148    0.02177 -0.9868 0.323717 -0.06415  0.02118
#> 4  drat  0.78711    1.63537  0.4813 0.630301 -2.41816  3.99238
#> 5    wt -3.71530    1.89441 -1.9612 0.049857 -7.42829 -0.00232
#> 6  qsec  0.82104    0.73083  1.1234 0.261255 -0.61137  2.25345
#> 7    vs  0.31776    2.10451  0.1510 0.879982 -3.80700  4.44252
#> 8    am  2.52023    2.05665  1.2254 0.220423 -1.51073  6.55119
#> 9  gear  0.65541    1.49326  0.4389 0.660724 -2.27132  3.58215
#> 10 carb -0.19942    0.82875 -0.2406 0.809845 -1.82374  1.42491
#> 
#> Model type:  lm 
#> Prediction type:  response

最新更新