我正在尝试使用
MASS
包的 polr()
函数来估计具有聚类标准误差的序数逻辑回归。没有内置的聚类功能,因此我正在寻找(a)包或(b)手动方法来计算聚类标准误差使用模型输出。我计划使用 margins
包来估计模型的边际效应。
这是一个例子:
library(MASS)
set.seed(1)
obs <- 500
# Create data frame
dat <- data.frame(y = as.factor(round(rnorm(n = obs, mean = 5, sd = 1), 0)),
x = sample(x = 1:obs, size = obs, replace = T),
clust = rep(c(1,2), 250))
# Estimate and summarize model
m1 <- MASS::polr(y ~x, data = dat, Hess = TRUE)
summary(m1)
虽然 Stack Overflow 上的许多问题询问如何在 R 中对普通最小二乘模型的标准误差进行聚类(在某些情况下对于逻辑回归),但尚不清楚如何对有序逻辑回归中的误差进行聚类(即比例赔率逻辑回归)回归)。此外,现有的 SO 问题集中在具有其他严重缺点的包上(例如,模型输出的类与用于分析和结果呈现的其他标准包不兼容),而不是使用与
MASS::polr()
兼容的 predict()
。
这本质上是遵循 Achim Zeleis 在包小插图中提供的答案。
library(lmtest)
library("sandwich")
coeftest(m1, vcov=vcovCL(m1, factor(dat$clust) ))
t test of coefficients:
Estimate Std. Error t value Pr(>|t|)
x 0.00093547 0.00023777 3.9343 9.543e-05 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1