You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Stata中runmlwin拟合多水平模型后使用pwcompare两两比较的实现方法

Stata中runmlwin拟合带交互项多水平模型后实现两两比较的方法

pwcompare是Stata为内置多水平模型命令(如melogit)设计的后估计命令,runmlwin的默认返回值结构和官方命令不兼容,因此直接调用会报错。

你可以通过以下两种方案实现两两比较:

方案1:使用lincom手动构造对比(优先推荐,兼容性最好)

lincom可以直接调用runmlwin返回的系数矩阵e(b)和方差协方差矩阵e(V),自动计算对比的标准误、置信区间和p值,不需要手动推导方差,不管是固定效应还是带随机截距的多水平模型都适用。
示例代码(以你提到的(urban#1) vs (urban#0)对比为例):

* 第一步:先拟合runmlwin模型,确保收敛
runmlwin outcome i.urban##i.var2 cons, ///
level2(lev2: cons) level1(_n:) nopause or ///
discrete(distribution(binomial) link(logit) denominator(cons))

* 第二步:查看系数名,确认交互项的命名规则,避免拼写错误
mat list e(b)

* 第三步:构造对比
* 例1:计算urban=1分组下,var2=1相对于var2=0的效应
lincom 1.var2 + 1.urban#1.var2, or

* 例2:计算urban=0分组下,var2=1相对于var2=0的效应
lincom 1.var2, or

* 例3:直接计算两个分组的效应差(即urban=1组var2效应 - urban=0组var2效应)
lincom 1.urban#1.var2, or

方案2:修改返回值类适配pwcompare

如果需要直接使用pwcompare的批量对比功能,可以手动修改runmlwin的返回命令标识,让Stata将其识别为内置的melogit模型,即可正常调用margins和pwcompare:

* 跑完runmlwin模型后执行
ereturn local cmd "melogit"

* 计算各组边际效应
margins urban#var2, atmeans

* 调用pwcompare做两两比较
pwcompare urban#var2, or pveffects

注意:该方法为兼容取巧方案,部分复杂模型、复杂对比可能存在适配问题,优先使用方案1。

注意事项

  • 执行对比前请确认runmlwin模型正常收敛,方差协方差矩阵e(V)为正定矩阵,否则标准误计算会出错
  • 构造对比前可通过coeflist命令查看所有系数的准确名称,避免lincom中变量名拼写错误

内容的提问来源于stack exchange,提问作者user2704338

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.13 05:57:02