含虚拟变量乘法的回归:两种建模方法差异及修正咨询
两种回归建模方法的差异及问题修正
核心差异说明
- 方法1:仅基于
Country=="USA"的3个样本,拟合Salary对Variable1的线性回归,模型形式为Salary = β₀ + β₁*Variable1,所有参数仅由美国样本计算得出。 - 方法2:纳入全部6个样本,用
I(Variable1*Dummy_USA)作为单一自变量。由于非美国样本的Dummy_USA=0,乘积项值为0,此时模型实际形式为:- 美国样本:
Salary = β₀ + β₁*Variable1 - 非美国样本:
Salary = β₀
非美国样本会参与截距项β₀的拟合,整个模型基于6个样本估计,和方法1的结果完全不同。你的理解是正确的,方法2确实用到了全部6个样本。
- 美国样本:
修正方案
如果想通过I()函数实现和方法1完全一致的效果(仅用美国样本拟合Salary~Variable1),可以用以下两种方式:
方式1:过滤样本后使用I()
直接保留方法1的过滤逻辑,若只是验证I()的用法,可写成:
summary(lm(Salary~I(Variable1), df%>% filter(Country=="USA")))
注:此处I()其实是多余的,单变量回归无需用I()屏蔽语法,直接写Salary~Variable1即可。
方式2:构造变量强制非美国样本不影响系数
若不想过滤数据,可通过公式构造让非美国样本不参与Variable1的系数估计:
summary(lm(Salary~Dummy_USA + I(Variable1*Dummy_USA) - 1, df))
该模型中:
- 美国样本的拟合式为
Salary = β₁ + β₂*Variable1 - 非美国样本的拟合式为
Salary = 0,这类样本会产生大残差,但Variable1的系数仅由美国样本决定。不过这种方式不如直接过滤样本直观,更推荐第一种方案。
补充:R公式语法中,~a*b会自动展开为~a + b + a:b(主效应+交互项),而I(a*b)的作用是屏蔽公式的特殊解析,仅计算变量的算术乘积作为单一自变量。
内容的提问来源于stack exchange,提问作者Lohengrin
相关产品推荐
相关产品推荐

