假設檢定(Hypothesis Testing)是一種統計方法,用來檢驗對一個或多個總體參數的主張是否成立。本文主要介紹如何使用計算套件scipy進行K-S統計量與累計分佈函數(CDF),細節說明參照如下。

1.         python畫K-S統計量和CDF

K-S統計量(Kolmogorov-Smirnov 統計量)和CDF(累積分布函數)是統計學中兩個重要的概念。K-S 統計量是一種非參數檢定方法,主要用來比較兩個樣本資料是否來自同一分佈,或者一個樣本資料是否來自於某個理論分佈。需要注意的是,它不僅僅只能用於常態分佈,而是可以用於任何連續的理論分佈。CDF,即累積分佈函數,是表示一個隨機變數在某個特定值或更小的值出現的概率。CDF 可以用來描述數據的概率分佈情況。

例子:假設我們在教育局工作,剛收到一個新的大學入學考試的分數資料,相關的數學考試分數範圍是0到100分。你的任務是要判斷這次考試的分數分佈是否與過去數年的考試性質類似(也就是說,是否符合某種已知的分佈,比如常態分佈)。

# 導入需要的Python庫。

import numpy as np

import matplotlib.pyplot as plt

from scipy.stats import kstest, norm

# 假設過去數年的大學入學考試的數學分數大致符合正態分布,平均分為70分,標準差為15分。

mu, sigma = 70, 15

# 我們隨機產生200個新的考試分數樣本。

sample = np.random.normal(mu, sigma, 200)

# 保證分數在0到100之間。

sample = np.clip(sample, 0, 100) 

# 使用scipy的kstest()對這些分數進行K-S檢驗。

ks_statistic, p_value = kstest(sample, ‘norm’, args=(mu, sigma))

# 繪製分數的累積分布函數(CDF)和理想的常態分布累積分布函數。

plt.figure(figsize=(12, 7))

plt.hist(sample, bins=20, density=True, alpha=0.5, cumulative=True, label=’real_score_CDF’)

plt.plot(np.sort(sample), np.linspace(0, 1, len(sample), endpoint=False), label=’ideal_score_CDF’)

# 標註K-S統計量。

plt.title(f’K-S_statistic = {ks_statistic:.5f} P_value = {p_value:.5f}’)

plt.legend(loc=’upper left’)

plt.show()

#執行後得到下圖CDF(累積分布函數)的圖表。

從上圖可以看出,實際分數的CDF與理想分數的CDF相比,基本上都達到很好的一致性,因此可以推斷新的考試分數資料很可能符合我們預期的常態分佈。同時,我們的K-S檢定的P值超過0.05,這也印證了我們的推斷。

以上便是Python Scipy的K-S統計量與累計分佈函數(CDF),若您覺得有幫助的話,再請幫我們留個好評,謝謝您的觀看,我們下次見。