You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R中使用面板数据执行有序Probit回归的方法及报错排查

在R中实现面板有序Probit回归的正确方法

你代码中的错误点

  • 变量名大小写不匹配:数据框里的因变量是infodemic(小写),但公式里写的是Infodemic(首字母大写),R对大小写敏感,这会导致程序找不到对应变量。
  • 参数位置错误:你把model="oprobit"放到了index参数的向量里,正确写法是index单独指定面板标识,model作为独立参数。更关键的是:plm包本身不支持有序Probit模型,它主要用于线性面板模型(固定/随机效应OLS、FE、RE等),无法直接拟合这类非线性面板模型。

正确实现方案:用ordinal包拟合随机效应有序Probit

对于面板结构的有序因变量,随机效应有序Probit是常用方法,我们可以用ordinal包的clm函数实现,步骤如下:

1. 安装并加载所需包

install.packages("ordinal")
library(ordinal)

2. 准备数据

先确保面板分组变量格式正确,将country转为因子类型:

x <- data.frame(
  year = c(2000,2001,2002,2000,2001,2002,2000,2001,2002),
  country = c(1,2,3,2,1,3,2,3,1),
  infodemic = c(1,3,2,4,2,1,3,2,2),
  democracy = c(3,3,1,2,4,2,1,4,1)
)
x$country <- as.factor(x$country)

3. 拟合随机效应有序Probit模型

通过link="probit"指定Probit链接函数,random=~1|country加入个体随机效应:

model <- clm(infodemic ~ democracy, data = x, 
             link = "probit", random = ~1|country)
summary(model)

4. 获取概率估计

使用predict函数指定type="prob",即可得到每个观测对应各因变量等级的概率:

# 生成概率估计
prob_estimates <- predict(model, type = "prob")
# 合并到原数据中查看
x_with_probs <- cbind(x, prob_estimates)
head(x_with_probs)

备选方案:用glmmTMB拟合混合效应有序Probit

如果需要更灵活的模型结构,也可以使用glmmTMB包实现:

install.packages("glmmTMB")
library(glmmTMB)

# 拟合模型
model_tmb <- glmmTMB(infodemic ~ democracy + (1|country), 
                     data = x, family = ordinal_probit())
summary(model_tmb)

# 获取概率估计
prob_tmb <- predict(model_tmb, type = "response")
x_with_probs_tmb <- cbind(x, prob_tmb)

内容的提问来源于stack exchange,提问作者dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 07:43:13