“利润率,预测”和“利润率之间的差异,预测均值”

时间:2018-05-09 11:52:18

标签: 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)

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

1 个答案:

答案 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始终是这些方面的最佳参考。