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

如何用Brant检验结合svyolr检验复杂调查数据的PO假设?

针对svyolr()模型的比例优势(PO)假设检验方案

由于brant::brant()仅支持无权重的MASS::polr()模型,针对复杂调查加权数据的svyolr()模型,可通过以下几种方法检验比例优势假设:

方法1:利用survey包内置的似然比检验

核心思路是对比比例优势约束模型(即svyolr拟合的模型)和无约束多分类逻辑回归模型的拟合差异,通过似然比检验判断PO假设是否成立:

  1. 拟合比例优势模型:
library(survey)
# 假设已构建好调查设计对象 `design`
po_model <- svyolr(ordered_outcome ~ pred1 + pred2, design = design)
  1. 拟合无约束的多分类逻辑回归(允许每个因变量类别使用不同斜率):
unconstrained_model <- svymultinom(ordered_outcome ~ pred1 + pred2, design = design)
  1. 执行似然比检验:
anova(po_model, unconstrained_model)

若检验的p值小于显著性水平(如0.05),则拒绝比例优势假设;否则支持该假设。

方法2:手动实现加权版Brant检验

如果希望沿用Brant检验的逻辑,可以基于svyolr的输出手动适配加权计算:

  1. 提取模型数据、权重及因变量类别信息
  2. 参考brant包的源码逻辑,针对每个自变量,检验其斜率在不同因变量类别间的一致性(需纳入调查权重计算统计量)

简化示例框架:

# 提取模型相关数据
model_df <- model.frame(po_model)
survey_weights <- weights(po_model$design)
n_cat <- nlevels(model_df$ordered_outcome)

# 针对每个自变量构建加权检验(需补充Brant检验核心逻辑)
for (var in setdiff(names(coef(po_model)), "(Intercept)")) {
  # 此处需实现:基于加权数据,检验该变量在不同类别对比中的斜率是否相等
  # 可参考brant包中brant.test()的源码,替换为加权回归计算
}

注意:此方法需要对Brant检验的统计原理有明确理解,手动编码成本较高。

方法3:使用svyVGAM包的扩展支持

svyVGAM包专门针对复杂调查设计实现了广义加性模型,其中包含支持权重的比例优势检验:

library(svyVGAM)
# 拟合加权比例优势模型
vgam_po_model <- svyolr(ordered_outcome ~ pred1 + pred2, design = design, family = propodds)
# 输出比例优势假设的检验结果
summary(vgam_po_model, type = "wald")

该包会自动处理调查权重,直接输出针对PO假设的Wald检验结果。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 00:41:13