提问人:Nader Mehri 提问时间:6/2/2023 最后编辑:Nick CoxNader Mehri 更新时间:6/2/2023 访问量:67
使用 margins 命令获取结果变量的预测值
Obtaining predicted values of the outcome variable using margins command
问:
我拟合了一个多项式逻辑模型,如下所示。使用 margins 命令,我想获取结果变量的预测值,同时将预测变量设置为某些特定值。换句话说,我想复制下面的 Stata 代码。Chatgpt 给了我代码,我也粘贴在下面,但它返回错误“find_terms_in_model.default(model, variables = variables) 中的错误:”变量“中的某些值不在模型术语中。
我的多项式 LOGIST 代码
library(nnet)
model <- multinom(obesity_E ~ age_100 + I(age_100^2) + obesity + age_100:obesity +
covid:race + age_100:race + education + education:race +
rabplace_5, data = female_98_2020, maxit=1000)
ChatGPT 建议的代码
margins_model <- margins(model, variables = "obesity:race:rabplace_5",
at = list(age_100 = seq(0, 25, 1)), atMethod = "mean",
method = "probs", force = TRUE, noSe = TRUE,
save = "tran_point_F", replace = TRUE)
我的 Stata 代码
margins , at (age_100=(0 (1) 25) obesity=(1 (1) 4) race=(0 (1) 3) rabplace_5=(1 (1) 5)) atmeans force nose saving(tran_point_F, replace )
答:
2赞
Vincent
6/2/2023
#1
该包仅计算斜率,而不计算预测。此外,该软件包不再被积极维护和开发(也许只是关键的错误修复)。margins
您可以改用 marginaleffects
包,这是我开发的较新的包,作为更灵活的继承者(注意:利益冲突)。margins
请参阅此小插图,了解与 Stata 的语法比较: https://vincentarelbundock.github.io/marginaleffects/articles/alternative_software.html
您需要的代码可能如下所示:
library(nnet)
library(marginaleffects)
m <- multinom(Species ~ Petal.Length + Petal.Width, data = iris, trace = FALSE)
avg_predictions(m, newdata = datagrid(Petal.Length = c(1, 4, 6)))
#
# Group Estimate Std. Error z Pr(>|z|) S 2.5 % 97.5 % Petal.Width Petal.Length
# setosa 0.333 0.0479 6.95 < 0.001 38.0 0.2389 0.427 1.2 1
# versicolor 0.382 0.1195 3.20 0.00139 9.5 0.1477 0.616 1.2 4
# virginica 0.285 0.1192 2.39 0.01672 5.9 0.0516 0.519 1.2 6
#
# Columns: rowid, group, estimate, std.error, statistic, p.value, s.value, conf.low, conf.high, Species, Petal.Width, Petal.Length
评论
0赞
Nader Mehri
6/3/2023
感谢您的有益澄清!在建议的解决方案中,我们将 Petal.Length 的值设置为 1、4 和 6。如果这是正确的,我想知道为 Petal.Width 设置了什么值?另外,我想知道下面建议的代码与您的代码有何不同: 花瓣:predicted_probs <- predict(model, newdata = datagrid(Petal.Length = c(1, 4, 6)), type = “probs”)
1赞
Vincent
6/3/2023
datagrid
将其他变量设置为它们的均值,但可以自定义。请参阅文档。在这种情况下,两者之间应该没有区别,除了返回不确定估计值。这里的预测小插曲中有大量示例和详细教程:vincentarelbundock.github.io/marginaleffects/articles/...predictions()
avg_predictions()
评论