如何解决R语言中Probit回归的unexpected ')'报错问题
解决Probit回归的语法错误与边际效应计算
先修复代码中的语法错误
你的代码有两个核心问题导致Error: unexpected ')':
family=b"是不完整的语法,Probit回归需要指定binomial族并设置链接函数为probit,正确写法是family = binomial(link = "probit")- 自变量中重复四次
Edu_level,这会引发完全共线性,模型无法正常估计。如果Edu_level是连续变量,只需保留一次;如果是分类变量,应转为因子(factor(Edu_level))或生成对应的哑变量(不要重复原变量)
修正后的代码示例:
# 假设Edu_level是连续变量,保留一次;如果是分类变量,替换为factor(Edu_level) probreg <- glm( Adapt ~ Location + Gender + FGM + LO + FT + Edu_level + Credit_Accs + Clim_Info + Ext_Service + HCFI + HCFI3dum + HCFI4dum, data = data, family = binomial(link = "probit") ) # 查看回归结果 summary(probreg)
计算自变量对因变量的边际效应
Probit回归的系数是对数概率尺度的,直接解释性差,通常需要计算边际效应(即自变量每变化一个单位,因变量发生概率的变化量)。可以用margins包实现:
- 安装并加载包:
install.packages("margins") library(margins)
- 计算并展示边际效应:
# 计算平均边际效应(AME) marg_eff <- margins(probreg) # 查看结果 summary(marg_eff) # 如果想计算特定取值下的边际效应(比如自变量取均值时) marg_eff_at_mean <- margins(probreg, at = list(Edu_level = mean(data$Edu_level, na.rm = TRUE))) summary(marg_eff_at_mean)
内容的提问来源于stack exchange,提问作者Mamadee M. Kamara
相关产品推荐
相关产品推荐

