python驗證多組數據之間有無顯著差異

一、方差分析

1.單因素方差分析

通過箱線圖可以人肉看出10組的訂單量看起來差不多,為瞭更科學比較10組的訂單量有無顯著差異,我們可以利用方差分析

from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
model = ols('orders~C(label)',data=need_data).fit()
anova_table = anova_lm(model, typ = 2)
print(anova_table)

結果顯示,p值為0.62大於0.05,不能拒絕原假設,所以這10組的訂單量分佈沒有顯著差異。

二、卡方檢驗

如果是比較多組之間的非連續值指標是否存在差異呢?

如檢查上面10組的男女比例是否存在顯著差異

計算各組觀察頻數:

data2=data1.melt(id_vars=['性別'],value_name='觀察頻數')
data2.head()

計算總體的男女比例:

rate=(data2.groupby(['性別'])['觀察頻數'].sum()/data2.groupby(['性別'])['觀察頻數'].sum().sum()).reset_index()
rate.columns=['性別','rate']
rate

計算各組用戶總數:

group_sum=data2.groupby(['組別'])['觀察頻數'].sum().reset_index()
group_sum.columns=['組別','組內用戶數']
group_sum

計算卡方值:

import math
data3=pd.merge(data2,group_sum,on=['組別'],how='left')
data3=pd.merge(data3,rate,on=['性別'],how='left')
data3['期望頻數']=data3['組內用戶數']*data3['rate']
data3['卡方值']=data3.apply(lambda x: math.pow((x.期望頻數-x.觀察頻數),2)/x.期望頻數,axis=1)
data3.head()

本案例的自由度為(10-1)*(2-1)=9,選取顯著性水平為0.05,查卡方分佈表得臨界值為18.31
因為7.01<18.31,所以不能拒絕原假設,即各組的性別分佈不存在顯著性差異。

到此這篇關於python驗證多組數據之間有無顯著差異的文章就介紹到這瞭,更多相關python驗證多組數據之間有無顯著差異內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: