机器学习基础--卡方检验
卡方檢驗
在統計分析階段的假設檢驗中提及到了卡方檢驗,是針對總體方差的檢驗
卡方檢驗的主要用途
- 兩個率或兩個構成比比較的卡方檢驗
- 多個率或多個構成比比價的卡方檢驗
- 分類資料的相關分析
卡方檢驗的基本原理
H0:觀察頻數與期望頻數沒有差別
其原理為考察基于H0的理論頻數分布和實際頻數分布間的差異大小,據此求出相應的P值。
卡方統計量的理解:
- 當觀察頻數與期望頻數完全一致時,卡方值為0
- 觀察頻數與期望頻數越接近,兩者之間的差異越小,卡方值越小
- 觀察頻數與期望頻數差異越大,卡方值越大
- 卡方值的大小也和自由度有關
卡方檢驗的statsmodels實現
import pandas as pd import statsmodels.stats.contingency_tables as tbl# 讀入文件 home = pd.read_excel("home_income.xlsx") home.head()# 抽取需要的數據 pd.crosstab(home.Ts9,home.O1)# 觀察相應的交叉表# 考察不同收入級別的家庭其轎車擁有率 table = tbl.Table(pd.crosstab(home.Ts9,home.O1))res = table.test_nominal_association() # 卡方檢驗 print(f"卡方值:{res.statistic}" ) print(f"自由度:{res.df}") print(f"P值:{res.pvalue}") # 格式化后的P值,如果結果為0.0000001,會格式化為0配對卡方檢驗
McNemar's檢驗(配對卡方檢驗)用于分析兩個相關率的變化是否有統計學意義
分析思路
- H0:兩種方法陽性檢出率無差別,即b單元格=c單元格
- 對同一個體,分別有兩次不同的測量,并最終構成了兩組數據,因此研究框架是自身配對設計
- 求出各對的差值,然后考察樣本中差值的分布是否按照H0假設的情況對稱分布
- 主對角線上的樣本,兩種檢驗方法的結論相同
- 非主對角線上的單元格才攜帶檢驗方法的差異信息
- 根據H0得到b、c兩格的理論數均為(b+c)/2,對應的配對檢驗統計量,經過化簡后是:
x2=(b?c)2/(b+c)
代碼實現
statsmodels.stats.contingency_tables中常用的配對卡方的分析使用:
- tbl.SquareTable 用于分析行列變量類別相同的對稱結構方表(近似結果)
- tbl.mcnemar 用于分析配對四格表(確切概率結果)
相關分析概述
什么是相關分析
相關分析是用于考察變量間數量關系密切程度的分析方法。例如:身高和體重的關系。幾乎所有涉及到多個變量的假設檢驗方法,都可以看做這些變量間的相關性分析。
- t檢驗:分組變量與連續因變量之間的相關分析
- 卡方檢驗:行、列分類變量間的關聯性分析
- 聚類分析:案例間的關聯性分析
- 多變量回歸:因變量和一組自變量的關聯性分析
各種相關系數
- 連續 vs 連續:Pearson相關系數(雙變量正態分布);Spearman秩相關系數(不符合雙變量正態分布)
- 有序 vs 有序:Gamma系數、肯德爾相關系數等(例如:醫生級別與治療效果的相關關系);也可使用Spearman秩相關系數
- 無序 vs 無序:列聯系數等(例如:民族與職業的關系)
- 基于卡方統計量進一步推導而來
- 無方向 0~1
- OR/RR:一類特殊的關聯強度指標
- 連續 vs 分類:Eta(本質上是方差解釋度,即連續變量的離散度有多少可以被另外的分類指標所解釋)
相關系數的計算原理
常用術語
- 直線相關:兩變量呈現線性共同增大,或呈線性一增一減的情況
- 曲線相關:兩變量存在相關趨勢,但是為各種可能的曲線趨勢
- 正相關與負相關:A增大的同時B增大,則為正相關;A增大的同時B減小,則為負相關。
- 完全相關:完全正相關,完全負相關
- 零相關:自變量的變化不會引起因變量的變化。
Pearson相關系數
公式理解:標準差代表變量的離散程度(信息量大小);
協方差Cov(X,Y)代表各變量共同攜帶的信息量大小;
相關系數代表兩個變量總信息量中的共同部分占比
-
相關系數ρ的取值范圍:-1 < ρ < 1
-
其正負反映了相關的方向
-
|ρ|越接近于1,說明相關性越好
-
|ρ|越接近于0,說明相關性越差
-
Pearson相關系數的檢驗:
-
H0:兩變量間無直線相關關系,ρ=0
-
檢驗方法:t檢驗
-
Pearson相關系數的適用條件:
-
必須是線性相關的情形(可以先繪制散點圖觀察一下)
-
針對兩連續變量的相關系數
-
極端值對相關系數的計算影響極大,因此要慎重考慮和使用
-
要求相應的變量呈雙變量正態分布(近似也可以)
Spearman秩相關系數
- 不服從正態分布的變量、分類或等級變量之間的關聯性可采用Spearman秩相關系數
- Spearman提出首先對數據做秩變換,然后再計算兩組秩間的直線相關系數(秩變換分析思想)
相關分析的Python實現
相關分析作為比較簡單的方法,在statsmodels中并未做進一步的完善,因此主要使用scipy實現。
-
兩個連續變量,符合雙變量正態分布:Pearson相關系數
scipy.stats.pearsonr(a, b) -
兩個連續變量,不符合雙變量正態分布:Spearman秩相關系數
scipy.stats.spearmanr(a, b) -
兩個有序變量:Kendall’s Tau; spearman秩相關系數
scipy.stats.kendalltua(a, b)
scipy.stats.spearmanr(a, b)
RR與OR
RR(Relative Risk)——相對危險度
- 表示兩種情況下發病密度或者說發病概率之比
- Pt:實驗組人群反應陽性概率
- Pc:對照組人群反應陽性概率
- 如果RR > 1,說明相應的自變量取值增加,會導致個體發病/死亡風險增加若干倍,例如:吸煙者的發病概率是非吸煙者的5倍
- RR在醫學中得到了極為廣泛的應用
- RR的計算條件比較苛刻(觀察周期長)
OR(Odds Ratio)——優勢比
- 為下列兩種比例之比
- 反應陽性人群中實驗因素有無的比例 a/b
- 反應陰性人群中實驗因素有無的比例 c/d
- OR可以間接反映關聯強度,但是理解上比較困難
- 發病概率較低時,OR往往近似的在按照RR的含義進行解釋和使用
代碼實現
scipy.stats.fisher_exact()中可以計算OR值,相應的檢驗P值則是確切概率法的P值
OR, P = ss.fisher_exact(pd.crosstab(home.Ts9, home.O1))
statsmodels的實現方式
import numpy as np import statsmodels.stats.contingency_tables as tbl # 這里必須使用np.array函數進行數組轉換,否則后續計算會出問題 table = tbl.Table2x2(np.array(pd.crosstab(home.Ts9, home.O1))) print(table.oddsratio) # OR值 print(table.summary()) # 匯總信息總結
以上是生活随笔為你收集整理的机器学习基础--卡方检验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【TS】object类型
- 下一篇: 基础算法思想之贪心法