如何在Stata的oprobit模型中加入交互变量并解读其效应?
Stata有序probit模型中交互项的添加与解读
一、添加height5与性别的交互项
在你的oprobit命令末尾直接加入交互项即可,Stata有两种便捷写法:
- 用
#(Stata 11+版本支持,推荐):oprobit earncat height5 BMI age i.sex i.mrd i.cworker i.race height5#i.sex - 或者用
*(效果完全一致):oprobit earncat height5 BMI age i.sex i.mrd i.cworker i.race height5*i.sex
如果习惯先生成交互变量再拟合模型,也可以这么操作:
gen height5_sex = height5 * sex oprobit earncat height5 BMI age i.sex i.mrd i.cworker i.race height5_sex
注:i.sex是将性别作为分类变量处理,交互项会自动捕捉不同性别组中height5对收入类别的差异效应。
二、交互项的解读(关键看边际效应)
有序probit的系数本身难以直接解读为概率变化,必须用margins命令计算边际效应,才能得到你想要的“概率提升幅度”:
- 先拟合带交互项的模型(用上面任意一种写法即可)
- 计算不同性别下,height5每增加1单位(即身高增加5英寸)对最高收入类别的边际效应:
把命令里的margins, dydx(height5) at(sex=(0 1)) predict(outcome(#))#替换成你数据中最高收入类别的编号(比如最高收入是第4类,就写predict(outcome(4)))。 - 结果判断:
如果男性(假设sex=1代表男性)对应的dydx(height5)数值大于女性(sex=0),且通过显著性检验(p值<0.05),就能直接得出**“男性身高每增加5英寸,进入最高收入类别的概率提升幅度大于女性”**的结论。
三、拓展:添加其他交互项(比如身高与职业)
逻辑完全一致,假设职业变量是分类变量occ,直接在命令中加入交互项:
oprobit earncat height5 BMI age i.sex i.mrd i.cworker i.race height5#i.sex height5#i.occ
之后同样用margins命令,计算不同职业分组下height5的边际效应,对比即可看出身高与收入的关系是否因职业而异。
内容的提问来源于stack exchange,提问作者econstu123
相关产品推荐
相关产品推荐

