运行多项逻辑回归之后,我有兴趣获得预测概率。
如果我跑步,我发现我的估计有所不同:
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)
但最后,结果不同了。你对这两行之间的区别有什么建议吗?
答案 0 :(得分: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始终是这些方面的最佳参考。