我已经建立了一个简单的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