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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

机器学习基础--卡方检验

發布時間:2023/12/29 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习基础--卡方检验 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

卡方檢驗

在統計分析階段的假設檢驗中提及到了卡方檢驗,是針對總體方差的檢驗

卡方檢驗的主要用途

  • 兩個率或兩個構成比比較的卡方檢驗
  • 多個率或多個構成比比價的卡方檢驗
  • 分類資料的相關分析

卡方檢驗的基本原理

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 用于分析配對四格表(確切概率結果)
import numpy as np import pandas as pd import statsmodels.stats.contingency_tables as tbltable = tbl.SquareTable(np.array([[56,35],[21,28]])) table# 輸出匯總結果 print(table.summary())# 只輸出配對卡方檢驗的結果 print(table.symmetry())table = tbl.mcnemar(pd.DataFrame([[56,35],[21,28]])) table.pvalue

相關分析概述

什么是相關分析

相關分析是用于考察變量間數量關系密切程度的分析方法。例如:身高和體重的關系。幾乎所有涉及到多個變量的假設檢驗方法,都可以看做這些變量間的相關性分析。

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

import pandas as pd from scipy import stats as ss# 讀取數據 home = pd.read_excel("home_income.xlsx") home.head()# 查看兩個分類是否有線性關系(散點圖) home.plot.scatter("s3","index1") # 并不能直觀的看出# 年齡分組,重新看兩個變量是否為線性關系 home.groupby("s3").index1.mean().plot()# 返回皮爾遜相關系數,和P值 ss.pearsonr(home.s3,home.index1)# 繪制交叉表觀察 pd.crosstab(home.Qa3,home.Qa4)ss.kendalltau(home.Qa3,home.Qa4) # 肯德爾相關系數ss.spearmanr(home.Qa3,home.Qa4) # 斯皮爾曼相關系數

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()) # 匯總信息

總結

以上是生活随笔為你收集整理的机器学习基础--卡方检验的全部內容,希望文章能夠幫你解決所遇到的問題。

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