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!
推薦閱讀:
- Python+Pandas實現數據透視表
- python數據處理67個pandas函數總結看完就用
- Python groupby函數圖文詳解
- Pandas使用stack和pivot實現數據透視的方法
- 14個Python處理Excel的常用操作分享