在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            博客專(zhuān)欄

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

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

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

            翻譯:陳超

            校對(duì):趙茹萱

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



            圖片

            圖片來(lái)自作者


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






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

            圖片

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


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


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


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

            圖片

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


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


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

            圖片

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


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


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

            圖片

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


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


            圖片

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

            • 我們不需要做出任何武斷的決策(例如,分組數(shù)量)
            • 我們不需要做任何近似(例如:KDE),但是我們可以表征所有的數(shù)據(jù)點(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");


            圖片

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


            我們應(yīng)該如何解釋這幅圖?

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


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







            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))


            現(xiàn)在,我們可以將兩個(gè)分位數(shù)分布相互對(duì)照,加上45度線,表示基準(zhǔ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)解:處理組的收入有相同的中位數(shù)(在中心交叉的線),但更寬的尾部(點(diǎn)在左邊的線以下,右邊的線以上)。
            兩組——檢驗(yàn)
            到目前為止,我們已經(jīng)看到了可視化分布之間差異的不同方法??梢暬闹饕獌?yōu)點(diǎn)是直觀:我們可以通過(guò)肉眼觀察差異并直觀地評(píng)估它們。
            然而,我們可能想要更嚴(yán)格地評(píng)估分布之間的差異的統(tǒng)計(jì)意義,即回答這個(gè)問(wèn)題“觀察到的差異是系統(tǒng)的還是由于采樣噪聲?”
            我們現(xiàn)在將分析不同的測(cè)試來(lái)辨別兩個(gè)分布。


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

            圖片

            T檢驗(yàn)統(tǒng)計(jì),圖片來(lái)自作者
            式中為樣本均值,s為樣本標(biāo)準(zhǔn)差。在較溫和的條件下,檢驗(yàn)統(tǒng)計(jì)量是漸近分布的Student t分布。
            我們使用scipy中的ttest_ind函數(shù)來(lái)執(zhí)行t檢驗(yàn)。該函數(shù)返回測(cè)試統(tǒng)計(jì)數(shù)據(jù)和隱含的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

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



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

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

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


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




            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,這意味著我們不拒絕零假設(shè),即處理組和對(duì)照組的收入分配相同。
            注:對(duì)于t檢驗(yàn),存在兩樣本方差不相等的Mann-Whitney U檢驗(yàn),即Brunner-Munzel檢驗(yàn)。
            置換檢驗(yàn)
            一種非參數(shù)選擇是置換檢驗(yàn)。其想法是,在零假設(shè)下,兩種分布應(yīng)該是相同的,因此混排group標(biāo)簽不應(yīng)該顯著改變?nèi)魏谓y(tǒng)計(jì)量。
            我們可以選擇任何統(tǒng)計(jì)數(shù)據(jù),并檢查它在原始樣本中的值與它在group標(biāo)簽排列中的分布如何比較。例如,讓我們使用處理組和對(duì)照組之間的樣本均值差異作為檢驗(yàn)統(tǒng)計(jì)量。






            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

            置換檢驗(yàn)給出了0.053的p值,這意味著在5%的水平上,零假設(shè)的弱非拒絕性。
            我們?nèi)绾谓忉宲值?這意味著數(shù)據(jù)中的均值差大于1-0.0560 =94.4%的排列后樣本均值差。
            我們可以通過(guò)繪制測(cè)試統(tǒng)計(jì)值與樣本值之間跨排列的分布來(lái)可視化測(cè)試。



            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)自作者
            正如我們所看到的,相對(duì)于排列后的樣本值,樣本統(tǒng)計(jì)值是相當(dāng)極端的,但也合理。
            卡方檢驗(yàn)
            卡方檢驗(yàn)是一個(gè)效力很強(qiáng)的檢驗(yàn),常用于檢驗(yàn)頻率差異。
            卡方檢驗(yàn)最不為人知的應(yīng)用之一是檢驗(yàn)兩個(gè)分布之間的相似性。把兩組觀測(cè)值分組。如果這兩個(gè)分布是相同的,我們將期望在每個(gè)組中有相同的觀測(cè)頻率。重要的是,我們需要每個(gè)組內(nèi)有足夠多的觀測(cè)值,以保證測(cè)試的有效性。
            我生成對(duì)應(yīng)于對(duì)照組收入分布十分位數(shù)的組,然后計(jì)算處理組中每個(gè)組別的預(yù)期觀察值頻數(shù),來(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

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



            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

            與目前所有其他檢驗(yàn)不同的是,卡方檢驗(yàn)強(qiáng)烈拒絕兩個(gè)分布相同的零假設(shè)。為什么?
            原因在于兩個(gè)分布有一個(gè)相似的中心,但尾部不同。而卡方檢驗(yàn)檢驗(yàn)的是整個(gè)分布的相似性,而不是像之前檢驗(yàn)?zāi)菢又辉谥行摹?/span>
            這個(gè)結(jié)果告訴我們:在從p值得出盲目結(jié)論之前,了解您實(shí)際測(cè)試的是什么是非常重要的!


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





            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()

            圖片累計(jì)分布數(shù)據(jù)集快照,圖片來(lái)自作者
            我們現(xiàn)在需要找到累積分布函之間的絕對(duì)距離最大的點(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è)累積分布函數(shù)和測(cè)試統(tǒng)計(jì)量的值來(lái)可視化測(cè)試統(tǒng)計(jì)量的值。





            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檢驗(yàn)統(tǒng)計(jì)量,圖片來(lái)自作者
            從圖中,我們可以看到檢驗(yàn)統(tǒng)計(jì)量的值對(duì)應(yīng)于收入~650處兩個(gè)累積分布之間的距離。就收入價(jià)值而言,兩組之間的不平衡是最大的。
            現(xiàn)在我們可以使用來(lái)自scipy的kstest函數(shù)執(zhí)行實(shí)際的測(cè)試。



            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è)分布相同的零假設(shè)。
            注1:KS檢驗(yàn)過(guò)于保守,很少拒絕零假設(shè)。Lilliefors檢驗(yàn)使用測(cè)試統(tǒng)計(jì)量的不同分布(Lilliefors分布)校正了這一偏差。
            注2:KS測(cè)試使用的信息很少,因?yàn)樗槐容^在一點(diǎn)上的兩個(gè)累積分布:最大距離的一個(gè)。Anderson-Darling檢驗(yàn)和Cramér-von Mises檢驗(yàn)通過(guò)積分來(lái)比較整個(gè)域上的兩個(gè)分布(兩者之間的差異在于平方距離的加權(quán))。
            多組-圖
            到目前為止,我們只考慮了兩組的情況:處理組和對(duì)照組。但如果我們有多個(gè)組呢?我們看到的一些方法可以很好地?cái)U(kuò)展,而另一些則不行。
            作為一個(gè)可行的例子,我們現(xiàn)在要檢查不同處理組的收入分布是否相同。
            箱線圖
            當(dāng)我們有許多個(gè)位數(shù)的組時(shí),箱線圖可以很好地縮放,因?yàn)槲覀兛梢园巡煌暮凶硬⑴欧旁谝黄稹?/span>


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


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


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


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

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


            參考文獻(xià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.



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

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


            關(guān)鍵詞: AI

            相關(guān)推薦

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

            關(guān)閉