Logit模型聚类稳健标准误预测概率图制作问题求助
我之前也踩过cplot()这个坑!它对vcov参数的支持确实有bug,没法直接传递聚类稳健的方差设定。不过有两个非常靠谱的替代方案,亲测有效:
方法1:手动计算预测值+自定义画图(最灵活)
这个方法绕开cplot()的参数问题,直接用margins计算带聚类稳健标准误的预测概率,再用Stata基础画图命令可视化:
* 1. 拟合Logit模型(也可以不提前指定robust,后面margins单独设置) logit y x1 x2, cluster(id) * 2. 计算目标变量的预测概率,明确指定聚类稳健SE * 这里以x1从1到10的全范围为例,可根据你的变量调整区间 margins, at(x1=(1(1)10)) vcov(cluster id) saving(margin_output, replace) * 3. 从保存的结果文件提取数据,用twoway画图 use margin_output, clear twoway (line _at _margin, lwidth(medium) color(navy)) /// (rcap _margin_lb _margin_ub _at, lcolor(gray) lwidth(thin)), /// ytitle("Predicted Probability of Y=1") /// xtitle("X1") /// title("Logit Model: Cluster-Robust Predicted Probabilities") /// legend(off) /// ylabel(0(0.2)1)
方法2:用官方的marginsplot(最简便)
Stata官方的marginsplot完全支持margins命令中指定的聚类稳健方差设定,比cplot()更稳定可靠:
* 1. 拟合Logit模型 logit y x1 x2, cluster(id) * 2. 计算预测概率,明确指定聚类稳健SE margins, at(x1=(1(1)10)) vcov(cluster id) * 3. 直接调用marginsplot画图,自动继承聚类SE设置 marginsplot, ytitle("Predicted Probability") /// xtitle("X1") /// title("Cluster-Robust Predicted Probabilities") /// recast(line) recastci(rcap) /// color(navy) cicolor(gray) /// legend(off)
临时 workaround(仅当你必须用cplot()时)
如果坚持要使用cplot(),可以先把聚类稳健的方差协方差矩阵替换到当前模型的估计结果中,再调用cplot():
* 拟合基础Logit模型 logit y x1 x2 * 替换为聚类稳健的vcov矩阵 estimates vcov, cluster(id) * 现在调用cplot()会使用聚类稳健SE cplot, var(x1) model(logit) ytitle("Predicted Probability")
不过这个方法依赖Stata版本的兼容性,稳定性不如前两种,还是优先推荐方法1或2。
内容的提问来源于stack exchange,提问作者Rebecca412
相关产品推荐
相关产品推荐

