Python中Probit回归两个分类变量交互项的正确添加方法
问题根因
- 变量名大小写不统一:公式中同时出现小写
gender和大写Gender,数据集无对应Gender字段时会导致patsy语法解析异常,触发分类数据维度报错 - 公式符号使用错误:statsmodels公式语法中
*代表同时生成两个变量的主效应+交互项,你已经手动写入了gender、treatment1、treatment2的主效应,重复解析会触发异常 - 存在变量拼写错误:公式中的
contorl3为拼写错误,正确应为control3,也会导致变量识别异常
正确实现代码
场景1:gender、treatment1、treatment2已提前编码为0/1数值型虚拟变量
使用:符号仅生成交互项即可,不会重复计算主效应:
probit_model = probit("decision ~ gender + treatment1 + treatment2 + control1 + control2 + control3 + treatment1:gender + treatment2:gender", data_probit).fit()
场景2:gender为未编码的原生分类变量(如取值为男/女的字符串、Categorical类型)
用C()函数包裹分类变量,告知patsy自动完成虚拟变量编码后计算交互项:
probit_model = probit("decision ~ C(gender) + treatment1 + treatment2 + control1 + control2 + control3 + treatment1:C(gender) + treatment2:C(gender)", data_probit).fit()
边际效应说明
通过上述原生语法生成的交互项完全符合统计模型底层逻辑,后续调用get_margeff()方法计算边际效应时,会自动基于treatment和gender的交叉导数计算结果,不需要额外手动调整。你之前手动构造交互项的方法得到的系数和原生语法结果一致,但原生语法可以避免边际效应计算时的手动推导错误。
内容的提问来源于stack exchange,提问作者rosa
相关产品推荐
相关产品推荐

