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

如何用scipy.stats.bootstrap实现多参数函数的标准误计算?

解决scipy.stats.bootstrap计算多参数函数标准误的IndexError问题
  • 错误原因:你遇到的IndexError是因为传入bootstrap的数据格式不正确,导致重采样后无法正确提取两个参数。如果直接将两个一维数组分开传入,或者合并成一维数组,bootstrap会破坏x和w的配对关系,或无法识别二维参数结构,进而在自定义函数中访问索引1时越界。

  • 正确做法:需要将x和w作为配对观测数据传入,保证每次重采样时,每个x值对应的权重w被同时选中。具体步骤如下:

  1. 导入依赖库:
import numpy as np
from scipy.stats import bootstrap
  1. 准备配对数据:将x和w组合成二维数组(每行对应一个x值及其权重)
x = [12, 14, 82, 55, 63, 56]
w = [0.61, 1.01, 1.8, 2.6, 0.93, 1.13]
# 组合成(n, 2)的二维数组,n为样本量
data = np.column_stack((x, w))
  1. 定义自定义统计量函数:从二维数组中分别提取x和w列,计算加权均值
def weighted_mean(data):
    x_vals = data[:, 0]  # 提取第一列(x值)
    w_vals = data[:, 1]  # 提取第二列(权重w)
    return np.average(x_vals, weights=w_vals)
  1. 调用bootstrap计算标准误:
# 传入配对数据,指定自定义函数和重采样次数
result = bootstrap((data,), weighted_mean, n_resamples=1000)
print(f"加权均值置信区间: {result.confidence_interval.low:.2f}~{result.confidence_interval.high:.2f}")
print(f"标准误: {result.standard_error:.2f}")
  • 另一种实现方式(用列表配对):如果不习惯用二维数组,也可以用zip将x和w打包成配对列表:
data = list(zip(x, w))

def weighted_mean(data):
    x_vals, w_vals = zip(*data)
    return np.average(x_vals, weights=w_vals)

result = bootstrap((data,), weighted_mean, n_resamples=1000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:23:25