R语言fixest包feglm命令是否自动处理虚拟变量共线性?
使用fixest包feglm时虚拟变量的共线性处理
两种写法都可行,feglm会自动处理完全共线性
如果你把3个虚拟变量都放进回归公式,feglm会自动识别完全共线性问题,自动剔除其中一个作为参照组,不会抛出错误,回归结果是有效的。比如:# 假设三个虚拟变量分别是z0(z=0)、z1_8(1≤z≤8)、zgt8(z>8) feglm(y ~ z0 + z1_8 + zgt8 + fe(id), data = your_data)运行后你会看到输出里只显示两个虚拟变量的系数,第三个被当作基准组,不会出现在结果中。
手动剔除一个虚拟变量更可控
如果你希望明确指定参照组,手动删掉其中一个虚拟变量即可,比如选择z=0的组作为参照,只放入z1_8和zgt8:feglm(y ~ z1_8 + zgt8 + fe(id), data = your_data)这种方式和自动处理的结果完全一致,但你能自主决定哪个组作为基准,避免函数自动选择的不确定性。
更简洁的替代方案:用因子变量
不用手动生成三个虚拟变量,直接把原变量z转换成三分类因子,feglm会自动处理参照组:# 生成三分类因子,指定参照组为z=0的组别 your_data$z_cat <- factor( ifelse(your_data$z == 0, "z0", ifelse(your_data$z %in% 1:8, "z1_8", "zgt8")), levels = c("z0", "z1_8", "zgt8") ) # 运行回归 feglm(y ~ z_cat + fe(id), data = your_data)这种写法更简洁,也减少了手动生成虚拟变量可能出现的错误。
内容的提问来源于stack exchange,提问作者mostlyharmless563
相关产品推荐
相关产品推荐

