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

如何用Python对双数据序列函数计算值进行Bootstrap?修正错误代码

Bootstrap置信区间代码的问题及修复

存在的问题

  1. 计算逻辑偏离:ChatGPT提供的calculate_ratio函数篡改了你原本的分母计算逻辑。你最初的分母是data1的平方均值减去均值的平方(即np.mean(data1**2) - (np.mean(data1))**2),但ChatGPT错误地替换为mean_squared_data1 - squared_mean_data2,误用了data2的均值平方,完全偏离你的原始计算逻辑。
  2. 抽样方式错误:原始数据中data1和data2是配对观测(对应位置元素为一组样本),但ChatGPT的代码对两组数据独立抽样,破坏了数据的配对关系,导致Bootstrap结果失去统计意义。

修复后的代码

import numpy as np

# 还原原始的ratio计算逻辑
def calculate_ratio(data1, data2):
    mean_product = np.mean(data1 * data2)
    mean_data1 = np.mean(data1)
    mean_data2 = np.mean(data2)
    mean_product_of_means = mean_data1 * mean_data2
    numerator = mean_product - mean_product_of_means
    
    mean_squared_data1 = np.mean(data1 ** 2)
    squared_mean_data1 = mean_data1 ** 2
    denominator = mean_squared_data1 - squared_mean_data1
    
    # 增加除零保护,避免运行报错
    if denominator == 0:
        return np.nan
    ratio = numerator / denominator
    return ratio

# 修改为成对Bootstrap抽样,保留数据配对关系
def bootstrap_ratio(data1, data2, func, num_iterations):
    results = []
    n = len(data1)
    # 先检查两组数据长度是否一致
    if len(data2) != n:
        raise ValueError("data1和data2长度必须一致")
    
    for _ in range(num_iterations):
        # 使用同一组索引抽取配对样本
        indices = np.random.choice(n, n, replace=True)
        data1_bootstrap = data1[indices]
        data2_bootstrap = data2[indices]
        result = func(data1_bootstrap, data2_bootstrap)
        # 跳过无效的nan结果
        if not np.isnan(result):
            results.append(result)
    return results

# 测试数据
data1 = np.array([1, 2, 3, 4, 5])
data2 = np.array([5, 4, 3, 2, 1])

num_iterations = 1000
bootstrap_results = bootstrap_ratio(data1, data2, calculate_ratio, num_iterations)

# 计算95%置信区间
confidence_interval = np.percentile(bootstrap_results, [2.5, 97.5])
print("95%置信区间:", confidence_interval)

修复说明

  • 还原了calculate_ratio的原始计算逻辑,确保分母符合你的初始设计。
  • 将Bootstrap抽样改为成对抽样:用同一组随机索引同时抽取两组数据的元素,保留原始样本的配对关系,保证统计推断的合理性。
  • 增加了数据长度检查和除零保护,避免运行时出现异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 04:52:41