python 卡方檢驗專題及常見問題 - CSDN

2021-01-07 CSDN技術社區

      卡方檢驗可以用於判斷兩個類別變量的相關性是否顯著。在分類的應用場景中可以用卡方檢驗選擇特徵,特徵與目標變量的相關性越顯著說明特徵越重要,預測力越強。

      一、先簡單介紹一下卡方檢驗的步驟。假設y為目標變量,取值為好和壞,x為特徵變量取值為高、中、低。

      1、先計算y和x的實際值列聯表,如下圖:

      2、假設y和x不相關,總體y中壞佔比=254/1831=13.87%。根據原假設,計算出假設值列聯表:

      3、計算卡方統計量:

      其中,A是實際值,T是假設值,卡方分布的自由度=(x屬性個數-1)*(y屬性個數-1)=(3-1)*(2-1)=2。

      上面計算的卡方值=45.41,查卡方分布表可知P(卡方值>45.41)<<0.05,所以有理由拒絕y和x不相關的原假設,即y和x有較強的相關性。

       4、對於同一分布,卡方值越大,P就越小,但是不同特徵的屬性個數可能不一樣,從而導致每個特徵得到的卡方分布的自由度不同,因此在用卡方檢驗選擇特徵時,使用P值可能更準確,P值越小,特徵越重要。但總體而言,P值和卡方值選擇的特徵差別不是很大,下面會用實例說明。

      二、上面簡單的介紹了卡方檢驗的原理,下面看如何實現卡方檢驗選擇特徵。  

      1、先用python展示如何進行卡方檢驗,用上面所舉的例子。

# python3.6
import numpy as np
from scipy.stats import chi2_contingency

contingency_table = np.array([[631,364,582], [154,55,45]])
Chi2, P, degree_of_freedom, contingency_table0 = chi2_contingency(contingency_table)

其中,contingency_table是y和x實際值列聯表,得到以下結果。

卡方值Chi2

Chi2
45.40836170235667

P值

P
1.37942959775444e-10

自由度degree_of_freedom

degree_of_freedom
2

假設值列聯表contingency_table0

contingency_table0
array([[676.10322228, 360.87547788, 540.02129984],
[108.89677772, 58.12452212, 86.97870016]])

      2、python實現卡方檢驗的特徵選擇。

      (1)加載模塊

import pandas as pdfrom scipy.stats import chi2_contingency

      (2)單變量卡方檢驗,y為目標變量,x為特徵變量

def chi2Test(y, x): contingency_table = pd.crosstab(y, x) Chi2, P, degree_of_freedom, _ = chi2_contingency(contingency_table) return Chi2, P, degree_of_freedom

      (3)批量卡方檢驗,其中df是分箱後數據框,即連續型變量要分段處理(Python實現變量分箱及應用);Kvar是主鍵,比如客戶編號等;Yvar是目標變量。輸出的chi2Test_df包含卡方值、P值、自由度。

def chi2TestBatch(df, Kvar, Yvar): df_Xvar = df.drop([Kvar, Yvar], axis=1) chi2list = [] Plist = [] degree_of_freedomlist = [] for col in df_Xvar.columns: Chi2, P, degree_of_freedom = chi2Test(df[Yvar], df[col]) chi2list.append(Chi2) Plist.append(P) degree_of_freedomlist.append(degree_of_freedom) names = list(df_Xvar.columns) chi2Test_df = pd.DataFrame({'Var': names, 'Chi2': chi2list, 'P': Plist, 'degree_of_freedom': degree_of_freedomlist}, columns=['Var', 'Chi2', 'P', 'degree_of_freedom']) return chi2Test_df

      用分箱後的數據運行上述代碼,看看輸出結果,train_bin是分箱後的數據框,user_id是客戶編號,y是目標變量。

chi2Test_df = chi2TestBatch(train_bin, 'user_id', 'y')

      查看chi2Test_df,按P值從小到大排序,如下圖。可以看出,一般來說卡方值越大,P值越小,但不絕對,如x_075的卡方值比x_141的大,但P值也大,這是因為x_141得到的卡方分布的自由度更小。但總體而言,根據卡方值和P值選擇的特徵區別很小。

      最後,將卡方檢驗得到的變量重要性排序與IV值(Python計算IV值)得到的變量重要性排序進行比較,看有什麼不同。從下圖可以看出,兩種方法得到的排序有些差異,但差異不算太大,所以在實際應用中可以選擇多種方法從不同角度對變量的重要性進行評估。

更多內容:

R語言實現變量分箱及應用

R語言計算IV值

R 語言計算 woe 及應用

相關焦點

  • python卡方檢驗專題及常見問題 - CSDN
    大家好,我是老表~分類數據的擬合優度檢驗前面我已經寫了關於幾種常見的假設檢驗內容,而>檢驗主要是測試樣本分類數據的分布是否符合預期分布。所以處理分類變量的檢驗是基於變量計數,而不是變量本身的實際值。獨立性檢驗是統計學的另一種檢驗方式,它是根據次數判斷兩類變量彼此相關或相互獨立的假設檢驗。
  • python卡方分析專題及常見問題 - CSDN
    推論統計分析2.1 問題是什麼?問題是: 樣本數據是否滿足總體排放值要求?x變量 :類別變量(排放值), Y結果為數值變量 (排放平均值) ,排除卡方檢驗,則使用方差分析或者z/t檢驗總體組中標準差s未知 ,無法滿足方差齊性,故排除方差分析,只剩下z/t檢驗 樣本大小為n=10<30 ,樣本容量為小樣本,且呈正態分布故排除z檢驗 故使用t檢驗結合只有一組樣本數據,故使用單樣本t檢驗
  • python 卡方專題及常見問題 - CSDN
    大家好,我是老表~分類數據的擬合優度檢驗前面我已經寫了關於幾種常見的假設檢驗內容,而>檢驗主要是測試樣本分類數據的分布是否符合預期分布。所以處理分類變量的檢驗是基於變量計數,而不是變量本身的實際值。獨立性檢驗是統計學的另一種檢驗方式,它是根據次數判斷兩類變量彼此相關或相互獨立的假設檢驗。
  • arma python 檢驗專題及常見問題 - CSDN
    (4)檢驗模型的有效性。如果模型不通過檢驗,轉向步驟(2),重新選擇模型再擬合。(5)模型優化。如果擬合模型通過檢驗,仍然轉向不走(2),充分考慮各種情況,建立多個擬合模型,從所有通過檢驗的擬合模型中選擇最優模型。(6)利用擬合模型,預測序列的將來走勢。
  • python平穩性檢驗專題及常見問題 - CSDN
    (4)檢驗模型的有效性。如果模型不通過檢驗,轉向步驟(2),重新選擇模型再擬合。(5)模型優化。如果擬合模型通過檢驗,仍然轉向不走(2),充分考慮各種情況,建立多個擬合模型,從所有通過檢驗的擬合模型中選擇最優模型。(6)利用擬合模型,預測序列的將來走勢。
  • 方差檢驗專題及常見問題 - CSDN
    spss–差異分析差異研究的目的在於比較兩組數據或多組數據之間的差異,通常包括以下幾類分析方法,分別是:1:T檢驗;2:方差分析;3:卡方檢驗;
  • python時間序列平穩性檢驗專題及常見問題 - CSDN
    在做時間序列分析時,我們經常要對時間序列進行平穩性檢驗,而我們常用的軟體是SPSS或SAS,但實際上python也可以用來做平穩性檢驗,而且效果也非常好,今天筆者就講解一下如何用python來做時間序列的平穩性檢驗。首先我們還是來簡單介紹一下平穩性檢驗的相關概念。圖1.
  • R與Python之基本統計分析(四) ---- 卡方檢驗
    這一章我們就要正式開始介紹卡方檢驗了。在 R 中我們同樣參照了 Arthritis 資料庫。我們首先進行療效和治療方案的卡方檢驗。我們使用函數 chisq.test(),結果見圖 1,我們可以看到,X-squared = 13.055, p-value = 0.001463。
  • f檢驗 matlab專題及常見問題 - CSDN
    Mann-Kendall顯著性檢驗工具:1、MATLAB2、DPS3、示例數據(數據採用的是魏鳳英老師《現代氣候統計診斷預測技術》中的1900-1990年上海市的年平均氣溫數據)Mann-Kendall原理可詳細參考https://wenku.baidu.com/view/6fd3fe5b6edb6f1afe001f2f.html
  • 白噪聲檢驗專題及常見問題 - CSDN
    卡方檢驗基於此強大的統計結果: k個相同的標準正態隨機變量的平方和是具有k個自由度的卡方分布隨機變量。The test statistic of the Ljung-Box test is calculated as follows, and it is also Chi-square(k) distributed: Ljung-Box檢驗在Box-Pierce檢驗的基礎上進行了改進,從而獲得了一個檢驗統計量,其分布比Q統計量更接近卡方分布。
  • datatype在python專題及常見問題 - CSDN
    title category layout tags date python教程之3基本數據類型 pythonpython的字串列表有2種取值順序:從左到右索引默認0開始的,最大範圍是字符串長度少1從右到左索引默認-1開始的,最大範圍是字符串開頭如果要實現從字符串中獲取一段子字符串的話,可以使用變量 [頭下標:尾下標],就可以截取相應的字符串,其中下標是從 0 開始算起,可以是正數或負數,下標可以為空表示取到頭或尾。
  • 多元線性回歸t檢驗專題及常見問題 - CSDN
    1.t檢驗t檢驗是對單個變量係數的顯著性檢驗,一般看p值; 如果p值小於0.05表示該自變量對因變量解釋性很強。4.R方擬合優度檢驗   R平方也有其局限性:R平方隨著自變量的增加會變大,R平方和樣本量是有關係的。因此,我們要到R平方進行修正。
  • t檢驗回歸方程專題及常見問題 - CSDN
    通過最小二乘法擬合好模型的參數後,一個重要的問題就是:這個模型真的「好"嗎?滿足什麼條件、什麼性質的模型可以稱作一個「好模型」呢?2. 單參數顯著性檢驗——t檢驗2.1 問題的提出首先,我們應該想到的問題是,在一個多元回歸模型中,是不是每一個引入的自變量對因變量都有實實在在的影響呢?
  • 卡方檢驗、Kappa檢驗和McNemar檢驗的異同
    在文中提到過"該案例也可以嘗試使用Kappa一致性檢驗方法",但是並沒有講為什麼可以用Kappa一致性,以及它與McNemar檢驗的區別。在SPSS中進行交叉分析的過程中,很多人分不清Pearson卡方檢驗、Kappa檢驗和McNemar檢驗。因此,本文接下來將對它們分別進行解釋和區分。本文將用一個具體的案例來區分卡方檢驗、Kappa檢驗和麥克尼馬爾檢驗之間的異同。
  • 卡方合併檢驗 vs 卡方分割檢驗
    我們用兩個問到的例子來分別介紹卡方合併檢驗和卡方分割檢驗的SPSS操作。
  • 卡方檢驗多種用途總結
    卡方優度檢驗卡方優度檢驗,是對一列數據進行統計檢驗,分析單個分類變量實際觀測的比例與期望比例是否一致。案例:當前收集了100份數據用於研究,其中有48名男性,52位女性。操作步驟:(1)卡方擬合優度檢驗支持兩種數據格式:整理後的加權數據 或 原始數據。處理好數據後,上傳數據到SPSSAU,開始分析。(2)選擇【實驗/醫學研究】→【卡方優度檢驗】。
  • Python - python爬取新聞專題及常見問題 - CSDN
    然後使用python的第三方框架newspaper3k,直接通過給指定的連結,然後返回新聞文本(當然也可通過BeautifulSoup切出文本)二,過程如下:1.選定網址   新浪新聞 https://news.sina.com.cn/roll/#pageid=153&lid=2509&k=&num=50&page=1
  • 卡方檢驗的理解
    卡方檢驗的理論知識卡方檢驗定義:卡方檢驗是假設檢驗的一種方法
  • 卡方檢驗的多種應用場景總結
    這類分析方法就被稱為卡方檢驗。本文將從概念、方法分類、每個方法的使用場景及案例分析對卡方檢驗進行介紹。 方法分類與T檢驗一樣,卡方檢驗也可細分為:分析卡方優度檢驗、交叉表卡方、配對卡方。04.交叉表卡方卡方優度檢驗是對一個分類變量的檢驗,在實際研究中,研究兩組分類變量的關係更加常見,例如想要了解閱讀習慣與學歷是否有關,此時可使用交叉卡方。案例:分析不同性別學生對購買理財產品的意願是否有差異。
  • 卡方檢驗的多組比較
    SAS在ANOVA中可以直接指定post hoc分析,但對於卡方檢驗,SAS沒有自帶程序可以直接處理,這期講一下有哪些比較實用的方法與代碼~方法1:挨個做每兩組的卡方檢驗        存在的問題是多重比較,會增大Type I Error,需要校正p值