日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

麦克内马尔检验(McNemar‘s Test)

發布時間:2023/12/14 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 麦克内马尔检验(McNemar‘s Test) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

麥克內馬爾檢驗(McNemar’s Test)

配對標稱數據的麥克內馬爾檢驗(McNemar’s Test)

from mlxtend.evaluate import mcnemar

概述

McNemar的檢驗[1](有時也稱為“受試者內卡方檢驗”)是對配對名義數據的統計檢驗。在機器學習中,我們可以使用兩種統計模型(NEMAR)來測試機器學習的準確性。麥克內馬爾的測試是基于兩個模型預測的2倍連續表。

McNemar’s Test Statistic

在麥克內馬爾的檢驗中,我們提出了零假設,即概率 p(b)p(b)p(b) and p(c)p(c)p(c),或者用簡化的術語來說:兩個模型中沒有一個比另一個更好。因此,另一種假設是,這兩種模型的性能并不相同。

McNemar檢驗統計量(“卡方”)可計算如下:
χ2=(b?c)2(b+c),\chi^2 = \frac{(b - c)^2}{(b + c)}, χ2=(b+c)(b?c)2?,
如果單元格c和b的總和足夠大,則 χ2\chi^2χ2 值遵循一個自由度的卡方分布。設置顯著性閾值后,例如,α=0.05α=0.05α=0.05。我們可以計算 ppp 值——假設零假設為真,ppp 值是觀察這個經驗(或更大)卡方值的概率。如果 ppp 值低于我們選擇的顯著性水平,我們可以拒絕兩個模型性能相等的無效假設。

連續性校正

在Quinn McNemar發表McNemar測試[1]大約一年后,Edwards[2]提出了一個連續性修正版本,這是當今更常用的變體:
χ2=(∣b?c∣?1)2(b+c).\chi^2 = \frac{( \mid b - c \mid - 1)^2}{(b + c)}. χ2=(b+c)(b?c?1)2?.

精確p值

如前所述,建議對小樣本量(b+c<25b + c < 25b+c<25[3])進行精確二項檢驗,因為卡方分布可能無法很好地近似卡方值。精確的p值可計算如下:
p=2∑i=bn(ni)0.5i(1?0.5)n?i,p = 2 \sum^{n}_{i=b} \binom{n}{i} 0.5^i (1 - 0.5)^{n-i}, p=2i=bn?(in?)0.5i(1?0.5)n?i,
其中 n=b+cn = b + cn=b+c,系數2用于計算雙邊 ppp 值。

實例

例如,鑒于兩個模型的精度分別為99.7%和99.6%,2x2連續性表可以為模型選擇提供進一步的見解。

在子圖A和B中,兩個模型的預測精度如下所示:

  • model 1 accuracy: 9,960 / 10,000 = 99.6%
  • model 2 accuracy: 9,970 / 10,000 = 99.7%

現在,在子圖A中,我們可以看到模型2得到了11個正確的預測,而模型1得到了錯誤的預測。反之亦然,模型2的預測是對的,模型2的預測是錯的。因此,基于這一11:1的比例,我們可以得出結論,模型2的表現明顯優于模型1。然而,在子圖B中,比例為25:15,這對于選擇哪種模型更好來說不太確定。

在下面的編碼示例中,我們將使用這兩種場景A和B來說明McNemar的測試。

References

  • [1] McNemar, Quinn, 1947. “Note on the sampling error of the difference between correlated proportions or percentages”. Psychometrika. 12 (2): 153–157.
  • [2] Edwards AL: Note on the “correction for continuity” in testing the significance of the difference between correlated proportions. Psychometrika. 1948, 13 (3): 185-187. 10.1007/BF02289261.
  • [3] https://en.wikipedia.org/wiki/McNemar%27s_test

示例1-創建2x2連續表

mcnemar功能需要2x2列聯表作為NumPy數組,格式如下:

可以使用mlxtend的mcnemar_表函數創建這樣的鄰接矩陣。估計例如:

import numpy as np from mlxtend.evaluate import mcnemar_table# The correct target (class) labels y_target = np.array([0, 0, 0, 0, 0, 1, 1, 1, 1, 1])# Class labels predicted by model 1 y_model1 = np.array([0, 1, 0, 0, 0, 1, 1, 0, 0, 0])# Class labels predicted by model 2 y_model2 = np.array([0, 0, 1, 1, 0, 1, 1, 0, 0, 0])tb = mcnemar_table(y_target=y_target, y_model1=y_model1, y_model2=y_model2)print(tb) [[4 1][2 3]]

示例2——麥克內馬爾對方案B的測試

不,讓我們繼續概述部分中提到的示例,并假設我們已經計算了2x2連續表:

import numpy as nptb_b = np.array([[9945, 25],[15, 15]])

為了檢驗兩個模型的預測性能相等的零假設(使用顯著性水平 α=0.05α=0.05α=0.05 ),我們可以進行修正的麥克內馬爾檢驗,以計算卡方( chi-squared )和 p值(p-value),如下所示:

from mlxtend.evaluate import mcnemarchi2, p = mcnemar(ary=tb_b, corrected=True) print('chi-squared:', chi2) print('p-value:', p) chi-squared: 2.025 p-value: 0.154728923485

由于 ppp 值大于我們假設的顯著性閾值(α=0.05α=0.05α=0.05),我們不能拒絕我們的零假設,并假設兩個預測模型之間沒有顯著差異。

示例3——麥克內馬爾對場景A的測試

與方案B(例2)相比,方案A中的樣本量相對較小(b+c=11+1=12b+c=11+1=12b+c=11+1=12),且小于建議的25[3],以通過卡方分布井近似計算出的卡方值。

在這種情況下,我們需要根據二項分布計算精確的p值:

from mlxtend.evaluate import mcnemar import numpy as nptb_a = np.array([[9959, 11],[1, 29]])chi2, p = mcnemar(ary=tb_a, exact=True)print('chi-squared:', chi2) print('p-value:', p) chi-squared: None p-value: 0.005859375

假設我們在顯著性水平 α=0.05α=0.05α=0.05 的情況下進行了該測試,我們可以拒絕兩個模型在該數據集上表現相同的無效假設,因為 ppp 值(p≈0.006)小于 ααα

API

mcnemar(ary, corrected=True, exact=False)

配對標稱數據的McNemar檢驗

參數

  • ary : array-like, shape=[2, 2]

    2 x 2 contigency table (as returned by evaluate.mcnemar_table), where a: ary[0, 0]: # of samples that both models predicted correctly b: ary[0, 1]: # of samples that model 1 got right and model 2 got wrong c: ary[1, 0]: # of samples that model 2 got right and model 1 got wrong d: aryCell [1, 1]: # of samples that both models predicted incorrectly

    2 x 2 contigency table(由evaluate.mcnemar_table返回),

    ? 其中

    • a:ary[0,0]:# 兩個模型正確預測的樣本
    • b:ary[0,1]:#模型1正確預測的樣本和模型2錯誤預測的樣本
    • c:ary[1,0]:#模型2正確預測的樣本和模型1錯誤預測的樣本
    • d:aryCell[1,1]:#兩個模型都預測錯誤的樣本數量
  • corrected : array-like, shape=[n_samples] (default: True)

    如果True,則使用Edward的連續性校正進行卡方檢驗

  • exact : bool, (default: False)

    If True, uses an exact binomial test comparing b to a binomial distribution with n = b + c and p = 0.5. It is highly recommended to use exact=True for sample sizes < 25 since chi-squared is not well-approximated by the chi-squared distribution!

    如果 True,則使用精確的二項檢驗,將 b 與 n=b+c 且 p=0.5 的二項分布進行比較。對于小于25的樣本量,強烈建議使用’exact=True’,因為卡方分布不能很好地近似卡方分布!

Returns

  • chi2, p : float or None, float

    返回卡方值和p值;如果’exact=True’(默認值為’False’),‘chi2’是’None’`

Examples

For usage examples, please see [http://rasbt.github.io/mlxtend/user_guide/evaluate/mcnemar/](http://rasbt.github.io/mlxtend/user_guide/evaluate/mcnemar/)

reference

@online{Raschka2021Sep,
author = {Raschka, S.},
title = {{McNemar’s Test - mlxtend}},
year = {2021},
month = {9},
date = {2021-09-03},
urldate = {2022-03-10},
language = {english},
hyphenation = {english},
note = {[Online; accessed 10. Mar. 2022]},
url = {http://rasbt.github.io/mlxtend/user_guide/evaluate/mcnemar},
abstract = {{A library consisting of useful tools and extensions for the day-to-day data science tasks.}}
}

總結

以上是生活随笔為你收集整理的麦克内马尔检验(McNemar‘s Test)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。