<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > 獨家 | 如何比較兩個(gè)或多個(gè)分布形態(tài)(附鏈接)

獨家 | 如何比較兩個(gè)或多個(gè)分布形態(tài)(附鏈接)

發(fā)布人:數據派THU 時(shí)間:2022-08-20 來(lái)源:工程師 發(fā)布文章
作者:Matteo Courthoud

翻譯:陳超

校對:趙茹萱

從可視化到統計檢驗全方位分布形態(tài)比較指南:



圖片

圖片來(lái)自作者


比較同一變量在不同組別之間的經(jīng)驗分布是數據科學(xué)當中的常見(jiàn)問(wèn)題,尤其在因果推斷中,我們經(jīng)常在需要評估隨機化質(zhì)量時(shí)遇到上述問(wèn)題。
我們想評估某一政策的效果(或者用戶(hù)體驗功能,廣告宣傳,****物,……),因果推斷當中的金標準就是隨機對照試驗,也叫作A/B測試。在實(shí)際情況下,我們會(huì )選擇一個(gè)樣本進(jìn)行研究,隨機分為對照組和實(shí)驗組,并且比較兩組之間結果差異。隨機化能夠確保兩組間唯一的差異是是否接受治療,平均而言,以便于我們可以將結果差異歸因于治療效應。
問(wèn)題是,盡管進(jìn)行了隨機化,兩組也不會(huì )完全相同。有時(shí),他們甚至不是“相似的”。例如,我們可能會(huì )在一組中有更多男性或年齡更大的人,等等(我們通常把這些叫做特質(zhì)協(xié)變量或控制變量)。這種情況發(fā)生時(shí),我們再也無(wú)法確定結果的差異僅僅是由治療的效果導致,也不能將其完全歸因于不平衡的協(xié)變量。因此,隨機化之后非常重要的一步就是檢查是否所有觀(guān)測變量都是組間平衡的,是否不存在系統性差異。另外一個(gè)選擇是分層抽樣,額可以事先確保特定協(xié)變量是平衡的。
在本文中,我們將通過(guò)不同方式比較兩組(或多組)分布并評估他們之間差異的量級和顯著(zhù)性水平??梢暬徒y計角度這兩種方法通常是嚴謹性和直覺(jué)的權衡:從圖上,我們可以迅速評估和探究差異,但是很難區分這些差異是否是系統性的還是僅僅由于噪聲導致。
例子
假設我們需要將一組人隨機分到處理組和對照組。我們需要讓兩組盡可能地相似,以便于將組間差異歸因于治療效應。我們也需要將處理組分成幾個(gè)亞組來(lái)測試不同治療的影響(例如,同一種****物的細微變化)。
對于這個(gè)例子來(lái)說(shuō),我們已經(jīng)模擬了1000個(gè)被試數據集,我從src.dgp導入了數據生成過(guò)程dgp_rnd_assignment(),并從src.utils導入了一些繪圖函數和庫,從而觀(guān)測到一系列特征。






from src.utils import *from src.dgp import dgp_rnd_assignment
df = dgp_rnd_assignment().generate_data()df.head()

圖片

數據快照,圖片來(lái)自作者


我們有1000個(gè)被試的信息,從中可以觀(guān)測到性別、年齡和周收入。每個(gè)被試被分配到處理組或對照組,被分到處理組的被試又被分到四種不同的治療亞組當中去。
兩組-圖
讓我們從最簡(jiǎn)單的情況開(kāi)始:比較處理組和對照組的收入分布。首先用可視化方法來(lái)進(jìn)行探究,然后再使用統計方法??梢暬椒ǖ膬?yōu)勢在于直觀(guān),而統計方法方法的優(yōu)勢則在于嚴謹。
對大多數可視化來(lái)說(shuō),我會(huì )使用python當中的searborn庫。


箱線(xiàn)圖
第一種可視化方法是箱線(xiàn)圖。箱線(xiàn)圖是統計概要和數據可視化之間的很好的兌易。箱體的中心表征中位數,上下邊界則表征第1和第3百分位數。須體延長(cháng)到超過(guò)箱體四分位數(Q3-Q1)1.5倍的第一個(gè)數據點(diǎn)。落在須體之外的點(diǎn)則分別繪制,且通常被視作異常值。
因此,箱線(xiàn)圖提供了統計概要(箱體和須體)以及直觀(guān)的數據可視化(異常值)。


sns.boxplot(data=df, x='Group', y='Income');plt.title("Boxplot");

圖片

處理組合對照組的收入分布,圖片來(lái)自作者


看起來(lái)處理組的收入分布更加分散:橘色箱體更大,須體覆蓋范圍更廣。然而,箱線(xiàn)圖的問(wèn)題在于它隱藏了數據的形態(tài),僅僅告訴我們統計概要而未向我們展示真實(shí)的數據分布情況。
直方圖
直方圖是展示分布最直觀(guān)的方式,它將數據分成同等寬度的組,將每組觀(guān)測值數量畫(huà)出來(lái)。


sns.histplot(data=df, x='Income', hue='Group', bins=50);plt.title("Histogram");

圖片

處理組和對照組的收入分布情況,圖片來(lái)自作者


該圖也存在很多問(wèn)題:
因為兩組觀(guān)測值數量不同,兩個(gè)直方圖不具備可比性。
分組的數量是武斷的。
我們可以通過(guò)stat選項來(lái)解決第一個(gè)方法,繪制density而非計數,將common_norm選項設置為False來(lái)分別對每個(gè)直方圖進(jìn)行歸一化。


sns.histplot(data=df, x='Income', hue='Group', bins=50, stat='density', common_norm=False);plt.title("Density Histogram");

圖片

處理組和對照組的分布,圖片來(lái)自作者
現在兩組直方圖就可比較了!
然而,一個(gè)重要的問(wèn)題仍然存在:分組的大小是武斷的。在極端情況下,如果我們把更少的數據捆綁在一起,最后會(huì )得到每組至多一條觀(guān)測數據,如果我們把更多的數據捆綁在一起,我們最終可能會(huì )得到一個(gè)組。在兩種情況下,如果我們夸大,圖就會(huì )損失信息量。這就是經(jīng)典的偏差-變異兌易。
核密度圖
一種可能的解決方法是使用核密度函數,使用核密度估計(KDE)用連續函數近似直方圖。


sns.kdeplot(x='Income', data=df, hue='Group', common_norm=False);plt.title("Kernel Density Function");


圖片

處理組和對照組收入分布,圖片來(lái)自作者
從圖上可以看出,似乎處理組的收入的估計核密度有“更胖的尾巴”(更高的方差),但組間均值更為相似。
核密度估計的問(wèn)題自安于它是一個(gè)黑箱,可能會(huì )掩蓋數據的相關(guān)特征。
累積分布圖
一種更為透明的表征兩個(gè)分布的方法是累積分布函數。在x軸的每個(gè)點(diǎn)(收入)我們繪制出數值相等或更低的數據點(diǎn)的百分比。累積分布函數的優(yōu)勢在于:

  • 我們不需要做出任何武斷的決策(例如,分組數量)
  • 我們不需要做任何近似(例如:KDE),但是我們可以表征所有的數據點(diǎn)



sns.histplot(x='Income', data=df, hue='Group', bins=len(df), stat="density",element="step", fill=False, cumulative=True, common_norm=False);plt.title("Cumulative distribution function");


圖片

處理組和對照組的累積分布圖,圖片來(lái)自作者


我們應該如何解釋這幅圖?

  • 兩條線(xiàn)在0.5(y軸)附近交叉,意味著(zhù)他們的中位數相似
  • 在左側橘色線(xiàn)在藍色線(xiàn)上,而右側則相反,意味著(zhù)處理組分布的尾部更胖(極端值更多)


Q-Q圖
一個(gè)相關(guān)的方法是Q-Q圖,其中Q代表分位數。Q-Q圖將兩個(gè)分布的分位數相互繪制出來(lái)。如果分布相同,就會(huì )得到45度的直線(xiàn)。
Python中沒(méi)有本地的Q-Q圖函數,雖然statmodels包提供了一個(gè)qqplot函數,但它相當麻煩。因此,我們需要手動(dòng)完成。
首先,我們需要使用percentile函數計算兩組的四分位數。







income = df['Income'].valuesincome_t = df.loc[df.Group=='treatment', 'Income'].valuesincome_c = df.loc[df.Group=='control', 'Income'].valuesdf_pct = pd.DataFrame()df_pct['q_treatment'] = np.percentile(income_t, range(100))df_pct['q_control'] = np.percentile(income_c, range(100))


現在,我們可以將兩個(gè)分位數分布相互對照,加上45度線(xiàn),表示基準的完美擬合。







plt.figure(figsize=(8, 8))plt.scatter(x='q_control', y='q_treatment', data=df_pct, label='Actual fit');sns.lineplot(x='q_control', y='q_control', data=df_pct, color='r', label='Line of perfect fit');plt.xlabel('Quantile of income, control group')plt.ylabel('Quantile of income, treatment group')plt.legend()plt.title("QQ plot");


圖片

Q-Q 圖, 圖片來(lái)自作者
Q-Q圖提供了與累積分布圖非常相似的見(jiàn)解:處理組的收入有相同的中位數(在中心交叉的線(xiàn)),但更寬的尾部(點(diǎn)在左邊的線(xiàn)以下,右邊的線(xiàn)以上)。
兩組——檢驗
到目前為止,我們已經(jīng)看到了可視化分布之間差異的不同方法??梢暬闹饕獌?yōu)點(diǎn)是直觀(guān):我們可以通過(guò)肉眼觀(guān)察差異并直觀(guān)地評估它們。
然而,我們可能想要更嚴格地評估分布之間的差異的統計意義,即回答這個(gè)問(wèn)題“觀(guān)察到的差異是系統的還是由于采樣噪聲?”
我們現在將分析不同的測試來(lái)辨別兩個(gè)分布。


T檢驗
第一個(gè)也是最常見(jiàn)的檢驗是學(xué)生t檢驗。t檢驗通常用于比較平均值。在這種情況下,我們希望測試兩組的收入分配均值是否相同。兩均值比較檢驗的檢驗統計量為:

圖片

T檢驗統計,圖片來(lái)自作者
式中為樣本均值,s為樣本標準差。在較溫和的條件下,檢驗統計量是漸近分布的Student t分布。
我們使用scipy中的ttest_ind函數來(lái)執行t檢驗。該函數返回測試統計數據和隱含的p值。




from scipy.stats import ttest_indstat, p_value = ttest_ind(income_c, income_t)print(f"t-test: statistic={stat:.4f}, p-value={p_value:.4f}")t-test: statistic=-1.5549, p-value=0.1203

檢驗的p值為0.12,因此我們不拒絕處理組和對照組平均值無(wú)差異的零假設。
注:t檢驗假設兩個(gè)樣本的方差相同,因此其估計是在聯(lián)合樣本上計算的。 Welch’s t檢驗允許兩個(gè)樣本的方差不相等。
標準化均值差異(SMD)
一般來(lái)說(shuō),當我們進(jìn)行隨機對照試驗或a /B測試時(shí),總是對整個(gè)處理組和對照組的所有變量進(jìn)行平均值差異測試是一個(gè)好做法。
然而,由于t檢驗統計量的分母取決于樣本量,t檢驗因使p值難以跨研究進(jìn)行比較而受到批評。事實(shí)上,我們可能在一個(gè)差異幅度很小但樣本量很大的實(shí)驗中獲得顯著(zhù)的結果,而在一個(gè)差異幅度很大但樣本量很小的實(shí)驗中,我們可能獲得不顯著(zhù)的結果。
已經(jīng)提出的一種解決方案是標準化的均值差異(SMD)。顧名思義,這并不是一個(gè)合適的檢驗統計量,而只是一個(gè)標準化的差異,公式如下:
圖片標準化均值差異,圖片來(lái)自作者
通常來(lái)說(shuō),0.1以下的值可被認為是“小差異”。
最好的做法是收集處理組和對照組所有變量的平均值,以及兩者之間的距離——要么t檢驗,要么SMD——到一個(gè)被稱(chēng)為平衡表的表格中??梢允褂胏ausalml庫中的create_table_one函數來(lái)生成它。正如該函數的名稱(chēng)所暗示的那樣,在執行A/B測試時(shí),平衡表應該是您呈現的第一個(gè)表。



from causalml.match import create_table_onedf['treatment'] = df['Group']=='treatment'create_table_one(df, 'treatment', ['Gender', 'Age', 'Income'])

圖片平衡表,圖片來(lái)自作者

在前兩列中,我們可以看到處理組和對照組不同變量的平均值,括號中是標準誤差。在最后一列,SMD的值表明所有變量的標準化差異大于0.1,表明兩組可能是不同的。


Mann–Whitney U 檢驗
另一種可選的檢驗是Mann–Whitney U 檢驗。零假設是兩組有相同的粉不,而備擇假設是一組的值比另一組更大(或更?。?。
不同于我們之前看過(guò)的檢驗,Mann–Whitney U 檢驗不關(guān)注異常值,而把注意力放在分布的中心上。
檢驗流程如下。
1.將所有數據點(diǎn)合并排序(升序或降序)2.計算U? = R? ? n?(n? + 1)/2, R?是第一組的秩和,n?是第一組數據的數量。3.用相似的方法計算第二組的U?4.統計檢驗量是stat = min(U?, U?)
在兩個(gè)分布之間沒(méi)有系統秩差(即中位數相同)的零假設下,檢驗統計量在均值和方差已知的情況下,是漸近正態(tài)分布的。
計算R和U的直觀(guān)方法是:如果第一個(gè)樣品的值都大于第二個(gè)樣品的值,那么R?= n?(n?+ 1)/2,因此,U?將為零(可得到的最小值)。否則,如果兩個(gè)樣本相似,U?和U?就會(huì )非常接近n?n?/ 2(可得到的最大值)。
我們使用來(lái)自scipy的mannwhitneyu函數執行測試。




from scipy.stats import mannwhitneyustat, p_value = mannwhitneyu(income_t, income_c)print(f" Mann–Whitney U Test: statistic={stat:.4f}, p-value={p_value:.4f}")Mann–Whitney U Test: statistic=106371.5000, p-value=0.6012

我們得到的p值為0.6,這意味著(zhù)我們不拒絕零假設,即處理組和對照組的收入分配相同。
注:對于t檢驗,存在兩樣本方差不相等的Mann-Whitney U檢驗,即Brunner-Munzel檢驗。
置換檢驗
一種非參數選擇是置換檢驗。其想法是,在零假設下,兩種分布應該是相同的,因此混排group標簽不應該顯著(zhù)改變任何統計量。
我們可以選擇任何統計數據,并檢查它在原始樣本中的值與它在group標簽排列中的分布如何比較。例如,讓我們使用處理組和對照組之間的樣本均值差異作為檢驗統計量。






sample_stat = np.mean(income_t) - np.mean(income_c)stats = np.zeros(1000)for k in range(1000):    labels = np.random.permutation((df['Group'] == 'treatment').values)    stats[k] = np.mean(income[labels]) - np.mean(income[labels==False])p_value = np.mean(stats > sample_stat)print(f"Permutation test: p-value={p_value:.4f}")Permutation test: p-value=0.0530

置換檢驗給出了0.053的p值,這意味著(zhù)在5%的水平上,零假設的弱非拒絕性。
我們如何解釋p值?這意味著(zhù)數據中的均值差大于1-0.0560 =94.4%的排列后樣本均值差。
我們可以通過(guò)繪制測試統計值與樣本值之間跨排列的分布來(lái)可視化測試。



plt.hist(stats, label='Permutation Statistics', bins=30);plt.axvline(x=sample_stat, c='r', ls='--', label='Sample Statistic');plt.legend();plt.xlabel('Income difference between treatment and control group')plt.title('Permutation Test');

圖片

置換間的均值差異分布,圖片來(lái)自作者
正如我們所看到的,相對于排列后的樣本值,樣本統計值是相當極端的,但也合理。
卡方檢驗
卡方檢驗是一個(gè)效力很強的檢驗,常用于檢驗頻率差異。
卡方檢驗最不為人知的應用之一是檢驗兩個(gè)分布之間的相似性。把兩組觀(guān)測值分組。如果這兩個(gè)分布是相同的,我們將期望在每個(gè)組中有相同的觀(guān)測頻率。重要的是,我們需要每個(gè)組內有足夠多的觀(guān)測值,以保證測試的有效性。
我生成對應于對照組收入分布十分位數的組,然后計算處理組中每個(gè)組別的預期觀(guān)察值頻數,來(lái)確定兩種分布是否相同。









# Init dataframedf_bins = pd.DataFrame()# Generate bins from control group_, bins = pd.qcut(income_c, q=10, retbins=True)df_bins['bin'] = pd.cut(income_c, bins=bins).value_counts().index# Apply bins to both groupsdf_bins['income_c_observed'] = pd.cut(income_c, bins=bins).value_counts().valuesdf_bins['income_t_observed'] = pd.cut(income_t, bins=bins).value_counts().values# Compute expected frequency in the treatment groupdf_bins['income_t_expected'] = df_bins['income_c_observed'] / np.sum(df_bins['income_c_observed']) * np.sum(df_bins['income_t_observed'])df_bins

圖片分組和頻數,圖片來(lái)自作者
我們現在可以通過(guò)比較不同組別中處理組的期望值(E)和觀(guān)測值(O)數來(lái)進(jìn)行檢驗。試驗統計量如下:
圖片卡方檢驗統計量,圖片來(lái)自作者
其中,組別由i索引,O是第i個(gè)組中觀(guān)察到的數據點(diǎn)數量,E是第i個(gè)組中期望的數據點(diǎn)數量。由于我們使用對照組收入分布的十分位數來(lái)生成組別,我們預計處理組中每個(gè)組別的觀(guān)察數在各個(gè)容器中是相同的。檢驗統計量漸近分布為卡方分布。
為了計算檢驗統計量和檢驗的p值,我們使用來(lái)自scipy的chisquare函數。



from scipy.stats import chisquarestat, p_value = chisquare(df_bins['income_t_observed'], df_bins['income_t_expected'])print(f"Chi-squared Test: statistic={stat:.4f}, p-value={p_value:.4f}")Chi-squared Test: statistic=32.1432, p-value=0.0002

與目前所有其他檢驗不同的是,卡方檢驗強烈拒絕兩個(gè)分布相同的零假設。為什么?
原因在于兩個(gè)分布有一個(gè)相似的中心,但尾部不同。而卡方檢驗檢驗的是整個(gè)分布的相似性,而不是像之前檢驗那樣只在中心。
這個(gè)結果告訴我們:在從p值得出盲目結論之前,了解您實(shí)際測試的是什么是非常重要的!


Kolmogorov-Smirnov檢驗
Kolmogorov-Smirnov檢驗可能是比較分布最流行的非參數檢驗。Kolmogorov-Smirnov檢驗的思想是比較兩組的累積分布。特別是,Kolmogorov-Smirnov檢驗統計量是兩個(gè)累積分布之間的最大絕對差值。
圖片Kolmogorov-Smirnov檢驗統計量,圖片來(lái)自作者
其中F?和F?為兩個(gè)累積分布函數,x為基礎變量的值。Kolmogorov- smirnov檢驗統計量的漸近分布是Kolmogorov分布。
為了更好地理解檢驗,讓我們畫(huà)出累積分布函數和檢驗統計量。首先,我們計算累積分布函數。





df_ks = pd.DataFrame()df_ks['Income'] = np.sort(df['Income'].unique())df_ks['F_control'] = df_ks['Income'].apply(lambda x: np.mean(income_c<=x))df_ks['F_treatment'] = df_ks['Income'].apply(lambda x: np.mean(income_t<=x))df_ks.head()

圖片累計分布數據集快照,圖片來(lái)自作者
我們現在需要找到累積分布函之間的絕對距離最大的點(diǎn)。


k = np.argmax( np.abs(df_ks['F_control'] - df_ks['F_treatment']))ks_stat = np.abs(df_ks['F_treatment'][k] - df_ks['F_control'][k])

我們可以通過(guò)繪制兩個(gè)累積分布函數和測試統計量的值來(lái)可視化測試統計量的值。





y = (df_ks['F_treatment'][k] + df_ks['F_control'][k])/2plt.plot('Income', 'F_control', data=df_ks, label='Control')plt.plot('Income', 'F_treatment', data=df_ks, label='Treatment')plt.errorbar(x=df_ks['Income'][k], y=y, yerr=ks_stat/2, color='k',capsize=5, mew=3, label=f"Test statistic: {ks_stat:.4f}")plt.legend(loc='center right');plt.title("Kolmogorov-Smirnov Test");

圖片Kolmogorov-Smirnov檢驗統計量,圖片來(lái)自作者
從圖中,我們可以看到檢驗統計量的值對應于收入~650處兩個(gè)累積分布之間的距離。就收入價(jià)值而言,兩組之間的不平衡是最大的。
現在我們可以使用來(lái)自scipy的kstest函數執行實(shí)際的測試。



from scipy.stats import ksteststat, p_value = kstest(income_t, income_c)print(f" Kolmogorov-Smirnov Test: statistic={stat:.4f}, p-value={p_value:.4f}")Kolmogorov-Smirnov Test: statistic=0.0974, p-value=0.0355

p值低于5%:我們以95%的置信度拒絕兩個(gè)分布相同的零假設。
注1:KS檢驗過(guò)于保守,很少拒絕零假設。Lilliefors檢驗使用測試統計量的不同分布(Lilliefors分布)校正了這一偏差。
注2:KS測試使用的信息很少,因為它只比較在一點(diǎn)上的兩個(gè)累積分布:最大距離的一個(gè)。Anderson-Darling檢驗和Cramér-von Mises檢驗通過(guò)積分來(lái)比較整個(gè)域上的兩個(gè)分布(兩者之間的差異在于平方距離的加權)。
多組-圖
到目前為止,我們只考慮了兩組的情況:處理組和對照組。但如果我們有多個(gè)組呢?我們看到的一些方法可以很好地擴展,而另一些則不行。
作為一個(gè)可行的例子,我們現在要檢查不同處理組的收入分布是否相同。
箱線(xiàn)圖
當我們有許多個(gè)位數的組時(shí),箱線(xiàn)圖可以很好地縮放,因為我們可以把不同的盒子并排放在一起。


sns.boxplot(x='Arm', y='Income', data=df.sort_values('Arm'));plt.title("Boxplot, multiple groups");


圖片不同處理亞組收入分布,圖片來(lái)自作者
從圖中可以看出,不同組別的收入分布是不同的,編號越高的組別平均收入越高。
小提琴圖
結合了匯總統計和核密度估計的箱線(xiàn)圖的一個(gè)很好的擴展是小提琴圖。小提琴圖顯示了沿y軸的獨立密度,所以他們不會(huì )重疊。默認情況下,它還在內部添加一個(gè)微型箱線(xiàn)圖。


sns.violinplot(x='Arm', y='Income', data=df.sort_values('Arm'));plt.title("Violin Plot, multiple groups");
圖片不同處理亞組收入分布,圖片來(lái)自作者
相較于箱線(xiàn)圖,小提琴圖能表明不同處理組的收入不同。
脊線(xiàn)圖
最后,脊線(xiàn)圖沿x軸繪制多個(gè)核密度分布,比小提琴圖更直觀(guān),但部分重疊。不幸的是,在matplotlib和seaborn中都沒(méi)有默認的脊線(xiàn)圖。我們需要從joypy導入它。


from joypy import joyplotjoyplot(df, by='Arm', column='Income', colormap=sns.color_palette("crest", as_cmap=True));plt.xlabel('Income');plt.title("Ridgeline Plot, multiple groups");

圖片不同處理亞組收入分布,圖片來(lái)自作者
同樣,脊線(xiàn)圖表明,編號越高的治療組收入越高。從這個(gè)圖中,也更容易理解分布的不同形狀。
多組-檢驗
最后,讓我們考慮假設檢驗來(lái)比較多個(gè)組。為了簡(jiǎn)單起見(jiàn),我們將集中討論最常用的一個(gè):F檢驗。
F-檢驗
對于多個(gè)組,最常用的測試是f測試。f檢驗比較一個(gè)變量在不同組之間的方差。這種分析也被稱(chēng)為方差分析,或ANOVA。
在實(shí)際應用中,F檢驗統計量由
圖片F檢驗統計量,圖片來(lái)自作者
其中G為組數,N為觀(guān)察次數,為總體均值,g為g組內均值。在組獨立性零假設下,f統計量為F分布。




from scipy.stats import f_onewayincome_groups = [df.loc[df['Arm']==arm, 'Income'].values for arm in df['Arm'].dropna().unique()]stat, p_value = f_oneway(*income_groups)print(f"F Test: statistic={stat:.4f}, p-value={p_value:.4f}")F Test: statistic=9.0911, p-value=0.0000

檢驗p值基本為零,這意味著(zhù)強烈拒絕零假設,即各治療組之間的收入分配沒(méi)有差異。
結論
在這篇文章中,我們已經(jīng)看到了大量不同的方法來(lái)比較兩個(gè)或多個(gè)分布,無(wú)論是視覺(jué)上的還是統計上的。這是許多應用的主要關(guān)注點(diǎn),在因果推斷中尤其如此,我們使用隨機化方法使處理組和對照組盡可能具有可比性。
我們還看到不同的方法可能更適合不同的情況??梢暬椒ㄓ兄诮⒅庇X(jué),但統計方法對于決策至關(guān)重要,因為我們需要能夠評估差異的量級和統計意義。


參考文獻


[1] Student, The Probable Error of a Mean (1908), Biometrika.

[2] F. Wilcoxon, Individual Comparisons by Ranking Methods (1945), Biometrics Bulletin.

[3] B. L. Welch, The generalization of “Student’s” problem when several different population variances are involved (1947), Biometrika.

[4] H. B. Mann, D. R. Whitney, On a Test of Whether one of Two Random Variables is Stochastically Larger than the Other (1947), The Annals of Mathematical Statistics.

[5] E. Brunner, U. Munzen, The Nonparametric Behrens-Fisher Problem: Asymptotic Theory and a Small-Sample Approximation (2000), Biometrical Journal.

[6] A. N. Kolmogorov, Sulla determinazione empirica di una legge di distribuzione (1933), Giorn. Ist. Ital. Attuar..

[7] H. Cramér, On the composition of elementary errors (1928), Scandinavian Actuarial Journal.

[8] R. von Mises, Wahrscheinlichkeit statistik und wahrheit (1936), Bulletin of the American Mathematical Society.

[9] T. W. Anderson, D. A. Darling, Asymptotic Theory of Certain “Goodness of Fit” Criteria Based on Stochastic Processes (1953), The Annals of Mathematical Statistics.



*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


關(guān)鍵詞: AI

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>