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

加权Mann-Whitney U检验的Bootstrap标准误与p值获取问询

加权Mann-Whitney U检验的Bootstrap标准误与p值实现方案

核心思路:用boot包自定义统计量

由于modelr等工具对非标准检验适配性有限,且目标包自带Bootstrap函数仅支持均值计算,推荐使用boot包实现自定义Bootstrap流程——它允许你针对加权Mann-Whitney U检验定义专属统计量,灵活生成Bootstrap样本并计算所需指标。

步骤1:定义Bootstrap统计量函数

编写一个函数,输入数据和抽样索引,返回加权Mann-Whitney U检验的关键统计量(比如U值或标准化Z值),保留原检验的加权逻辑:

# 加载所需包
library(boot)
library(你的加权Mann-Whitney检验包) # 替换为实际使用的包,如wrs2等

# 定义Bootstrap统计量函数
wmw_boot_stat <- function(data, indices) {
  # 根据抽样索引提取Bootstrap样本
  boot_sample <- data[indices, ]
  # 运行加权Mann-Whitney U检验
  result <- weighted_mannwhitney(c12hour ~ c161sex + weight, data = boot_sample)
  # 返回目标统计量:替换为实际结果对象中对应统计量的提取方式
  return(result$statistic) 
}

步骤2:执行Bootstrap抽样

调用boot()函数生成Bootstrap样本,抽样次数建议至少1000次(追求精度可设为5000次):

# 执行1000次Bootstrap抽样
boot_result <- boot(data = efc, statistic = wmw_boot_stat, R = 1000)

# 查看Bootstrap结果摘要
print(boot_result)

步骤3:计算标准误与p值

  • 标准误:直接从Bootstrap结果中提取统计量的标准差:
boot_se <- sd(boot_result$t)
cat("Bootstrap标准误:", boot_se, "\n")
  • p值:通过对比原检验统计量与Bootstrap分布计算,双侧检验示例如下:
# 获取原检验的统计量
original_test <- weighted_mannwhitney(c12hour ~ c161sex + weight, efc)
original_stat <- original_test$statistic

# 计算双侧p值:统计量绝对值大于等于原统计量绝对值的比例
p_value <- mean(abs(boot_result$t) >= abs(original_stat))
cat("Bootstrap双侧p值:", p_value, "\n")

注意事项

  • 如果权重是抽样权重(而非分析权重),需调整抽样方式为按权重有放回抽样,可在boot()函数中通过weights参数指定,或在自定义函数中实现加权抽样逻辑。
  • 抽样次数R越大结果越稳定,但计算时间会延长,按需平衡精度与效率。
  • 确保自定义函数中统计量的提取方式与你使用的检验包输出结构匹配,比如部分包的统计量可能存在于result$U或result$z中,需自行调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:01:29