R中如何用linearHypothesis()检验多元回归不同方程的系数相等性
R中多元多变量回归跨方程系数相等性检验方法
核心结论
你完全可以使用car包的linearHypothesis()函数实现同一个自变量在不同因变量回归方程中的系数差异检验,具体操作如下:
1. 多因变量模型的系数命名规则
用lm()拟合多因变量回归后,系数的命名规则为因变量名:自变量名,你案例中三个态度方程的性别变量系数对应的名称分别为:
Attitude_1:GenderFemaleAttitude_2:GenderFemaleAttitude_3:GenderFemale
你可以运行coef(MMR)查看所有系数的完整命名,避免拼写错误。
2. 跨方程系数相等性检验代码
联合检验:三个方程的Gender系数是否全部相等
原假设为$H_0: \beta_{Gender(Attitude1)} = \beta_{Gender(Attitude2)} = \beta_{Gender(Attitude3)}$,代码如下:
# 先加载car包 library(car) linearHypothesis(MMR, hypothesis.matrix = c( "Attitude_1:GenderFemale = Attitude_2:GenderFemale", "Attitude_1:GenderFemale = Attitude_3:GenderFemale" ))
若输出结果的p值小于预设显著性水平(通常为0.05),则拒绝原假设,说明三个方程的Gender系数存在统计显著差异。
两两比较:仅检验两个方程的Gender系数差异
如果只需要对比Attitude1和Attitude2的Gender系数,简化代码如下:
linearHypothesis(MMR, "Attitude_1:GenderFemale = Attitude_2:GenderFemale")
3. 替代方案:多重比较自动校正
如果需要做多组两两比较且要求校正多重检验偏差,可以使用emmeans包实现,代码如下:
library(emmeans) # 提取不同因变量方程的Gender边际效应 emm <- emmeans(MMR, ~ Attitude | Gender, mult.names = "Attitude") # 两两比较,采用Bonferroni法校正p值 pairs(emm, by = "Gender", adjust = "bonferroni")
注意事项
注意函数名拼写为linearHypothesis(首字母大写),你问题中给出的示例拼写有误,会导致运行报错。
内容的提问来源于stack exchange,提问作者SigridVT
相关产品推荐
相关产品推荐

