什么是分类数据
分类数据是对事物进行分类的结果,其特征是,调查结果虽然用数值表示,但不同数值描述了调查对象的不同特征。
上述的描述,我是认可的。
但是,在有些资料中,举了如下一个例子,对于这个例子,我不认可。
例如,研究青少年家庭状况与行为之间的关系,青少年家庭状况是一个分类数据,可以分为"完整家庭"和"离异家庭",如果调查结果为"1",表示被调查者来自完整家庭,调查结果为"2",则表示被调查者来自离异家庭。青少年行为也可以分为两类,“犯罪"和"未犯罪”,分别用"1"和"2"表示。对这类问题是在汇总数据的基础上进行分析的,数据汇总的结果表现为频数。
上述的例子,用"1"表示"完整家庭",用"2"表示"离异家庭",用"1"表示"犯罪",用"2"表示"未犯罪";存在一个问题,这样"完整家庭"和"离异家庭",“犯罪"和"未犯罪"存在了数字上的大小关系。
(这个例子,也有违背"调查结果虽然用数值表示,但不同数值描述了调查对象的不同特征。”)
应该用One-Hot编码,关于One-Hot编码,可以参考:
卡方统计量
χ2统计量可以用于测定两个分类变量之间的相关程度。
若用f0表示观察值频数(observed frequency),用fe表示期望值频数(expected frequency),则χ2统计量可以写为:
χ2=∑fe(f0−fe)2
χ2统计量具有以下特征:
- χ2≥0,因为χ2是对平方结果的汇总。
- χ2统计量的分布与自由度有关。
- χ2统计量描述了观察值与期望值的接近程度。两者越接近,∣f0−fe∣越小,计算出的χ2值就越小;反之,计算出的χ2值也越大。
- χ2检验正是通过对χ2的计算结果与χ2分布中临界值进行比较,作出是否拒绝原假设的统计决策。
拟合优度检验
方法
拟合优度检验:是用χ2统计量进行统计显著性检验的重要内容之一。是依据总体分布状况,计算出分类变量中各类别的期望频数,与分布的观察频数进行对比,判断期望频数与观察频数是否有显著性差异,从而达到对分类变量进行分析的目的。
案例
1912年4月15日,豪华巨轮泰坦尼克号与冰山相撞沉没。当时船上共有2208人,其中男性1738人,女性470人。海难发生后,幸存者共718人,其中男性374人,女性344人,以α=0.1的显著性水平检验存活状况与性别是否有关。
根据题意,船上共有2208人,幸存者共718人,海难后存活比率为2208718=0.325。如果是否活下来与性别没有关系,那么按照这个比率,在1738位男性中应该存活1738×0.325=565人,在470位女性中应该存活470×0.325=153人。565和153就是期望频数,而实际存活结果就是观察频数。
通过期望频数和观察频数的比较,能够从统计角度作出存活与性别是否有关的判断。
原假设和备择假设为:
H0H1:观察频数与期望频数一致:观察频数与期望频数不一致
对于男性,有:
f0fef0−fe(f0−fe)2fe(f0−fe)2=374=565=−191=36481=64.6
对于女性,有:
f0fef0−fe(f0−fe)2fe(f0−fe)2=344=153=191=36481=238.4
χ2统计量为:
χ2=∑fe(f0−fe)2=303
自由度的计算公式为df=R−1,R为分类变量类型的个数。由于本例中有男女两个性别,故
R=1,自由度为1。
χ0.12(1)=2.706
因为χ2大于χ0.12,故拒绝H0,接受H1,说明存活状况与性别显著相关。
与"两个总体比例之差的检验"的区别
最主要的区别是应用场景的不同
- 在"两个总体比例之差的检验"中,我们检验的是:
- 检验两个总体比例之差为零的假设
- 检验两个总体比例之差某个不为零的常数的假设
- 在"拟合优度检验"中,我们检验的是:
此外:
- 在统计量方面
- "两个总体比例之差的检验"用的是z统计量
- "拟合优度检验"用的是χ2统计量
- 适用条件
- “两个总体比例之差的检验”,需要满足两个总体相互独立,且每个总体内部的数据可以近似为二项分布,且样本量足够大以保证正态分布的近似有效。
- “两个总体比例之差的检验”,数据通常被分组到预定义的类别或区间内。
总结来说,"拟合优度检验"关注的是数据是否符合某一特定的理论分布,而"两个总体比例之差的检验"则聚焦于比较两个独立群体中某个变量比例的差异。
列联分析:独立性检验
拟合优度检验是对一个分类变量的检验,列联分析是对两个分类变量的分析。
什么是列联表
列联表:由两个以上的变量进行交叉分类的频数分布表。
例如,一所大学准备采取一项学生对餐厅改革意见的调查,为了了解男女学生对这一措施的看法,分别抽取了300名男学生和240名女学生进行调查。得到的结果如下:
|
男同学 |
女同学 |
合计 |
赞成 |
90 |
84 |
174 |
中立 |
100 |
56 |
156 |
反对 |
110 |
100 |
210 |
合计 |
300 |
240 |
540 |
除去"合计",一共三行两列,即这是一个3×2的列联表。
独立性检验
方法
独立性检验:分析列联表中行变量和列变量是否相互独立。
一般地,可以采用下式计算任何一个单元中频数的期望值:
fe=nRT×nCT×n=nRT×CT
- fe为给定单元中的频数的期望值
- RT为给定单元所在行的合计
- CT为给定单元所在列的合计
- n为观察值的总个数,即样本量
对自由度的解释:
χ2检验的自由度 = (行数−1)(列数−1)=(R−1)(C−1)
案例
一种原料来自三个不同的地区,原料质量被分为三个不同等级。从这批原料中随机抽取500件进行检验,结果如下:
|
一级 |
二级 |
三级 |
合计 |
甲地区 |
52 |
64 |
24 |
140 |
乙地区 |
60 |
59 |
52 |
171 |
丙地区 |
50 |
65 |
74 |
189 |
合计 |
162 |
188 |
150 |
500 |
要求检验各个地区和原料质量之间是否存在依赖关系(α=0.05)?
原假设和备择假设为:
H0H1:地区和原料等级是独立的(不存在依赖关系):地区和原料等级之间不独立(存在依赖关系)
在第一行,甲地区的合计为140,用500140作为甲地区原料比例的估计量;在第一列,一级原料的合计为162,用500162作为一级原料比例的估计值。
如果地区和原料等级之间是独立的,则可以用下面的公式估计第一个单元(第一行第一列,即甲地区一级)中的期望比例。
令:
AB=样本单位来自甲地区的事件=样本单位属于一级原材料的事件
根据独立性的概率乘法公式,有
P(第一个单元)=P(AB)=P(A)P(B)=(500140)(500162)=0.09072
0.09072是第一个单元的期望比例,其对应的频数期望为:
500×0.09072=45.36
而根据抽样,我们知道甲地区一级的观察频数f0=52。
所以有如下的结果:
f0−fe(f0−fe)2fe(f0−fe)2=6.64=44.09=0.97
对于其他单元,计算方法相同,结果如下:
行 |
列 |
f0 |
fe |
f0−fe |
(f0−fe)2 |
fe(f0−fe)2 |
1 |
1 |
52 |
45.36 |
6.64 |
44.09 |
0.97 |
1 |
2 |
64 |
52.64 |
11.36 |
129.05 |
2.45 |
1 |
3 |
24 |
42.00 |
-18 |
324 |
7.71 |
2 |
1 |
60 |
55.40 |
4.60 |
21.16 |
0.38 |
2 |
2 |
59 |
64.30 |
-5.3 |
28.09 |
0.44 |
2 |
3 |
52 |
51.30 |
0.7 |
0.49 |
0.01 |
3 |
1 |
50 |
61.24 |
-11.24 |
126.34 |
2.06 |
3 |
2 |
65 |
71.06 |
-6.06 |
36.72 |
0.52 |
3 |
3 |
74 |
56.70 |
17.30 |
299.29 |
5.28 |
计算χ2统计量:
χ2=∑fe(f0−fe)2=19.82
χ2的自由度=(R−1)(C−1)=4
令α=0.05,可知χ0.052(4)=9.488。
因为χ2>χ0.052(4),所以故拒绝H0,接受H1,即地区和原料等级之间存在依赖关系,原料的质量受地区的影响。
注意事项
条件百分表的方向
不一定列联分析中的列,就一定在表格的列的位置,也可能因为各种原因,在表格的行的位置。
需要我们具体情况具体分析。
卡方分布的期望值准则
对于χ2分布进行独立性检验,需要样本量必须足够大,特别是每个单元的期望频数不能过小,
否则χ2检验否则会得出错误的结论。
因此,关于小单元的频数通常有两条准则:
- 如果只有两个单元,每个单元的期望频数必须是5或5以上。
- 倘若有两个以上的单元,如果20%的单元期望频数fe小于5,则不能使用χ2检验。
列联表中的相关测量
phi相关系数
φ相关系数:描述2×2列联表数据相关程度最常用的一种相关系数,计算公式为:
φ=nχ2
式中,χ2代表统计量;n为列联表中的总频数,也即样本量。
对于2×2列联表,系数的取值范围在[0,1]之间。
φ越接近1,表示两个变量之间的关系越强;φ越接近0,表示关系越弱。
但是,当列联表的行数或列数大于2时,φ系数会随着行数或列数的增加而变大且没有上限。这时φ系数的含义不易解释。
c相关系数
c相关系数,又称列联相关系数、列联系数,主要用于大于2×2列联表的情况。
c系数的计算公式为:
c=χ2+nχ2
当列联表中的两个变量相互独立时,系数c=1,但它不可能大于1。
c系数的特点是:其可能的最大值依赖于列联表的行数和列数,且随着R和C的增大而增大。
因此,根据不同的行和列计算的列联系数不便于比较,且对总体的分布没有任何要求。
V相关系数
鉴于φ系数无上限,c系数小于1的情况,克莱默提出了V相关系数。
V相关系数的计算公式为:
V=n×min[(R−1),(C−1)]χ2
它的计算以χ2值为基础。
当两个变量相互独立时,V=0;当两个变量完全相关时,V=1。
所以,V的取值在[0,1]。
如果列联表中有一维为2,即min[(R−1),(C−1)]=1,则V值就等于φ值。
案例
在上例中,通过检验可以发现原材料等级和地区之间存在相关关系。那么相关程度具体多高?
分别计算φ系数,c系数和V系数。
由前已知,计算的χ2=19.82,列联表的总频数n=500。这是一个3×3的列联表,min[(R−1),(C−1)]=2,于是:
φcV=nχ2=50019.82=0.199=χ2+nχ2=19.82+50019.82=0.195=n×min[(R−1),(C−1)]χ2=500×219.82=0.141
对于φ而言,当R>2,C>2时,φ值有可能突破1,相比之下,φ=0.199不能认为很大。
对于c而言,其结果必然低于φ值,因为c值总是小于1。本例中c的取值依然很小。
对于V而言,V=0.141则更小。
综合起来可以认为,虽然检验结果表明原料的等级和地区存在一定的关系,但这种关系密切程度却不太高。这意味着,除了地区之外,还有其他因素对原料的质量起着更重要的影响。
Python计算
一个类别变量的拟合优度检验
期望频数相等
为研究消费者对不同类型的饮料是否有明显偏好,一家调查公司随机调查了2000个消费者对4种类型饮料的偏好情况,得到不同类型饮料的偏好数据如表所示。
检验消费者对不同类型饮料的偏好是否有显著差异(α=0.05)。
饮料类型 |
人数 |
碳酸饮料 |
525 |
矿泉水 |
550 |
果汁 |
470 |
其他 |
455 |
合计 |
2000 |
原假设和备择假设:
H0H1:f0=fe(观察频数与期望频数无显著差异):f0=fe(观察频数与期望频数有显著差异)
示例代码:
1 2 3 4 5 6 7 8
| import pandas as pd from scipy.stats import chisquare
df = pd.read_csv('XXX.csv')
chi2, p_value = chisquare(f_obs=df['人数'])
print(chi2, p_value)
|
运行结果:
1
| 12.100000000000001 0.00704833637156134
|
在该项检验中,χ2=12.10,p=0.007048,由于p<0.05,拒绝H0,表明消费者对不同类型饮料的偏好有显著差异。
期望频数不等
如果各类别的期望频数不相等,做拟合优度检验时,需要先计算出各类别的期望频数,然后按公式计算χ2统计量。
χ2=∑fe(f0−fe)2
一项社会学研究认为,离婚率的高低与受教育程度有关,而且由于社会经济发展程度及生活方式等因素的影响,不同地区也有一定差异。在对全国离婚家庭样本的研究中发现,离婚家庭中受教育程度为小学及以下的家庭所占的比例为20%,初中家庭为35%,高中家庭为25%,大学家庭为12%,研究生家庭为8%。在对南部地区260个离婚家庭的调查中,不同受教育程度的离婚家庭分布如表所示。
检验南部地区不同受教育程度的离婚家庭数与期望频数是否一致(α=0.05)。
受教育程度 |
离婚家庭数 |
小学及以下 |
30 |
初中 |
110 |
高中 |
80 |
大学 |
25 |
研究生 |
15 |
合计 |
260 |
原假设和备择假设:
H0H1:f0=fe(不同受教育程度的离婚家庭数与期望频数无显著差异):f0=fe(不同受教育程度的离婚家庭数与期望频数有显著差异)
示例代码:
1 2 3 4 5 6 7 8 9
| import pandas as pd from scipy.stats import chisquare
df = pd.read_csv('XXX.csv') x = df['离婚家庭数']
chi2, p_value = chisquare(f_obs=x, f_exp=x.sum() * df['期望比例'])
print(chi2,p_value)
|
运行结果:
1
| 19.58562271062271 0.0006027964032005588
|
在该项检验中,χ2=19.5856,p=0.0006028,由于p<0.05,拒绝H0,表明南部地区不同受教育程度的离婚家庭数与期望频数有显著差异。
两个类别变量的独立性检验
一家购物网站对在本网站购物的客户做了一项调查。调查的客户来自东部、中部、西部三个地区,共500人。调查结果如下表。
检验客户满意度与地区是否独立(α=0.05)。
满意度 |
东部 |
中部 |
西部 |
合计 |
满意 |
126 |
158 |
35 |
319 |
不满意 |
34 |
82 |
65 |
181 |
合计 |
160 |
240 |
100 |
500 |
原假设和备择假设:
H0H1:满意度与地区独立:满意度与地区不独立
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import pandas as pd from scipy.stats import chi2_contingency
x = [[126, 158, 35], [34, 82, 65]]
d = pd.DataFrame(x, index=['满意', '不满意'], columns=['东部', '中部', '西部'])
chi2, p_value, df, f_exp = chi2_contingency(d)
print(chi2) print(p_value) print(df) print(f_exp)
|
运行结果:
1 2 3 4 5
| 51.82661055208206 5.571787064349422e-12 2 [[102.08 153.12 63.8 ] [ 57.92 86.88 36.2 ]]
|
在该项检验中,χ2=51.8266,p=5.572e−12,由于p<0.05,拒绝H0,认为满意度与地区不独立,即满意度与地区有关。
两个类别变量的相关性度量
在上例子,已只χ2=51.8266,n=500,r=2,c=3。
示例代码:
1 2 3 4 5 6 7 8 9 10 11 12
| import math
n = 500 chi2 = 51.827
phi = math.sqrt(chi2 / n) c = math.sqrt(chi2 / (chi2 + n)) v = math.sqrt(chi2 / n * (min(2, 3) - 1))
print(phi) print(c) print(v)
|
运行结果:
1 2 3
| 0.32195341277892986 0.3064619511292651 0.32195341277892986
|