<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # Python中非參數統計顯著性測試簡介 > 原文: [https://machinelearningmastery.com/nonparametric-statistical-significance-tests-in-python/](https://machinelearningmastery.com/nonparametric-statistical-significance-tests-in-python/) 在應用機器學習中,我們經常需要確定兩個數據樣本是否具有相同或不同的分布。 我們可以使用統計顯著性檢驗來回答這個問題,這些檢驗可以量化樣本具有相同分布的可能性。 如果數據沒有熟悉的高斯分布,我們必須求助于非參數版本的顯著性檢驗。這些測試以類似的方式操作,但是無分布,要求在可以執行測試之前首先將實值數據轉換為等級數據。 在本教程中,您將發現非參數統計測試,您可以使用它來確定數據樣本是否來自具有相同或不同分布的群體。 完成本教程后,您將了解: * 用于比較獨立數據樣本的Mann-Whitney U檢驗:Student t檢驗的非參數版本。 * 用于比較配對數據樣本的Wilcoxon符號秩檢驗:配對Student t檢驗的非參數版本。 * Kruskal-Wallis H和Friedman測試用于比較兩個以上的數據樣本:ANOVA的非參數版本和重復測量ANOVA測試。 讓我們開始吧。 * **更新于May / 2018** :改進了拒絕與拒絕統計測試的語言。 ![Introduction to Nonparametric Statistical Significance Tests in Python](img/1a8e46cdba4be3371ae1f4c72c30b6d6.jpg) Python中的非參數統計顯著性測試介紹 [Jirka Matousek](https://www.flickr.com/photos/jirka_matousek/9220286695/) 的照片,保留一些權利。 ## 教程概述 本教程分為6個部分;他們是: 1. 非參數統計顯著性檢驗 2. 測試數據 3. Mann-Whitney U測試 4. 威爾科克森簽名等級測試 5. Kruskal-Wallis H測試 6. 弗里德曼測試 ## 非參數統計顯著性檢驗 [非參數統計](https://en.wikipedia.org/wiki/Nonparametric_statistics)是那些不假設對數據進行特定分配的方法。 通常,它們指的是不采用高斯分布的統計方法。它們被開發用于序數或區間數據,但實際上也可以用于數據樣本中的實值觀測值的排序,而不是觀察值本身。 關于兩個或更多數據集的常見問題是它們是否不同。具體而言,它們的集中趨勢(例如平均值或中值)之間的差異是否具有統計學意義。 對于沒有使用非參數統計顯著性檢驗的高斯分布的數據樣本,可以回答這個問題。這些測試的零假設通常假設兩個樣本都來自具有相同分布的群體,因此具有相同的群體參數,例如平均值或中值。 如果在計算兩個或更多樣本的顯著性檢驗后,零假設被拒絕,則表明有證據表明樣本來自不同的群體,反過來是樣本估計的人口參數之間的差異,例如平均值或中位數可能很重要。 這些測試通常用于模型技能分數的樣本,以確認機器學習模型之間的技能差異是顯著的。 通常,每個測試計算一個測試統計量,必須用統計學中的一些背景解釋并對統計測試本身有更深入的了解。測試還返回一個p值,可用于解釋測試結果。 p值可以被認為是在給定基本假設(零假設)的情況下觀察兩個數據樣本的概率,即兩個樣本是從具有相同分布的群體中抽取的。 可以在稱為α的所選顯著性水平的上下文中解釋p值。 alpha的常見值為5%或0.05。如果p值低于顯著性水平,則測試表明有足夠的證據拒絕零假設,并且樣本可能來自具有不同分布的群體。 * **p &lt;= alpha** :拒絕H0,分布不同。 * **p&gt; alpha** :無法拒絕H0,相同的分布。 ## 測試數據集 在我們查看特定的非參數重要性測試之前,讓我們首先定義一個測試數據集,我們可以用它來演示每個測試。 我們將生成從不同分布中抽取的兩個樣本。為簡單起見,我們將從高斯分布中抽取樣本,盡管如上所述,我們在本教程中審查的測試是針對我們不知道或假設任何特定分布的數據樣本。 我們將使用 [randn()NumPy函數](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html)在每個樣本中生成100個高斯隨機數的樣本,平均值為0,標準差為1.第一個樣本中的觀察值被縮放為具有均值標準偏差為50,標準偏差為5.將第二個樣品中的觀察結果縮放為平均值為51,標準偏差為5。 我們希望統計檢驗發現樣本來自不同的分布,盡管每個樣本100個觀察值的小樣本量會給這個決定增加一些噪音。 完整的代碼示例如下所示。 ```py # generate gaussian data samples from numpy.random import seed from numpy.random import randn from numpy import mean from numpy import std # seed the random number generator seed(1) # generate two sets of univariate observations data1 = 5 * randn(100) + 50 data2 = 5 * randn(100) + 51 # summarize print('data1: mean=%.3f stdv=%.3f' % (mean(data1), std(data1))) print('data2: mean=%.3f stdv=%.3f' % (mean(data2), std(data2))) ``` 運行該示例生成數據樣本,然后計算并打印每個樣本的均值和標準差,確認它們的不同分布。 ```py data1: mean=50.303 stdv=4.426 data2: mean=51.764 stdv=4.660 ``` ## Mann-Whitney U測試 Mann-Whitney U檢驗是一種非參數統計顯著性檢驗,用于確定是否從具有相同分布的群體中抽取兩個獨立樣本。 該測試以Henry Mann和Donald Whitney的名字命名,雖然它有時被稱為Wilcoxon-Mann-Whitney測試,也以Frank Wilcoxon命名,他也開發了測試的變體。 > 將兩個樣本組合在一起并排序。策略是確定來自兩個樣本的值是否在等級排序中隨機混合,或者如果它們在組合時聚集在相對的末端。隨機排名順序意味著兩個樣本沒有不同,而一個樣本值的集群將指示它們之間的差異。 - 第58頁,[非統計學家的非參數統計:循序漸進的方法](http://amzn.to/2CZcXBz),2009年。 默認假設或零假設是數據樣本的分布之間沒有差異。拒絕這一假設表明樣本之間可能存在一些差異。更具體地,該測試確定來自一個樣本的任何隨機選擇的觀察是否同樣可能大于或小于另一個分布中的樣本。如果違反,則表明不同的分布。 * **無法拒絕H0** :樣本分布相等。 * **拒絕H0** :樣本分布不相等。 為使測試有效,每個數據樣本至少需要20次觀察。 我們可以使用 [mannwhitneyu()SciPy函數](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html)在Python中實現Mann-Whitney U測試。這些函數將兩個數據樣本作為參數。它返回測試統計和p值。 下面的示例演示了測試數據集上的Mann-Whitney U測試。 ```py # Mann-Whitney U test from numpy.random import seed from numpy.random import randn from scipy.stats import mannwhitneyu # seed the random number generator seed(1) # generate two independent samples data1 = 5 * randn(100) + 50 data2 = 5 * randn(100) + 51 # compare samples stat, p = mannwhitneyu(data1, data2) print('Statistics=%.3f, p=%.3f' % (stat, p)) # interpret alpha = 0.05 if p > alpha: print('Same distribution (fail to reject H0)') else: print('Different distribution (reject H0)') ``` 運行該示例計算數據集上的測試并打印統計信息和p值。 p值強烈表明樣本分布是不同的,如預期的那樣。 ```py Statistics=4025.000, p=0.009 Different distribution (reject H0) ``` ## 威爾科克森簽名等級測試 在某些情況下,數據樣本可以配對。 有許多原因可能是這種情況,例如,樣品是相關的或[以某種方式匹配](https://en.wikipedia.org/wiki/Paired_difference_test)或代表相同技術的兩次測量。更具體地,每個樣本是獨立的,但來自相同的群體。 機器學習中的配對樣本的示例可以是在不同數據集上評估的相同算法,或者在完全相同的訓練和測試數據上評估的不同算法。 樣品不是獨立的,因此不能使用Mann-Whitney U檢驗。相反,使用 [Wilcoxon符號秩檢驗](https://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test),也稱為Wilcoxon T檢驗,以Frank Wilcoxon命名。它相當于配對學生T檢驗,但是對于排序數據而不是具有高斯分布的實值數據。 > Wilcoxon簽名等級測試是一種非參數統計程序,用于比較配對或相關的兩個樣本。與Wilcoxon簽名等級測試相對應的參數等名稱包括Student's t檢驗,匹配對的t檢驗,配對樣本的t檢驗或依賴樣本的t檢驗。 - 第38-39頁,[非統計學家的非參數統計:循序漸進的方法](http://amzn.to/2CZcXBz),2009。 測試的默認假設,即零假設,即兩個樣本具有相同的分布。 * **無法拒絕H0** :樣本分布相等。 * **拒絕H0** :樣本分布不相等。 For the test to be effective, it requires at least 20 observations in each data sample. Wilcoxon符號秩檢驗可以使用 [wilcoxon()SciPy函數](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.wilcoxon.html)在Python中實現。該函數將兩個樣本作為參數,并返回計算的統計量和p值。 下面是完整的示例,演示了對測試問題的Wilcoxon符號秩檢驗的計算。這兩個樣本在技術上不配對,但我們可以假裝它們是為了證明這個重要性測試的計算。 ```py # Wilcoxon signed-rank test from numpy.random import seed from numpy.random import randn from scipy.stats import wilcoxon # seed the random number generator seed(1) # generate two independent samples data1 = 5 * randn(100) + 50 data2 = 5 * randn(100) + 51 # compare samples stat, p = wilcoxon(data1, data2) print('Statistics=%.3f, p=%.3f' % (stat, p)) # interpret alpha = 0.05 if p > alpha: print('Same distribution (fail to reject H0)') else: print('Different distribution (reject H0)') ``` 運行該示例計算并打印統計信息并打印結果。 p值被強烈解釋,表明樣本是從不同的分布中提取的。 ```py Statistics=1886.000, p=0.028 Different distribution (reject H0) ``` ## Kruskal-Wallis H測試 當使用顯著性測試時,例如Mann-Whitney U和Wilcoxon符號秩檢驗,數據樣本之間的比較必須成對進行。 如果您有許多數據樣本并且您只對兩個或更多樣本是否具有不同的分布感興趣,則這可能是低效的。 Kruskal-Wallis檢驗是單因素方差分析或簡稱ANOVA的非參數版本。它以該方法的開發者命名,William Kruskal和Wilson Wallis。該測試可用于確定兩個以上的獨立樣本是否具有不同的分布。它可以被認為是Mann-Whitney U檢驗的推廣。 默認假設或零假設是所有數據樣本都來自同一分布。具體而言,所有群體的人口中位數相等。拒絕零假設表明有足夠的證據表明一個或多個樣本支配另一個樣本,但測試并未指出哪些樣本或多少樣本。 > 當Kruskal-Wallis H-檢驗導致顯著結果時,則至少一個樣品與其他樣品不同。但是,測試不能確定差異發生的位置。而且,它沒有確定出現了多少差異。為了確定樣本對之間的特定差異,研究人員可以使用樣本對比或事后測試來分析特定樣本對的顯著差異。 Mann-Whitney U檢驗是在各個樣本集之間進行樣本對比的有用方法。 - 第100頁,[非統計學家的非參數統計:循序漸進的方法](http://amzn.to/2CZcXBz),2009。 * **無法拒絕H0** :所有樣本分布均相等。 * **拒絕H0** :一個或多個樣本分布不相等。 每個數據樣本必須是獨立的,具有5個或更多個觀察值,并且數據樣本的大小可以不同。 我們可以更新測試問題以獲得3個數據樣本,而不是2個,其中兩個具有相同的樣本均值。鑒于一個樣本不同,我們期望測試發現差異并拒絕原假設。 ```py # generate three independent samples data1 = 5 * randn(100) + 50 data2 = 5 * randn(100) + 50 data3 = 5 * randn(100) + 52 ``` Kruskal-Wallis H-test可以使用 [kruskal()SciPy函數](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kruskal.html)在Python中實現。它將兩個或多個數據樣本作為參數,并返回測試統計量和p值作為結果。 下面列出了完整的示例。 ```py # Kruskal-Wallis H-test from numpy.random import seed from numpy.random import randn from scipy.stats import kruskal # seed the random number generator seed(1) # generate three independent samples data1 = 5 * randn(100) + 50 data2 = 5 * randn(100) + 50 data3 = 5 * randn(100) + 52 # compare samples stat, p = kruskal(data1, data2, data3) print('Statistics=%.3f, p=%.3f' % (stat, p)) # interpret alpha = 0.05 if p > alpha: print('Same distributions (fail to reject H0)') else: print('Different distributions (reject H0)') ``` 運行該示例計算測試并打印結果。 解釋p值,正確地拒絕所有樣本具有相同分布的零假設。 ```py Statistics=6.051, p=0.049 Different distributions (reject H0) ``` ## 弗里德曼測試 與前面的示例一樣,我們可能有兩個以上的不同樣本,并且對所有樣本是否具有相同分布感興趣。 如果樣品以某種方式配對,例如重復測量,那么Kruskal-Wallis H測試將是不合適的。相反,可以使用 [Friedman測試](https://en.wikipedia.org/wiki/Friedman_test),命名為Milton Friedman。 弗里德曼檢驗是方差檢驗的重復測量分析的非參數形式,或重復測量方差分析。該測試可以被認為是對兩個以上樣品的Kruskal-Wallis H檢驗的推廣。 默認假設或零假設是多個配對樣本具有相同的分布。拒絕零假設表明配對樣本中的一個或多個具有不同的分布。 * **無法拒絕H0** :配對樣本分布相等。 * **拒絕H0** :配對樣本分布不相等。 該測試假設兩個或更多配對數據樣本,每組10個或更多樣本。 > 弗里德曼檢驗是一種非參數統計程序,用于比較兩個以上相關的樣本。與該測試等效的參數是重復測量方差分析(ANOVA)。當Friedman測試導致顯著結果時,至少一個樣品與其他樣品不同。 - 第79-80頁,[非統計學家的非參數統計:循序漸進的方法](http://amzn.to/2CZcXBz),2009。 我們可以使用 [friedmanchisquare()SciPy函數](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.friedmanchisquare.html)在Python中實現Friedman測試。此函數將要比較的數據樣本作為參數,并返回計算的統計量和p值。 可以在與前一節中使用的測試數據集相同的變體上證明該顯著性測試。即三個樣本,兩個具有相同的總體平均值,一個具有略微不同的平均值。雖然樣本沒有配對,但我們希望測試發現并非所有樣本都具有相同的分布。 The complete code example is listed below. ```py # Friedman test from numpy.random import seed from numpy.random import randn from scipy.stats import friedmanchisquare # seed the random number generator seed(1) # generate three independent samples data1 = 5 * randn(100) + 50 data2 = 5 * randn(100) + 50 data3 = 5 * randn(100) + 52 # compare samples stat, p = friedmanchisquare(data1, data2, data3) print('Statistics=%.3f, p=%.3f' % (stat, p)) # interpret alpha = 0.05 if p > alpha: print('Same distributions (fail to reject H0)') else: print('Different distributions (reject H0)') ``` 運行該示例計算三個數據樣本的測試并打印測試統計和p值。 對p值的解釋正確地表明至少一個樣本具有不同的分布。 ```py Statistics=9.360, p=0.009 Different distributions (reject H0) ``` ## 擴展 本節列出了一些擴展您可能希望探索的教程的想法。 * 更新所有示例以對具有相同分布的數據樣本進行操作。 * 根據每個測試的要求和行為,創建一個流程圖,用于選擇每個統計顯著性測試。 * 考慮3個在機器學習項目中比較數據樣本的情況,假設樣本的非高斯分布,并建議可以在每種情況下使用的測試類型。 如果你探索任何這些擴展,我很想知道。 ## 進一步閱讀 如果您希望深入了解,本節將提供有關該主題的更多資源。 ### 圖書 * [非統計人員的非參數統計:循序漸進的方法](http://amzn.to/2CZcXBz),2009年。 ### API * [numpy.random.seed()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.seed.html) * [numpy.random.randn()API](https://docs.scipy.org/doc/numpy/reference/generated/numpy.random.randn.html) * [scipy.stats.mannwhitneyu()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.mannwhitneyu.html) * [scipy.stats.wilcoxon()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.wilcoxon.html) * [scipy.stats.kruskal()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kruskal.html) * [scipy.stats.friedmanchisquare()API](https://docs.scipy.org/doc/scipy/reference/generated/scipy.stats.kruskal.html) ### 用品 * [維基百科上的非參數統計](https://en.wikipedia.org/wiki/Nonparametric_statistics) * [維基百科上的配對差異測試](https://en.wikipedia.org/wiki/Paired_difference_test) * [維基百科上的Mann-Whitney U測試](https://en.wikipedia.org/wiki/Mann%E2%80%93Whitney_U_test) * [Wilcoxon對維基百科的簽名等級測試](https://en.wikipedia.org/wiki/Wilcoxon_signed-rank_test) * [Kruskal-Wallis對維基百科的單因素方差分析](https://en.wikipedia.org/wiki/Kruskal%E2%80%93Wallis_one-way_analysis_of_variance) * [弗里德曼在維基百科上的測試](https://en.wikipedia.org/wiki/Friedman_test) ## 摘要 在本教程中,您發現了非參數統計測試,可用于確定數據樣本是否來自具有相同或不同分布的群體。 具體來說,你學到了: * 用于比較獨立數據樣本的Mann-Whitney U檢驗:Student t檢驗的非參數版本。 * 用于比較配對數據樣本的Wilcoxon符號秩檢驗:配對Student t檢驗的非參數版本。 * Kruskal-Wallis H和Friedman測試用于比較兩個以上的數據樣本:ANOVA的非參數版本和重復測量ANOVA測試。 你有任何問題嗎? 在下面的評論中提出您的問題,我會盡力回答。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看