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

R中加权数据集Kruskal-Wallis检验异常问题及解决

使用WeightIt与survey包分析跨国观察数据的问题与解决方法

数据加权处理

我正在分析包含4个国家受试者的大型观察数据库,由于不同国家受试者基线特征差异显著,使用WeightIt包基于**协变量平衡倾向得分(CBPS)**为观测值赋权,代码如下:

w.out <- weightit(country ~ baseline1 + baseline2, 
                  data = df, method = "cbps", verbose = TRUE)

df$ps_weights <- w.out$weights

协变量平衡验证

通过love plot和基线特征TableOne表验证,上述权重能够有效平衡各组间的协变量。

异常问题出现

错误创建survey对象

随后创建survey对象时使用了如下代码:

ipd <- svydesign(id =~country, data = df, weights = ~ps_weights)

后续分析异常

  • 生成加权TableOne表时,连续变量的P值显示为NA:
    tab1_weighted <- svyCreateTableOne(vars = myVars, data = ipd, factorVars = catVars, strata = "country")
    
  • 为获取组间差异的非参数P值,执行Kruskal-Wallis检验,结果出现极大卡方统计量(>1×10^28)和NaN的P值:
    svyranktest(test ~ country, design = ipd, test = "KruskalWallis")
    
    未加权数据的检验结果合理,但即使每组仅取10个观测子集测试,结果仍异常;已提前排除所有含NA的观测,尝试使用sjstat包时还出现自由度错误。

问题解决方法

问题根源在于survey对象的创建方式,将代码修改为如下形式后,卡方值恢复合理,P值可正常计算:

ipd <- svydesign(~1, data = df, weights = ~ps_weights)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 03:27:32