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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

白话“卡方检验”

發(fā)布時間:2023/12/31 综合教程 35 生活家
生活随笔 收集整理的這篇文章主要介紹了 白话“卡方检验” 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

什么是卡方檢驗

卡方檢驗是假設(shè)檢驗的一種,用于分析兩個類別變量的相關(guān)關(guān)系,是一種非參數(shù)假設(shè)檢驗,得出的結(jié)論無非就是相關(guān)或者不相關(guān),所以有的教材上又叫“獨(dú)立性檢驗”,所以如果不是很清楚假設(shè)檢驗的朋友們,要好好復(fù)習(xí)一下假設(shè)檢驗了。提起假設(shè)檢驗,會扯出一堆東西,這里我簡單為大家梳理一下。

什么是“類別變量”?

類別變量就是取值為離散值的變量,“性別”就是一個類別變量,它的取值只有“男”和“女”,類似還有”婚否“、”國籍“等。

什么是“分析兩個類別變量的相關(guān)關(guān)系”

卡方檢驗用于分析兩個類別變量的相關(guān)關(guān)系,這是什么意思呢?以我們熟知的 Kaggle 平臺上的泰坦尼克號幸存者預(yù)測提供的數(shù)據(jù)為例,”性別“對于”是否幸存“的關(guān)系研究,就屬于這方面的內(nèi)容。研究表明,泰坦尼克號上的乘客秉承”女士優(yōu)先,照顧弱勢群體“的基本原則,因此女性幸存的概率比男性要大,這就說明,”性別“對于”是否幸存“有相關(guān)關(guān)系,我們后面會使用卡方檢驗來驗證這一事實(shí)。

假設(shè)檢驗

假設(shè)檢驗,顧名思義,就是提出一個假設(shè),然后檢驗?zāi)闾岢龅募僭O(shè)是否正確。假設(shè)檢驗的流程其實(shí)是固定的,關(guān)鍵其實(shí)在于理解假設(shè)檢驗的設(shè)計原則。

什么是假設(shè)?

那么我們假設(shè)什么呢?這里就要引入“原假設(shè)”和“備擇假設(shè)”的概念了,“原假設(shè)”是“備擇假設(shè)”的對立面。下面這個原則很重要:

備擇假設(shè)通常是研究者想收集證據(jù)予以支持的假設(shè)。原假設(shè)是研究者想收集證據(jù)予以推翻的假設(shè)。

重要的事情,我再寫兩遍:如果你想通過種種論證,證明一件事情,就要把這件事情寫成“備擇假設(shè)”。備擇假設(shè)通常用于表達(dá)研究者自己傾向于支持的看法(這很主觀),然后就是想辦法收集證據(jù)拒絕原假設(shè),以支持備擇假設(shè)

特別要說明的一點(diǎn)是:如果你不遵守這個“原假設(shè)”和“備擇假設(shè)”設(shè)計的基本原則,你很可能會得到相反的結(jié)論。

假設(shè)檢驗很像司法界對于一個事實(shí)的認(rèn)定,本著“疑罪從無”的原則,如果你要說明一個人有罪,你必須提供充足的證據(jù),否則被告人的罪名就不能成立,這個說法叫“沒有充分的證據(jù)證明被告有罪”。

因此,如果我們最后的結(jié)論是“原假設(shè)”成立,我們一般不這么說,即我們不說“原假設(shè)”成立,我們不說“原假設(shè)”是真的。我們說不能拒絕“原假設(shè)”,或者說沒有充分的證據(jù)拒絕“原假設(shè)”,或者說沒有充分的證據(jù)證明“備擇假設(shè)”成立

卡方檢驗的“原假設(shè)”與“備擇假設(shè)”

因為我們做假設(shè)檢驗一定是覺得兩個類別變量有關(guān)系,才去做檢驗。再想想那個“疑罪從無”原則,我們是覺得一個人有罪,才去舉證。因此卡方檢驗的“原假設(shè)”一定是假設(shè)獨(dú)立,“備擇假設(shè)”一定是假設(shè)相關(guān),即:

原假設(shè):類別變量 (A) 與類別變量 (B) 獨(dú)立
備擇假設(shè):類別變量 (A) 與類別變量 (B) 不獨(dú)立

這一點(diǎn)應(yīng)該是極其明確的,我們的統(tǒng)計軟件中都是這樣設(shè)定的。

如何檢驗?

做“檢驗”這件事情,就很像我們以前做的“反證法”,我們假定要證明的結(jié)論的對立面成立,然后推出矛盾,即說明了我們的假設(shè)是錯誤的,即原命題成立。請看下面這個例子:

請你證明:這個餐廳的菜很難吃。
證明:假設(shè)這個餐廳的菜很好吃,那么周末的晚上生意一定很好,然而實(shí)際觀察下來,顧客流量和平時一樣,推出矛盾,所以假設(shè)不成立,即這個餐廳的菜很難吃。

用假設(shè)檢驗的思路,在這個例子中:

原假設(shè):這個餐廳的菜很好吃;
備擇假設(shè):這個餐廳的菜很難吃。

我們把傾向于要證明的結(jié)論設(shè)置為“備擇假設(shè)”,而推理是基于“原假設(shè)”成立進(jìn)行的,推理得出矛盾,說明“原假設(shè)”錯誤,從錯誤的起點(diǎn)推出了錯誤的結(jié)論,因此“原假設(shè)”不成立,這就是假設(shè)檢驗里面說的“拒絕原假設(shè)”。

因此,檢驗其實(shí)很簡單,就是一個是非論證的過程,是單選題,只有兩個選項,選擇其一。

假設(shè)檢驗如何論證

假設(shè)檢驗的論證其實(shí)是固定的,就是基于“小概率事件在一次試驗中幾乎不可能發(fā)生”,通常,我們得到的矛盾就在于:

通過計算統(tǒng)計量,發(fā)現(xiàn)通過一次試驗得到這個統(tǒng)計量是一個“小概率事件”,“小概率事件”在一次試驗中,居然發(fā)生了,我們就認(rèn)為這是很“詭異”的,一定是之前的某個環(huán)節(jié)出了問題,即“原假設(shè)”不成立,于是拒絕“原假設(shè)”,即證明了“備擇假設(shè)”成立。

為什么叫“卡方檢驗”,何為“卡方檢驗”?

“卡方分布”(也寫作 “(chi^2 分布)”)是統(tǒng)計學(xué)領(lǐng)域的三大分布之一,另外兩個分布是“(t) 分布”與“(F) 分布”,這些分布都是由正態(tài)分布推導(dǎo)出來的,可以認(rèn)為它們是我們熟知的分布,因為它們可以取哪些值,以及取這些值的概率都是完全弄清楚了的。

統(tǒng)計學(xué)的研究任務(wù)是通過樣本研究總體,因為我們無法把所有的總體都做一次測試,一般可行的做法就是從總體中抽取一部分?jǐn)?shù)據(jù),根據(jù)對這一部分?jǐn)?shù)據(jù)的研究,推測總體的一些性質(zhì)。

而“三大分布”就是我們研究樣本的時候選取的參照物。一般我們研究的思路是這樣的:如果經(jīng)過分析,得出待研究的樣本符合這些我們已知的分布之一,因為三大分布是被我們的統(tǒng)計學(xué)家完全研究透了的,可以認(rèn)為是無比正確的,就可以通過查表得到這些分布的信息,進(jìn)而得到樣本的一些性質(zhì),幫助我們決策。

這里舉一個例子,比如你是一個面試官,你手上掌握著“北京”、“上海”、“廣州”三個省市的人才信息庫(相當(dāng)于上面我們說的統(tǒng)計學(xué)的三大分布),來了一個面試者,從簡歷中得知這個人來自“北京”,那么我們就可以直接從“北京”市的人才信息庫中查閱到他的詳細(xì)履歷,掌握到他更全面的信息。

做假設(shè)檢驗的時候,我們也是類似的思路,我們需要利用總體的樣本構(gòu)造出合適的統(tǒng)計量(或樞軸量),并使其服從或近似地服從已知的確定分布,這樣我們就可以查閱這些確定分布的相關(guān)信息,得到待研究樣本所反映出來的總體的一些性質(zhì)。

上面說到了“統(tǒng)計量”和“樞軸量”,下面簡單談一談。

統(tǒng)計量:不含總體分布未知參數(shù)的函數(shù)稱為樣本的統(tǒng)計量。

統(tǒng)計量經(jīng)常作為一個樣本的代表,例如平均數(shù)、眾數(shù)、最大值、最小值,統(tǒng)計量由多個數(shù)映射成一個數(shù)。

樞軸量:僅含有一個未知參數(shù),并且分布已知的樣本的函數(shù),稱為樞軸量。

樞軸量的思想其實(shí)就是解方程,或者說解不等式,這一部分非常重要的理論基礎(chǔ)是“抽樣分布定理”。如果忘記了的朋友們一定要翻翻以前的教程,“抽樣分布定理”是非常重要的。根據(jù)抽樣分布定理,我們經(jīng)常是這樣用的:樣本的某個含有未知參數(shù)的函數(shù)符合某個已知分布,已知分布可以查表,因此未知參數(shù)的性質(zhì)就知道了。求“置信區(qū)間”與做“假設(shè)檢驗”通常就是這樣的思路。

卡方檢驗的統(tǒng)計量

[chi^2=sumsum frac{(f_o-f_e)^2}{f_e}
]

說明:(f_o) 是觀測頻數(shù)(實(shí)際值),(f_e) 是期望頻數(shù)(可以認(rèn)為是理論值),期望頻數(shù)的計算公式我們馬上會介紹到。這個統(tǒng)計量服從自由度為 ((r-1)(c-1)) 的 (chi^2) 分布,(r) 為行數(shù),(c) 為列數(shù)。

這里一定要舉例才能說清楚了:

以下內(nèi)容摘抄自中國人民大學(xué)龍永紅主編《概率論與數(shù)理統(tǒng)計》(第三版)P190 “獨(dú)立性檢驗”一節(jié)例 5.32。

研究青少年行為與家庭狀況的關(guān)系,調(diào)查結(jié)果如下:

青少年行為家庭狀況 離異家庭 和睦家庭 合計
犯罪 (178) (272) (450)
未犯罪 (38) (502) (540)
合計 (216) (774) (990)

分析:“青少年行為”是離散型變量,有“犯罪”與“未犯罪”兩個取值;“家庭狀況”是也離散型變量,有“離異家庭”與“和睦家庭”兩個取值,從直覺上,我們認(rèn)為它們是相關(guān)的。因此

第 1 步:建立統(tǒng)計假設(shè)。

原假設(shè):“青少年行為”與“家庭狀況”獨(dú)立。
備擇假設(shè):“青少年行為”與“家庭狀況”不獨(dú)立。

第 2 步:計算期望頻數(shù)與檢驗統(tǒng)計量。

要計算出檢驗統(tǒng)計量,關(guān)鍵是計算出期望頻數(shù)。我們之前說到了,假設(shè)檢驗是基于原假設(shè)進(jìn)行論證,因此,我們的期望頻數(shù)應(yīng)該是基于【“青少年行為”與“家庭狀況”獨(dú)立】得到的。因此有:

兩個類別的交叉項的概率可以根據(jù)獨(dú)立事件的概率乘法公式得到。具體是這樣做的,從上面那張表中:

一行一行看,這 (990) 個青少年里,(P(犯罪)=cfrac{450}{990}),(P(未犯罪)=cfrac{540}{990});
一列一列看,這 (990) 個青少年里,(P(離異家庭)=cfrac{216}{990}),(P(和睦家庭)=cfrac{774}{990});

在【“青少年行為”與“家庭狀況”獨(dú)立】這個假設(shè)下有:

[P(“犯罪”并且“離異家庭”) = P(犯罪) imes P(離異家庭) = cfrac{450}{990} imes cfrac{216}{990}
]

[P(“犯罪”并且“和睦家庭”) = P(犯罪) imes P(和睦家庭) = cfrac{450}{990} imes cfrac{774}{990}
]

[P(“未犯罪”并且“離異家庭”) = P(犯罪) imes P(離異家庭) = cfrac{540}{990} imes cfrac{216}{990}
]

[P(“未犯罪”并且“離異家庭”) = P(犯罪) imes P(離異家庭) = cfrac{540}{990} imes cfrac{774}{990}
]

我們要計算期望頻數(shù),就把上面這 (4) 個概率分別乘以樣本總數(shù) (990) 就可以了:

青少年行為家庭狀況 離異家庭 和睦家庭
犯罪 (450 imes frac{216}{990} approx 98.18) (450 imes frac{774}{990} approx 351.82)
未犯罪 (540 imes frac{216}{990} approx 117.82) (540 imes frac{774}{990} approx 422.18)

下面將每個單元格的 (frac{(f_o-f_e)^2}{f_e}) 加起來,就可以得到 (chi^2) 統(tǒng)計量:

[egin{aligned}
chi^2 &= cfrac{(178-98.18)^2}{98.18} + cfrac{(272-351.82)^2}{351.82} + cfrac{(38-117.82)^2}{117.82} + cfrac{(502-422.18)^2}{422.18} \
& approx 64.89 + 18.11 + 54.06 + 15.09 \
& approx 152.15
end{aligned}
]

上面說服從自由度為 ((r-1)(c-1)) 的 (chi^2) 分布,(r) 為行數(shù),(c) 為列數(shù),即服從 ((2-1) imes (2-1) = 1) 的 (chi^2) 分布,接下來,我們就要看得到這個統(tǒng)計量的概率有多大:

from scipy import stats
import seaborn as sns
import matplotlib.pyplot as plt


samples = stats.chi2.rvs(size=10000, df=1)
sns.distplot(samples)
plt.title('$chi^2$,df=1')
plt.show()

得到圖像如下:

可以看到,(152.15) 都不在能圖像顯示到的范圍之內(nèi),說明這個概率很低。下面我們或者使用 Python 查一下,這個概率是多少:

from scipy import stats


stats.chi2.pdf(152.15, df=1)

得到:(2.956796099836173e-35),確實(shí)是一個幾乎為 (0) 的數(shù)。這說明了什么呢?

說明了,在我們的假設(shè)【“青少年行為”與“家庭狀況”獨(dú)立】下,得到這組觀測數(shù)據(jù)的概率很低很低,基于小概率事件在一次試驗中幾乎不會發(fā)生,但它卻發(fā)生了,就證明了我們的“原假設(shè)”是不正確的,即有充分證據(jù)決絕“原假設(shè)”。(這一部分有點(diǎn)繞,其實(shí)很簡單,多看幾遍就非常清楚了。)

其實(shí)到這里,我們對卡方檢驗就已經(jīng)介紹完了,是不是覺得很簡單。但是在實(shí)際操作的過程中,我們還會引入 (p) 值,很多統(tǒng)計軟件也會幫我們計算出 (p) 值,這個 (p) 值是個什么鬼呢?下面先給出我的結(jié)論:

什么是 (p) 值?

(p) 值統(tǒng)一了假設(shè)檢驗的比較標(biāo)準(zhǔn),把計算統(tǒng)計量的概率大小統(tǒng)一變成計算 (p) 值,如果這個 (p) 值小于一個預(yù)先設(shè)定好的數(shù),我們稱之為“顯著性水平”,用 (alpha) 表示,一般取 (alpha = 0.05),則拒絕原假設(shè),如果 (p) 值大于“顯著性水平”,則說明沒有充分證據(jù)拒絕原假設(shè)。使用 (p) 值進(jìn)行假設(shè)檢驗的時候,會更便利。因此,使用 (p) 值進(jìn)行假設(shè)檢驗的評判標(biāo)準(zhǔn)就只要一個,就是記住這句話“小拒大接”,即比 (0.05) 小,就拒絕“原假設(shè)”,比 (0.05) 大,結(jié)論是“沒有理由拒絕原假設(shè)”。

特別說明:這個結(jié)論是我根據(jù)對 (p) 值的理解自己總結(jié)的,是人話,但不一定準(zhǔn)確。

(p) 值在不同的檢驗問題中,計算方法會不同,在這里,我們就以卡方檢驗為例,如果我們計算出來的統(tǒng)計量的值為 (1),那么看圖:

這個時候,統(tǒng)計量取 (1) 的概率就很高了,從圖中可以看出大于 (0.2)。我們作如下分析:

(chi^2) 分布長尾在右邊,是個右偏分布,在 (0) 附近的概率是非常高的,我們要找一個臨界值,如果統(tǒng)計量取到這個臨界值,以及這個臨界值的右邊,我們認(rèn)為這樣的事情發(fā)生的概率是很低的,這里就要借助累計概率和分位點(diǎn)的概念;

(說明:累計積分和分位點(diǎn)的概念都是十分重要的,在這里就不贅述了,讀者可以查閱相關(guān)統(tǒng)計學(xué)的教材。)

我們認(rèn)為,在 (chi^2) 分布,如果一個點(diǎn)到右邊無窮的累計積分小于“顯著性水平”,我們就認(rèn)為這個點(diǎn)以及右邊所有的點(diǎn)的取值,都是小概率事件。

于是,對于卡方檢驗而言,得到的統(tǒng)計量,我們可以計算這個從統(tǒng)計量到正無窮的積分,如果這個積分值小于“顯著性水平”,即認(rèn)為這個統(tǒng)計量的概率一定在“顯著性水平”所確定的臨界點(diǎn)的右邊,即它是比“小概率事件”發(fā)生的概率還小的“小概率事件”

下面,我們自己寫一個函數(shù)來實(shí)現(xiàn)卡方檢驗相關(guān)的計算,實(shí)現(xiàn)和 scipy 軟件包提供的卡方檢驗同樣的效果。

from scipy import stats
from scipy.stats import chi2_contingency


def custom_chi2_contingency(observed):
    """
    自己編寫的卡方檢驗的函數(shù),返回
    """
    # 每一行求和
    row = observed.sum(axis=1)
    # 每一列求和
    col = observed.sum(axis=0)
    # 總數(shù)求和
    all_sum = observed.sum()

    # meshgrid 生成網(wǎng)格
    x1, x2 = np.meshgrid(col, row)
    # 期望頻數(shù)
    expected_count = x1 * x2 / all_sum
    # 統(tǒng)計量,即卡方值
    chi2 = ((observed - expected_count)**2 / expected_count).sum()
    # 自由度
    df = (len(row) - 1) * (len(col) - 1)
    # 計算 p 值,這里用到了卡方分布的概率積累函數(shù),
    # 因為這個 cdf 是計算從左邊到這點(diǎn)的累計積分,因此用 1 減它
    p = 1 - stats.chi2.cdf(chi2, df=df)
    return chi2, p, df, expected_count

下面驗證自定義函數(shù)的正確性:

obs = np.array([[178, 272], [38, 502]])
result1 = custom_chi2_contingency(obs)
result2 = chi2_contingency(obs)
print('自定義卡方檢驗的函數(shù)返回:')
print(result1)
print()
print('scipy 提供的卡方檢驗返回:')
print(result2)

顯示:

自定義卡方檢驗的函數(shù)返回:
(152.16271892047084, 0.0, 1, array([[ 98.18181818, 351.81818182],
       [117.81818182, 422.18181818]]))

scipy 提供的卡方檢驗返回:
(150.2623232486362, 1.5192261812214016e-34, 1, array([[ 98.18181818, 351.81818182],
       [117.81818182, 422.18181818]]))

總結(jié)

以上是生活随笔為你收集整理的白话“卡方检验”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。