stata - "margins, predict"和 "margins, predict at means"之间的区别

标签 stata margins mlogit

运行多项逻辑回归后,我对获得预测概率感兴趣。

如果我运行,我发现我的估计有所不同:

mlogit cluster_lag i.indipvar1 i.indipvar2 i.indipvar3 indipvar4, rrr vce(cluster clustervar)

margins depvar, atmeans predict(outcome(0))

或者改为:

mlogit cluster_lag i.indipvar1 i.indipvar2  i.indipvar3 indipvar4,rrr vce(cluster clustervar)

margins depvar, predict(outcome(0))

我想知道当选项 atmeans 时,Stata 真正考虑什么未指定。

此外,我有一个名为“年份”的分类变量,有 4 个类别:71、81、91、2001。据我所知,输入应该有任何区别

margins cluster,  at(cluster==0) at (year=( 71 81 91 2001))

margins cluster,   at(cluster==0) over(year)

但最终结果不同。您对两条线之间的差异有什么建议吗?

最佳答案

这里的区别在于平均边际预测均值预测atmeans 命令指示 margins 生成后者,而默认值是前者。

例如:

margins, predict(outcome(0))

等同于:

predict newvar
mean newvar

如果你这样做:

margins covariate, predict(outcome(0))

这与:

相同
replace covariate = 1
predict newvar1
replace covariate = 2
predict newvar2
replace covariate = ...
predict newvar...
mean newvar*

对于协变量的每个唯一值。也就是说,它生成反事实数据集,将指定变量的值更改为给定值并保持所有其他变量不变,然后根据反事实数据集生成模型预测。

atmeans 命令与指定 , at() 选项相同,其中每个协变量在生成预测之前都固定为其平均值。例如,如果您有分类协变量或者均值不可观察或不典型,则这通常没有意义。

关于你的第二个问题,这两者并不等同:

margins, at(cluster=0) at(year=(1971 1981 1991 2001))
margins, at(cluster=0) over(year)

, over() 选项是取子集操作,而 , at() 是反事实操作。

第一行生成一个反事实(如上所​​述),其中每个观测值的被替换为1971年,然后是1981年,然后是1991年,然后是2001年,生成对数据集的每个版本(同时将所有反事实中的所有情况的cluster 保持为 0)。

第二行将所有观测值的聚类固定为0,然后按的观测值分割数据,然后生成每个子集的平均预测。

Stata's margins reference manual始终是这些事情的最佳引用。

关于stata - "margins, predict"和 "margins, predict at means"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50252693/

相关文章:

python - 从 Python : Pipe Stata console output to command line 调用的 Stata 批处理

html - 在让我的 margin-top 与跨浏览器兼容时遇到问题/

r - mlogit:需要 TRUE/FALSE 的缺失值

r - R : multinom in nnet package result different from mlogit in mlogit package? 中的多项逻辑回归

R:如何将我的数据格式化为多项式 Logit?

vector - 许多向量的垂直串联 Mata/Stata

python - 如何在 python 中创建 stata 本地宏?

rstudio - 如何使用RStudio用Stata命令编写RMarkdown文件?

html - 带边距顶部的元素在包含框外有边距

qt - 从样式表设置内容边距