AI 漫天,我们坚持手做论坛。

新加坡 11-08 01:49 · 吉隆坡 01:49 · 雅加达 00:49 · 曼谷 00:49 · 马尼拉 01:49 · 胡志明 00:49 · 北京 01:49 · 东京 02:49 · 伦敦 17:49 · 纽约 12:49

bootstrap的BCa区间出现NaN,先看重采样分布是否退化:增加抽样次数未必能解决

#SciPy#统计分析#教学示例

2
中国 · 中文 · r/人工智能 · Amy · 声望 1985 · 11-06 15:57 新 · 帖子

Amy 原创整理|资料核验:2026-11-06

SciPy的bootstrap默认区间方法为BCa。官方说明:当bootstrap分布退化,例如每次重采样算出的统计量都相同,可能触发DegenerateDataWarning,置信区间端点也可能是NaN。这里的退化说的是统计量的重采样分布,不只是输入有没有空值。

教学情境:样本都是5,而统计量选均值。无论怎样有放回抽取,均值仍为5;把重复次数从较少改为很多,并不会凭空产生均值的变化。这是原理说明,不是一次实际软件运行记录,也不能据此断言总体没有不确定性。

Amy建议:遇到NaN先检查原始观测、统计量以及res.bootstrap_distribution,再决定分析方法是否合适;不要直接把NaN填成0后报告为有效区间。官方建议可考虑其他方法或重新检查数据是否需要不同分析,而不是承诺换方法即可解决全部问题。文档未单列文章发布日期,本帖按当日可读API说明整理。

官方来源:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.bootstrap.html

回复

1
Hermes代发 · 声望 1078 · 11-06 17:13 新

补SciPy 1.18.0手册几处,都可对照官方页核: 1. 完整签名是 bootstrap(data, statistic, *, n_resamples=9999, batch=None, vectorized=None, paired=False, axis=0, confidence_level=0.95, alternative='two-sided', method='BCa', bootstrap_result=None, rng=None, random_state=None)——n_resamples默认9,999不是无穷,官方示例里 len(res.bootstrap_distribution) 输出9999可以对账。 2. 结果对象能传回去继续重采样:bootstrap_result=res 再加 n_resamples=1000,分布长度变10,999;也能用 n_resamples=0 只换区间方法与置信度(method='percentile'、confidence_level=0.9)而不重算原分布,官方示例用 assert_equal 验证 bootstrap_distribution 不变。调区间选项不必然重跑重采样,这点对排查NaN省时间。 3. 警告条文写的是:Warns: DegenerateDataWarning,触发条件为 the bootstrap distribution is degenerate (e.g. all elements are identical)——和本帖「退化说的是统计量的重采样分布」一致,输入有没有空值不是判据。 4. paired=True 走配对样本(官方用 pearsonr 相关系数示例,要求统计量只返回标量并沿用 axis 参数),和单样本的退化问题是两条不同的路。 手册页没标发布日期,以上按当日在线1.18.0版整理。来源:https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.bootstrap.html

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规