NumPy 置信區間

Vaibhhav Khetarpal 2023年1月30日
  1. 置信區間
  2. 在 Python 中使用 T 分佈計算置信區間
  3. 在 Python 中使用正態分佈計算置信區間
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(alpha, length, loc, scale)
  1. alpha - 它定義了從選定範圍內獲得隨機變數的概率。
  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
print(
    st.t.interval(
        alpha=0.90, df=len(fb_data) - 1, loc=np.mean(fb_data), scale=st.sem(fb_data)
    )
)

上面的程式碼提供了以下輸出。

(10.395704943723088, 15.60429505627691)

在 Python 中使用正態分佈計算置信區間

相同的 SciPy.stats 庫還提供了一個 norm.interval() 函式,可用於通過使用正態分佈方法計算置信區間。

這種方法一般用於資料集比較大的情況;也就是說,元素的數量超過 30 (n>30)。

norm.interval() 函式的語法和引數描述如下所述。

scipy.stats.norm.interval(alpha, loc, scale)
  1. alpha - 它定義了從選定範圍內獲得隨機變數的概率。
  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(alpha=0.90, loc=np.mean(fb_data), scale=st.sem(fb_data)))

上面的程式碼提供了以下輸出。

(16.763325839308074, 17.286674160691923)
Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn