【问题标题】:Difference between "margins, predict" and "margins, predict at means" [closed]“边距,预测”和“边距,以均值预测”之间的区别 [关闭]
【发布时间】:2018-05-09 11:52:17
【问题描述】:

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

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

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 真正考虑的是什么。

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

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

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

但最后,结果是不同的。您对这两行之间的区别有什么建议吗?

【问题讨论】:

  • 后者计算个体特定的预测,然后对所有个体进行平均,而前者计算预测变量平均值的响应。
  • 我不认为这是 margins 的有效 Stata 语法。 depvar 这个词是非法的。
  • @DimitriyV.Masterov 是的,当然在我的语法中我写了我的因变量的实际名称。我以为这样写会更清楚。
  • @PearlySpencer 那么,你的意思是在后者中它考虑每个单独观察的所有协变量的实际值?你对此有一些参考吗?谢谢
  • 我投票结束这个问题,因为它是一个统计问题而不是编程问题。

标签: stata margins mlogit


【解决方案1】:

这里的区别在于平均边际预测均值预测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() 是反事实运算。

第一行生成一个反事实(如上),其中 每个 观察值 year 被替换为 1971、1981、1991 和 2001,生成对数据集每个版本的预测(同时在所有反事实情况下将cluster 设为 0)。

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

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

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 2018-01-07
    • 2011-03-04
    • 1970-01-01
    • 2019-02-25
    相关资源
    最近更新 更多