scipy 的置信区间

问题描述 投票:0回答:1

我有一个形状为

(n, timesteps)
的数组,其中
n
是试验次数,
timesteps
是每次试验的长度。该数组的每个值表示一个随机测量。
我想实现一个通用函数,计算给定统计数据(平均值、中位数等)的置信区间,假设 1) 基础分布是正态的,2) 是学生的。

类似的东西

def normal_ci(
    data: np.array,
    axis: int = 0,
    statistic: Callable = np.mean,
    confidence: float = 0.95
):

和类似的功能

student_ci()

我的问题是,默认情况下,scipy 函数计算平均值的间隔,对吗?就像这个答案

scipy statistics confidence-interval scipy.stats
1个回答
0
投票

这是在 Stack Overflow 上,所以计算答案是使用 bootstrap

from typing import Callable
import numpy as np
from scipy import stats

rng = np.random.default_rng(84354894298246)
data = rng.standard_normal(size=(1000, 100))

def normal_ci(
    data: np.array,
    axis: int = 0,
    statistic: Callable = np.mean,
    confidence: float = 0.95
):
    res = stats.bootstrap((data,), statistic, axis=axis,
                          confidence_level=confidence)
    return tuple(res.confidence_interval)

low, high = normal_ci(data, axis=-1)
np.mean((low < 0) & (0 < high))

如果您想考虑到您知道从中采样数据的分布族这一事实,您可以查看参数引导程序。

© www.soinside.com 2019 - 2024. All rights reserved.