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

有放回重复抽样的相关系数存储问题求助

自助法相关系数数组存储问题修正

你的代码存在几处关键错误,导致无法累积存储所有相关系数,以下是问题说明和修正方案:

核心错误点

  • np.random.choice参数混乱:原代码参数写法错误,有放回抽样需明确指定抽样数量为原数据集行数,即size=dataset.shape[0]
  • 变量名拼写不一致:定义的sample_datasets和后续使用的sample_dataset名称不匹配,会导致逻辑错误或报错
  • 多余内层循环:无需遍历样本数据集的每个元素,每个自助样本集仅需计算一次相关系数
  • np.append用法错误:np.append需要传入原数组和待添加元素,直接写np.append(corr)会每次新建仅含当前值的数组,覆盖之前的结果

修正后的代码

import numpy as np

# 假设num_datasets是你设定的自助抽样次数,dataset为原始数据集
correlation = np.array([])
num_datasets = 1000  # 示例值,替换为你的实际抽样次数

for _ in range(num_datasets):
    # 正确执行有放回抽样:从数据集行索引中随机选择,数量与原数据集行数一致
    sample_dataset = dataset[np.random.choice(dataset.shape[0], size=dataset.shape[0], replace=True)]
    # 计算当前样本集的皮尔逊相关系数
    corr = np.corrcoef(sample_dataset[:, 0], sample_dataset[:, 1])[0, 1]
    # 将新的相关系数追加到数组中
    correlation = np.append(correlation, corr)

print(correlation.shape)  # 输出应为(num_datasets,),说明已存储所有相关系数

后续操作示例

绘制相关系数直方图

import matplotlib.pyplot as plt

plt.hist(correlation, bins=30, edgecolor='black')
plt.xlabel('相关系数')
plt.ylabel('频数')
plt.title('自助法相关系数分布直方图')
plt.show()

计算95%置信区间

confidence_interval = np.percentile(correlation, [2.5, 97.5])
print(f"95%置信区间:{confidence_interval}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 04:15:12