R:MASS::polr() 中的聚类标准错误

问题描述 投票:0回答:1

我正在尝试使用

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()

r regression logistic-regression
1个回答
3
投票

这本质上是遵循 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
© www.soinside.com 2019 - 2024. All rights reserved.