在进行多项logistic回归后,我有兴趣获得预测的概率。
如果我跑步的话,我发现我的估计值有差异:
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)但最后,结果是不同的。你对这两条线的区别有什么建议吗?
发布于 2018-08-02 00:18:55
这里的区别在于平均边际预测和平均预测之间的区别。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的观测值,然后生成对每个子集的平均预测。
在这些方面, reference manual始终是最好的参考。
https://stackoverflow.com/questions/50252693
复制相似问题