卡方 python_Python评分卡建模—卡方分箱
原標(biāo)題:Python評分卡建?!ǚ椒窒?/p>
今天主要給大家講講卡方分箱算法ChiMerge。先給大家介紹一下經(jīng)常被提到的卡方分布和卡方檢驗是什么。
一、卡方分布
卡方分布(chi-square distribution, χ2-distribution)是概率統(tǒng)計里常用的一種概率分布,也是統(tǒng)計推斷里應(yīng)用最廣泛的概率分布之一,在假設(shè)檢驗與置信區(qū)間的計算中經(jīng)常能見到卡方分布的身影。
卡方分布的定義如下:
若k個獨立的隨機變量Z1, Z2,..., Zk 滿足標(biāo)準(zhǔn)正態(tài)分布 N(0,1) , 則這k個隨機變量的平方和:
為服從自由度為k的卡方分布,記作:
或者記作
。
二、卡方檢驗
χ2檢驗是以χ2分布為基礎(chǔ)的一種假設(shè)檢驗方法,主要用于分類變量之間的獨立性檢驗。
其基本思想是根據(jù)樣本數(shù)據(jù)推斷總體的分布與期望分布是否有顯著性差異,或者推斷兩個分類變量是否相關(guān)或者獨立。
一般可以設(shè)原假設(shè)為 :觀察頻數(shù)與期望頻數(shù)沒有差異,或者兩個變量相互獨立不相關(guān)。
實際應(yīng)用中,我們先假設(shè)原假設(shè)成立,計算出卡方的值,卡方表示觀察值與理論值間的偏離程度。
卡方值的計算公式為:
其中A為實際頻數(shù),E為期望頻數(shù)??ǚ街涤糜诤饬繉嶋H值與理論值的差異程度,這也是卡方檢驗的核心思想。
卡方值包含了以下兩個信息:
1.實際值與理論值偏差的絕對大小。 2.差異程度與理論值的相對大小。
上述計算的卡方值服從卡方分布。根據(jù)卡方分布,卡方統(tǒng)計量以及自由度,可以確定在原假設(shè)成立的情況下獲得當(dāng)前統(tǒng)計量以及更極端情況的概率p。如果p很小,說明觀察值與理論值的偏離程度大,應(yīng)該拒絕原假設(shè)。否則不能拒絕原假設(shè)。
三、卡方檢驗實例
某醫(yī)院對某種病癥的患者使用了A,B兩種不同的療法,結(jié)果如表1,問兩種療法有無差別?
表1 兩種療法治療卵巢癌的療效比較
組別
有效
無效
合計
有效率(%)
A組
19
24
43
44.2
B組
34
10
44
77.3
合計
53
34
87
60.9
可以計算出各格內(nèi)的期望頻數(shù)。
第1行1列: 43×53/87=26.2
第1行2列: 43×34/87=16.8
第2行1列: 44×53/87=26.8
第2行2列: 4×34/87=17.2
先建立原假設(shè):A、B兩種療法沒有區(qū)別。根據(jù)卡方值的計算公式,計算:
算得卡方值=10.01。
得到卡方值以后,接下來需要查詢卡方分布表來判斷p值,從而做出接受或拒絕原假設(shè)的決定。
首先我們明確自由度的概念:自由度k=(行數(shù)-1)*(列數(shù)-1)。 這里k=1.然后看卡方分布的臨界概率表,我們可以用如下代碼生成:
import numpy as np
from scipy.stats import chi2
import pandas as pd
# chi square distribution
percents = [ 0.95, 0.90, 0.5,0.1, 0.05, 0.025, 0.01, 0.005]
df =pd.DataFrame(np.array([chi2.isf(percents, df=i) for i in range(1, 30)]))
df.columns = percents
df.index =df.index+1
pd.set_option('precision', 3)
df
查表自由度為1,p=0.05的卡方值為3.841,而此例卡方值10.01>3.841,因此 p < 0.05,說明原假設(shè)在0.05的顯著性水平下是可以拒絕的。也就是說,原假設(shè)不成立。
四、ChiMerge分箱算法
ChiMerge卡方分箱算法由Kerber于1992提出。
它主要包括兩個階段:初始化階段和自底向上的合并階段。
1.初始化階段:
首先按照屬性值的大小進(jìn)行排序(對于非連續(xù)特征,需要先做數(shù)值轉(zhuǎn)換,比如轉(zhuǎn)為壞人率,然后排序),然后每個屬性值單獨作為一組。
2.合并階段:
(1)對每一對相鄰的組,計算卡方值。
(2)根據(jù)計算的卡方值,對其中最小的一對鄰組合并為一組。
(3)不斷重復(fù)(1),(2)直到計算出的卡方值都不低于事先設(shè)定的閾值,或者分組數(shù)達(dá)到一定的條件(如最小分組數(shù)5,最大分組數(shù)8)。
值得注意的是,小編之前發(fā)現(xiàn)有的實現(xiàn)方法在合并階段,計算的并非相鄰組的卡方值(只考慮在此兩組內(nèi)的樣本,并計算期望頻數(shù)),因為他們用整體樣本來計算此相鄰兩組的期望頻數(shù)。
下圖是著名的鳶尾花數(shù)據(jù)集sepal-length屬性值的分組及相鄰組的卡方值。最左側(cè)是屬性值,中間3列是class的頻數(shù),最右是卡方值。這個分箱是以卡方閾值1.4的結(jié)果??梢钥闯?#xff0c;最小的組為[6.7,7.0),它的卡方值是1.5。
如果進(jìn)一步提高閾值,如設(shè)置為4.6,那么以上分箱還將繼續(xù)合并,最終的分箱如下圖:
卡方分箱除了用閾值來做約束條件,還可以進(jìn)一步的加入分箱數(shù)約束,以及最小箱占比,壞人率約束等。
來源|數(shù)據(jù)分析sas和python返回搜狐,查看更多
責(zé)任編輯:
總結(jié)
以上是生活随笔為你收集整理的卡方 python_Python评分卡建模—卡方分箱的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: swing打地鼠游戏_【亲子早教】9月早
- 下一篇: css a标签去掉下划线_CSS入门知识