运行多项逻辑回归后,我对获得预测概率感兴趣。
如果我运行,我发现我的估计有所不同:
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/