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

使用DescTools::MedianCI计算置信区间时组1结果异常求助

问题分析与解决方案

核心原因

组别1置信区间返回-Inf和Inf,本质是该组的DAP样本量过小(大概率样本数n=1)。DescTools::MedianCI计算中位数置信区间时,需要足够的样本分布信息来估算区间边界:

  • 当样本量为1时,中位数就是唯一的观测值,但没有额外数据支撑置信区间的计算,函数会返回极端值表示无法确定有效区间。
  • 若样本量极小(比如n<3),默认的精确计算方法也无法生成合理的区间边界,导致返回-Inf/Inf。

验证步骤

先确认各组样本量,执行以下代码:

barplot %>% 
  dplyr::group_by(Valve.size) %>% 
  dplyr::summarise(sample_size = n())

查看输出结果,组别1的sample_size大概率为1或极小值。

修复方案

1. 优化代码(避免重复计算)

你的代码每次调用MedianCI三次,既低效也没必要,可改为先计算一次再提取结果:

library(DescTools)
library(dplyr)

barplot2 <- barplot %>% 
  dplyr::group_by(Valve.size) %>% 
  dplyr::summarise(ci_output = list(MedianCI(DAP, na.rm = TRUE)),
                   valvemedian = ci_output[[1]][1],
                   lowerci = ci_output[[1]][2],
                   upperci = ci_output[[1]][3]) %>%
  dplyr::select(-ci_output)

2. 针对小样本的区间计算调整

如果组别1样本量确实极小,可尝试改用bootstrap方法估算置信区间(需指定method="boot"):

barplot2 <- barplot %>% 
  dplyr::group_by(Valve.size) %>% 
  dplyr::summarise(ci_output = list(MedianCI(DAP, na.rm = TRUE, method = "boot", R = 1000)),
                   valvemedian = ci_output[[1]][1],
                   lowerci = ci_output[[1]][2],
                   upperci = ci_output[[1]][3]) %>%
  dplyr::select(-ci_output)

注意:即使使用bootstrap,样本量过小的情况下置信区间结果依然缺乏统计可靠性,建议优先确认数据是否完整或补充样本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 23:53:05