SciPy.stats 库interval() 函数计算置信区间

NumPy 置信区间-火焰兔

平均值的置信区间是数据分析领域广泛用于数据的统计数据的重要组成部分。Python 是数据分析领域的专业人员使用的最流行的编程语言之一,它允许在数组上实现置信区间。

本教程讨论置信区间并演示可用于在 Python 中实现它的不同方法。

置信区间

平均值的置信区间可以定义为一系列值,我们预计可以从中找出能够准确反映总体的值。

计算置信区间的公式如下所示。

Confidence Interval =  x̄  +/-  t*(s/√n)

下面解释这个公式的参数。

  1.  – 样本数据的平均值。
  2. t – 置信水平的相应 t 值。
  3. s – 样本数据的标准偏差。
  4. n – 样本数据的大小。

现在让我们继续讨论可用于在 Python 中计算置信区间的各种方法。可以使用两种主要方法,它们都需要来自 Python 中的 SciPy 库的函数。

Python 中的 SciPy 库是 Scientific Python 的缩写,用于提供几个有助于技术和科学计算的函数。该库的 SciPy.stats 子模块提供了多种处理 Python 统计数据的函数。

在 Python 中使用 T 分布计算置信区间

SciPy.stats 库提供了一个 t.interval() 函数,可用于使用 t 分布方法计算置信区间。

在处理较小的数据集时可以使用 t 分布方法,通常当数据的元素少于 30 个时(n<30)。

t.interval() 函数的语法和参数描述如下所述。

scipy.stats.t.interval(confidence_level, length, loc, scale)
  1. confidence_level – 它定义了从选定范围内获得随机变量的概率。
  2. length – 它描述了给定数据集的长度。
  3. loc – 它描述了位置参数值。
  4. scale – 它描述了比例参数值。

以下代码采用 20 名足球运动员在一个日历年内的进球数,并借助 t 分布方法计算给定数据的 90% 置信区间。

import numpy as np
import scipy.stats as st
# data of goals scored by 20 footballers in a calendar year
fb_data = [10, 11, 10, 14, 16, 24, 10, 6, 8, 10,
            11, 27, 28, 21, 13, 10, 6, 7, 8, 10]
# 置信水平create 90% confidence interval
confidence_level = 0.90  
# t.interval() 计算置信区间 (n<30)
print("置信区间为:",st.t.interval(confidence_level, df=len(fb_data)-1,
              loc=np.mean(fb_data),
              scale=st.sem(fb_data)))

# 标准误用来衡量抽样误差,是统计推断可靠性的指标。
# scipy.stats.sem(a, axis=0, ddof=1, nan_policy='propagate')
# axis:默认为 0。如果没有,则计算整个数组a
# ddof:Delta 自由度。

上面的代码提供了以下输出。

(10.395704943723088, 15.60429505627691)

在 Python 中使用正态分布计算置信区间

相同的 SciPy.stats 库还提供了一个 norm.interval() 函数,可用于通过使用正态分布方法计算置信区间。

这种方法一般用于数据集比较大的情况;也就是说,元素的数量超过 30 (n>30)。

norm.interval() 函数的语法和参数描述如下所述。

scipy.stats.norm.interval(confidence_level, loc, scale)
  1. confidence_level – 它定义了从选定范围内获得随机变量的概率。
  2. loc – 它描述了位置参数值。
  3. scale – 它描述了比例参数值。

以下代码以包含 80 个元素的数据集为例,并借助正态分布方法计算其 90% 置信区间。

import numpy as np
import scipy.stats as st
fb_data = np.random.randint(15, 20, 80)
# create 90% confidence interval
print(st.norm.interval(0.90,
                 loc=np.mean(fb_data),
                 scale=st.sem(fb_data)))
(16.763325839308074, 17.286674160691923)

上面的代码提供了以下输出。

from scipy.stats import norm

data = [1.2, 1.5, 1.6, 1.8, 2.0, 2.3, 2.6, 2.8, 2.9, 3.1] # 模拟数据
mean, std_dev = norm.fit(data) # 拟合数据
confidence_level = 0.95 # 置信水平为95%
# norm.interval() 函数,可用于通过使用正态分布方法计算置信区间。
# 用于数据集比较大的情况 (n>30)
lower, upper = norm.interval(confidence_level, loc=mean, scale=std_dev) 
print("置信区间为:", (lower, upper))

你可能感兴趣的:(python,数据分析,开发语言)