常用統(tǒng)計(jì)檢驗(yàn)的Python實(shí)現(xiàn)和結(jié)果解釋
前言
今天給大家整理了一些使用python進(jìn)行常用統(tǒng)計(jì)檢驗(yàn)的命令與說(shuō)明,請(qǐng)注意,本文僅介紹如何使用python進(jìn)行不同的統(tǒng)計(jì)檢驗(yàn),對(duì)于文中涉及的假設(shè)檢驗(yàn)、統(tǒng)計(jì)量、p值、非參數(shù)檢驗(yàn)、iid等統(tǒng)計(jì)學(xué)相關(guān)的專(zhuān)業(yè)名詞以及檢驗(yàn)背后的統(tǒng)計(jì)學(xué)意義不做講解,因此讀者應(yīng)該具有一定統(tǒng)計(jì)學(xué)基礎(chǔ)。
正態(tài)性檢驗(yàn)
正態(tài)性檢驗(yàn)是檢驗(yàn)數(shù)據(jù)是否符合正態(tài)分布,也是很多統(tǒng)計(jì)建模的必要步驟,在Python中實(shí)現(xiàn)正態(tài)性檢驗(yàn)可以使用W檢驗(yàn)(SHAPIRO-WILK TEST)檢驗(yàn)原假設(shè):樣本服從正態(tài)分布
Python命令 stat, p = shapiro(data)?
結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(如0.05)時(shí),則認(rèn)為樣本不是來(lái)自正態(tài)分布的總體,否則承認(rèn)樣本來(lái)自正態(tài)分布的總體。
##########示例代碼
from scipy.stats import shapiro
data = [0.86, 0.78, 0.83, 0.84, 0.77, 0.84, 0.81, 0.84, 0.81, 0.81, 0.80, 0.81,
???????0.79, 0.74, 0.82, 0.78, 0.82, 0.78, 0.81, 0.80, 0.81, 0.74, 0.87, 0.78]
stat, p = shapiro(data)
print("stat為:%f"?%stat,"p值為:%f"?%p)
#stat為:0.966175 p值為:0.574134相關(guān)性檢驗(yàn):皮爾遜相關(guān)系數(shù)

皮爾遜相關(guān)系數(shù)(Pearson Correlation Coefficient)用于衡量?jī)蓚€(gè)變量之間的線性相關(guān)相關(guān)關(guān)系,相關(guān)系數(shù)的取值在-1與1之間,大于0為正相關(guān),小于0為負(fù)相關(guān)。
基本假定:
每個(gè)樣本中的觀察是獨(dú)立同分布的
每個(gè)樣本的觀察都是正態(tài)分布的
每個(gè)樣本的觀察具有相同的方差
所有變量都是連續(xù)型變量
檢驗(yàn)原假設(shè):兩個(gè)變量不相關(guān)
Python命令:corr,p = pearsonr(x,y)
結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(比如0.05)時(shí),則拒絕原假設(shè),認(rèn)為兩個(gè)變量是相關(guān)的。否則認(rèn)為是不相關(guān)的。
注意:這里的相關(guān)僅為統(tǒng)計(jì)學(xué)意義上的相關(guān)性,并不能理解為實(shí)際因果關(guān)系!!
#########示例代碼
from?scipy.stats import?pearsonr
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
corr,p = pearsonr(data1,data2)
print("corr為:%f"?%corr,"p值為:%f"?%p)
#corr為:-0.392250 p值為:0.207253相關(guān)性檢驗(yàn):斯皮爾曼相關(guān)系數(shù)

斯皮爾曼相關(guān)系數(shù)(SPEARMAN’S RANK CORRELATION)又稱為斯皮爾曼等級(jí)相關(guān)系數(shù)。是一種非參數(shù)方法,衡量?jī)蓚€(gè)變量的依賴性的非參數(shù)指標(biāo)。
基本假定:
每個(gè)樣本中的觀察是獨(dú)立同分布的
每個(gè)樣本的觀察具有相同的方差
所有變量可以是連續(xù)型變量或可排序的分類(lèi)變量
檢驗(yàn)原假設(shè):兩個(gè)變量不相關(guān)
Python命令:corr,p =spearmanr(x,y)
結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(比如0.05)時(shí),則則拒絕原假設(shè),認(rèn)為兩個(gè)變量是相關(guān)的。否則認(rèn)為是不相關(guān)的。
#######示例代碼
from?scipy.stats import?spearmanr
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
corr, p= spearmanr(data1, data2)
print("corr為:%f"?%corr,"p值為:%f"?%p)
#corr為:-0.435153 p值為:0.157414卡方檢驗(yàn)

卡方檢驗(yàn)是一種用途很廣的計(jì)數(shù)資料的假設(shè)檢驗(yàn)方法。它屬于非參數(shù)檢驗(yàn)的范疇,卡方檢驗(yàn)就是統(tǒng)計(jì)樣本的實(shí)際觀測(cè)值與理論推斷值之間的偏離程度,實(shí)際觀測(cè)值與理論推斷值之間的偏離程度就決定卡方值的大小,如果卡方值越大,二者偏差程度越大;反之,二者偏差越?。蝗魞蓚€(gè)值完全相等時(shí),卡方值就為0,表明理論值完全符合。
注意:
卡方檢驗(yàn)僅針對(duì)分類(lèi)變量
用于計(jì)算列聯(lián)表的觀察是獨(dú)立的。
列聯(lián)表的每個(gè)單元格中有25個(gè)或更多個(gè)實(shí)例。
檢驗(yàn)原假設(shè):觀察頻數(shù)與期望頻數(shù)無(wú)顯著差異
Python命令:chi2_contingency(data)
結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(比如0.05)時(shí),則拒絕原假設(shè),認(rèn)為兩個(gè)樣本有顯著差異。
########示例代碼
from?scipy.stats import?chi2_contingency
import?numpy as?np
kf_data = np.array([[20,21], [22,24]])
kf = chi2_contingency(kf_data)
print('chisq-statistic=%.4f, p-value=%.4f, df=%i expected_frep=%s'%kf)
chisq-statistic=0.0159, p-value=0.8997, df=1?expected_frep=[[19.79310345?21.20689655]
?[22.20689655?23.79310345]]T檢驗(yàn):?jiǎn)螛颖綯檢驗(yàn)
單樣本t檢驗(yàn)是樣本均值與總體均值的比較問(wèn)題。其中總體服從正態(tài)分布,從正態(tài)總體中抽樣得到n個(gè)個(gè)體組成抽樣樣本,計(jì)算抽樣樣本均值和標(biāo)準(zhǔn)差,判斷總體均值與抽樣樣本均值是否相同。基本假定:
樣本數(shù)據(jù)服從正態(tài)或近似正態(tài)分布
每個(gè)樣本中的觀察是獨(dú)立同分布的
T檢驗(yàn)屬于參數(shù)檢驗(yàn),用于檢驗(yàn)定量數(shù)據(jù),若數(shù)據(jù)均為定類(lèi)數(shù)據(jù)則應(yīng)使用卡方檢驗(yàn)
檢驗(yàn)原假設(shè):樣本均值無(wú)差異(μ=μ0)
Python命令.ttest_1samp(data,1)?
結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(比如0.05)時(shí),則認(rèn)為樣本均值存在顯著差異,具體的分析要看所選擇的是雙邊假設(shè)還是單邊假設(shè)(又分小于和大于)注意ttest_1samp進(jìn)行雙側(cè)檢驗(yàn)。
#示例代碼,檢驗(yàn)樣本均值與1是否有差異
from?scipy import?stats
data = [23,20,18,29,43,35,32,40,29,26,24,26]
stats.ttest_1samp(data,1)
#Ttest_1sampResult(statistic=-29.095366280269644, pvalue=1.2015599001111872e-19)T檢驗(yàn):兩樣本T檢驗(yàn)

兩樣本t檢驗(yàn)是比較兩個(gè)樣本所代表的兩個(gè)總體均值是否存在顯著差異。除了要求樣本來(lái)自正態(tài)分布,還要求兩個(gè)樣本的總體方差相等也就是“方差齊性”。
檢驗(yàn)原假設(shè):樣本均值無(wú)差異(μ=μ0)Python命令stats.ttest_ind(data1,data2)
當(dāng)不確定兩總體方差是否相等時(shí),應(yīng)先利用levene檢驗(yàn)檢驗(yàn)兩總體是否具有方差齊性stats.levene(data1,data2)如果返回結(jié)果的p值遠(yuǎn)大于0.05,那么我們認(rèn)為兩總體具有方差齊性。如果兩總體不具有方差齊性,需要加上參數(shù)equal_val并設(shè)定為False,如下。
stats.ttest_ind(data1,data2,equal_var=False)結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(比如0.05)時(shí),則認(rèn)為樣本均值存在顯著差異,具體的分析要看所選擇的是雙邊假設(shè)還是單邊假設(shè)(又分小于和大于)注意stats.ttest_ind進(jìn)行雙側(cè)檢驗(yàn)。
#示例代碼,檢驗(yàn)兩組樣本均值是否相等
from?scipy import?stats
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
stats.ttest_ind(data1,data2)
#Ttest_indResult(statistic=-3.1758496679296524, pvalue=0.004373771039397662)T檢驗(yàn):配對(duì)T檢驗(yàn)
配對(duì)樣本均數(shù)T檢驗(yàn)簡(jiǎn)稱配對(duì)T檢驗(yàn)(paired t test), 又稱非獨(dú)立兩樣本均數(shù)t檢驗(yàn),適用于配對(duì)設(shè)計(jì)計(jì)量資料均數(shù)的比較,其比較目的是檢驗(yàn)兩相關(guān)樣本均數(shù)所代表的未知總體均數(shù)是否有差別。與獨(dú)立樣本T檢驗(yàn)相比,配對(duì)樣本T檢驗(yàn)要求樣本是配對(duì)的。兩個(gè)樣本的樣本量要相同;樣本先后的順序是一一對(duì)應(yīng)的。基本假定:
每個(gè)樣本中的觀察是獨(dú)立同分布的
每個(gè)樣本的觀察都是正態(tài)分布的
每個(gè)樣本中的觀察具有相同的方差
每個(gè)樣本的觀察結(jié)果是成對(duì)的
Python命令stats.ttest_rel(data1,data2)
結(jié)果解釋:當(dāng)p值小于某個(gè)顯著性水平α(比如0.05)時(shí),則認(rèn)為樣本均值存在顯著差異,具體的分析要看所選擇的是雙邊假設(shè)還是單邊假設(shè)(又分小于和大于)注意stats.ttest_rel進(jìn)行雙側(cè)檢驗(yàn)。
####示例代碼,配對(duì)樣本T檢驗(yàn)
from?scipy import?stats
data1 = [23,20,18,29,43,35,32,40,29,26,24,26]
data2 = [1000,1000,500,500,500,100,100,100,100,100,100,100]
stats.ttest_rel(data1,data2)
#Ttest_relResult(statistic=-3.149034903041314, pvalue=0.009258094005021552)【推薦閱讀】
??制造業(yè)生產(chǎn)質(zhì)量業(yè)務(wù)大數(shù)據(jù)設(shè)計(jì)方案分享??供應(yīng)鏈流程體系建設(shè)的系統(tǒng)化創(chuàng)新應(yīng)用案例分享
??在線一鍵分析報(bào)告
??原來(lái)SPC應(yīng)用如此簡(jiǎn)單,有了它工作不再困難
??傳統(tǒng)IT應(yīng)用如何擁抱大數(shù)據(jù)?談python大數(shù)據(jù)的應(yīng)用落地方法
??基于BOM的總供應(yīng)周期分析
??用Python整合的大數(shù)據(jù)分析實(shí)例
認(rèn)真細(xì)致的作圖和碼字你不收藏、在看、轉(zhuǎn)發(fā)、關(guān)注?鼓勵(lì)一下我嗎?
記得點(diǎn)個(gè)在看支持下~?
