当前位置: 首页 > article >正文

使用 scipy 计算置信区间

问题

我有一个形状为 的数组(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 函数会计算平均值的区间,对吗?

解决方案

计算答案是使用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))  # 0.953

由于您知道数据来自哪些家族,因此您可以研究参数引导法。

def normal_ci(
    data: np.array,
    axis: int = 0,
    statistic: Callable = np.mean,
    confidence: float = 0.95
):
    # fit a normal distribution to the data
    mean = np.mean(data, axis=axis)
    std = np.std(data, ddof=1, axis=axis)

    # resample data from the fitted normal distribution
    n_resamples = 999
    m = data.shape[axis]  # assuming axis is an integer
    resample = rng.normal(loc=mean, scale=std, size=(m, n_resamples) + mean.shape)

    # compute the statistic for each of the resamples to estimate
    # the distribution
    statistic_distribution = statistic(resample, axis=0)

    # Generate the confidence interval
    # percentile bootstrap (very crude)
    alpha = 1 - confidence
    low, high = np.quantile(statistic_distribution, [alpha/2, 1-alpha/2], axis=0)
    return low, high

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

否则,您需要针对您感兴趣的每个统计数据和人口家族研究从您的人口中抽取的样本的统计分布。对于正态分布的样本,样本均值服从 t 分布,方差服从卡方分布等……而这不是 Stack Overflow 的问题。


http://www.kler.cn/a/392683.html

相关文章:

  • docker:docker: Get https://registry-1.docker.io/v2/: net/http: request canceled
  • python魔术方法的学习
  • AWS认证SAA-C0303每日一题
  • POI实现根据PPTX模板渲染PPT
  • 如何用WordPress和Shopify提升SEO表现?
  • scrapy爬取中信证券销售金融产品信息
  • 第N7周:调用Gensim库训练Word2Vec模型
  • 网络编程示例之开发板测试
  • java常用工具介绍
  • Prometheus面试内容整理-Metrics 类型
  • PHP接口安全的机制
  • 【代码管理之道】Git基础知识详解
  • 主成分分析(Principal Component Analysis, PCA) 数学原理 与 MATLAB代码复现
  • D67【python 接口自动化学习】- python基础之数据库
  • PostgreSQL 一键安装部署脚本化
  • html实体字符
  • 动态规划 —— dp 问题-买卖股票的最佳时机含冷冻期
  • Linux手动安装nginx
  • Vue全栈开发旅游网项目(11)-用户管理前端接口联调
  • 【iStat Menus for MacBook状态栏菜单系统监控工具--安装教程【简单操作,随时了解电脑情况】
  • IDEA一键部署SpringBoot项目到服务器
  • 516.最长回文子序列
  • 通过wsl配置Qt的中文开发环境
  • 《操作系统 - 清华大学》3 -2:地址空间和地址生成
  • Vue的路由
  • 数据分析-系统认识数据分析