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

Python中使用scipy.bootstrap计算Pearson相关系数置信区间遇尺寸错误

问题与解决方案

问题背景

需要基于sample_2数据集,使用scipy.stats.bootstrap()在98%置信水平下对Pearson相关系数做区间估计,要求设置随机种子为25,结果存入r_ci(包含置信区间上下界的列表)。直接调用sp.stats.pearsonr时出现x和y尺寸不匹配报错,但实际两个变量都是25行无缺失值。

错误原因

scipy.stats.pearsonr返回的是元组(相关系数,p值),而bootstrap()默认期望统计函数返回单个标量值。当bootstrap处理多返回值时,会引发维度匹配错误。

修正代码

import scipy.stats as sp
import pandas as pd
import numpy as np

# 原数据集生成代码(不可修改sample_2)
x = sp.stats.uniform.rvs(loc=-2, scale=10, size=25, random_state=34)
y = 2*x - 5 + sp.stats.norm.rvs(loc=0, scale=2, size=25, random_state=13)
sample_2 = pd.DataFrame(data=np.array([x, y]).T, columns=["X", "Y"])

# 自定义统计函数:仅返回Pearson相关系数
def pearson_r(x, y):
    return sp.stats.pearsonr(x, y)[0]

# 执行bootstrap估计
boot_strap = sp.stats.bootstrap(
    (sample_2['X'], sample_2['Y']),
    pearson_r,
    confidence_level=0.98,
    random_state=25
)

# 提取置信区间上下界存入r_ci
r_ci = [boot_strap.confidence_interval.low, boot_strap.confidence_interval.high]

print(r_ci)

关键说明

  • 自定义pearson_r函数,只返回pearsonr的第一个结果(相关系数),确保bootstrap处理的是标量统计量
  • 保持sample_2完全不变,符合任务要求
  • 按要求设置confidence_level=0.98和random_state=25
  • 通过confidence_interval.low和high更清晰地提取区间边界(也可以用索引[0]和[1],结果一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:23:16