python方差齊性檢驗 一文秒懂方差齊性檢驗

2021-10-11 14:51:22 字數 2581 閱讀 5388

案例:針對同一系列的教材,學校設計了兩種不同的自助學習系統,現採集每種教學系統下學生完成全部教程所需要的時間。(案例摘自《商務與經濟統計學》)

1、利用描述統計學方法彙總每種學習系統下學生學完教程的時間資料。根據樣本資料,你能觀察到有何相似之處和差異?

2、評價兩種方法總體均值之間的差異,討論你的結論?

3、計算每一種系統的標準差與方差,進行兩種系統總體方差相等的假設檢驗,討論你的結論。

4、關於兩種方法之間的差異,你能得到什麼結論?你有何建議?請作出解釋。

5、對於將來要使用那種系統,在作出最終決定之前你是否還需要其他資料或者檢驗。

本文主要圍繞解決第三個問題來講解方差齊性檢驗。

1、方差齊性檢驗描述

2、python實現方差齊性檢驗

方差齊性檢驗的檢驗統計量使用的是f分布,由於f分布對正態總體的假定是敏感的,只有當兩個總體至少近似正態分佈的假定是合理的,才能使用f分布。

本案例並未給出兩總體的分布,所以我們需要先檢驗兩總體是否服從正態分佈。

2.1 檢驗兩總體服從正態分佈

data = pd.read_csv(r'/training.csv')

data.columns=['舊系統完成時間','新系統完成時間']資料標準化:這裡使用sklearn中的standardscaler來進行標準化

# 資料標準化

from sklearn.preprocessing import standardscaler

data_new = data.copy()

scaler = standardscaler()

scaler.fit(data_new)

data_ = scaler.transform(data_new)

data_new = pd.dataframe(data_, columns=['舊系統完成時間', '新系統完成時間']2對樣本資料進行分箱,並計算期望頻數和觀測頻數

由於正態分佈是連續的,我們需要對時間值進行分箱來定義類別,在使用卡方檢驗的時候我們要求每乙個類別的期望頻數至少為5.所以在定義時間值的類別時,也必須使每一類的期望頻數至少為5.

# 樣本資料分箱

result1, binedge1 = pd.qcut(data_new['舊系統完成時間'], 8, retbins=true)

result2, binedge2 = pd.qcut(data_new['新系統完成時間'], 5, retbins=true)

def get_expect_frequency(binedge, mean, std):

函式功能:計算期望頻數

binedge:樣本分箱使用的的節點序列

mean:樣本均值

std:樣本方差

返回值:返回期望頻數序列

p_array =

bin_size = len(binedge)

for i in range(bin_size-1):

# 正態分佈的累計分布函式計算概率值

binedge[i+1], mean, std)-stats.norm.cdf(binedge[i], mean, std))*61)

print('%s,%s' % (len(p_array), bin_size))

return p_array

old_system_data = result1.value_counts().sort_index()

new_system_data = result2.value_counts().sort_index()

#獲採樣本均值和樣本標準差

means=data_new.mean()

stds=data_new.std()

#返回期望頻數

p1 = get_expect_frequency(binedge1,means[0],stds[0])

p2 = get_expect_frequency(binedge2,means[1],stds[1])使用卡方分布構造檢驗統計量並計算p值

stats.chisquare(old_system_data.values,p1)

power_divergenceresult(statistic=7.890003188867656, pvalue=0.34239325885492095)

stats.chisquare(new_system_data.values,p2)

power_divergenceresult(statistic=4.416939724429952, pvalue=0.3525102013466619)

比較p值和顯著性水平

綜合以上,兩總體均服從正態分佈,下面開始方差齊性檢驗:

2.2 方差齊性檢驗確立原假設和備擇假設:

# 計算f統計量的值

f = data.loc[:, '舊系統完成時間'].var()/data.loc[:, '新系統完成時間'].var()

# 計算p值:使用cdf函式,傳入引數,f統計量的值,分子自由度,分母自由度

pvalue = 1-stats.f.cdf(f, 60, 60)

pvalue=0.00028901576919825955p值和顯著性水平0.05比較,p值小於顯著性水平,所以拒絕原假設。最終結論認為兩總體方差不等。

bartlett檢驗 方差齊性檢驗

我們在方差分析裡面有講過,方差分析有乙個很重要的前提就是叫方差齊性。這一篇來講講如何來檢驗方差齊性。先講講什麼是方差齊性,方差齊性是指不同組間的總體方差是一樣的。那為什麼方差分析的前提是要組間的總體方差保持一致呢?先想想方差分析是做什麼呢?方差分析是用來比較多組之間均值是否存在顯著差異。那如果方差不...

python方差齊性檢驗 講講如何來檢驗方差齊性

1.前言 我們在方差分析裡面有講過,方差分析有乙個很重要的前提就是叫方差齊性。這一篇來講講如何來檢驗方差齊性。先講講什麼是方差齊性,方差齊性是指不同組間的總體方差是一樣的。那為什麼方差分析的前提是要組間的總體方差保持一致呢?先想想方差分析是做什麼呢?方差分析是用來比較多組之間均值是否存在顯著差異。那...

基於python的異方差檢驗 講講異方差的檢驗

我們前面講了異方差,也講了怎麼用圖示法來判斷是否有異方差,這一篇來講講怎麼用統計的方法來判斷有沒有異方差。關於檢驗異方差的統計方法有很多,我們這一節只講比較普遍且比較常用的white test 懷特檢驗 假設現在我們做了如下的回歸方程 如果要用懷特檢驗檢驗上述方程有沒有異方差,主要分以下幾個步驟 1...