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

scipy.stats.bootstrap()的bootstrap_distribution属性为何缺失?

解决scipy.stats.bootstrap()返回对象无bootstrap_distribution属性的问题

这个问题我之前也碰到过,根源主要在scipy版本差异和缺少必要参数两个方面,下面一步步帮你解决:

问题原因

  1. 参数未显式指定:scipy.stats.bootstrap() 默认不会返回 bootstrap 分布数据,需要显式设置 return_distribution=True 参数,才会在返回的 BootstrapResult 对象中包含 bootstrap_distribution 属性。
  2. 版本兼容性:在较旧的scipy版本(比如1.9.0之前)中,return_distribution 参数可能不存在,或者返回结构不同,导致无法获取该属性。

解决方案

方案1:添加return_distribution参数到bootstrap调用

直接修改你的代码,在调用bootstrap时加上return_distribution=True,这是最直接的解决方法:

from scipy.stats import bootstrap
import numpy as np
import matplotlib.pyplot as plt

# 假设portfolio是已加载的pandas DataFrame
data = (portfolio['X'],)
# 添加return_distribution=True参数
res = bootstrap(data, np.std, n_resamples=100, confidence_level=0.95, return_distribution=True)

# 现在可以正常访问bootstrap_distribution了
print(res.__dir__())
print(res.standard_error)
print(res.confidence_interval)

fig, ax = plt.subplots()
ax.hist(res.bootstrap_distribution, bins=25)
ax.set_title('Bootstrap Distribution')
ax.set_xlabel('statistic value')
ax.set_ylabel('frequency')
plt.show()

方案2:升级scipy到最新版本

如果你的scipy版本过旧(比如低于1.9.0),可以先升级到最新稳定版,确保参数和返回结构符合文档描述:

pip install --upgrade scipy

升级后再运行修改后的代码(同样需要加return_distribution=True,因为该参数默认仍为False)。

验证方法

运行以下代码查看当前scipy版本,确认是否需要升级:

import scipy
print(scipy.__version__)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 18:05:19