问题描述
最近有一个关于关联分析的小作业,问题描述如下:
孩子的情感状况、品行症状、亲社会行为等等与很多因素相关,这个作业主要着眼点在于孩子每天看视频的时间是否对于以上这些指标有着重要的影响,因此需要对输入特征与输出标签之间的相关关系做一个分析。
属性描述如下:
由以上属性描述表可以看出,属性类型同时包括类别以及数值,因此进行相关分析时针对这两种情况需要采用不同的方法,这里采用的策略如下:
- 对于离散-离散的情况,采用卡方检验
- 对于连续-离散的情况,采用ANOVA方差检验
下面对于这两种检验方法进行介绍。
卡方检验
一维情况
假设一条河里有三种鱼,gumpies, sticklebarbs, 以及spotheads。如果这条河的生态环境没有遭到干扰,那么这三种鱼的数量是相等的(下表第三行)。现在从河里进行300次抽样,最后抽样得到的结果如下表第二行所示:
gumpies | sticklebarbs | spothheads | Totals | |
---|---|---|---|---|
观察到的频数 | 89 | 120 | 91 | 300 |
期望的频数 | 100 | 100 | 100 | 300 |
现在需要解决的问题是,是否这条河的生态环境收到了干扰?我们假设生态环境正常,这是我们的原假设。
(注意,期望的频数是根据实际情况自行定义的)
很容易想到的是,我们可以建立一种度量来衡量现实情况与原假设的偏离程度,例如:
$$\frac{观察值 - 期望值}{期望值}$$
把实际的数据带入,可以得到以下的结果:
gumpies: $\frac{89 - 100}{100} = -0.11$
sticklebarbs: $\frac{120 - 100}{100} = +0.20$
spothheads: $\frac{91 - 100}{100} = -0.09$
发现结果还不错,但是这只能用来衡量单个类别的偏差程度,而不能用来衡量整体的偏差程度,因为这三者的加和为零。既然这样,很容易想到可以对之前的度量进行简单的修改,变成这样:
$$\frac{(观察值 - 期望值)^2}{期望值}$$
再把数据带入看看:
gumpies: $\frac{(89 - 100)^2}{100} = 1.21$
sticklebarbs: $\frac{(120 - 100)^2}{100} = 4.0$
spothheads: $\frac{(91 - 100)}{100} = 0.81$
sum: $1.21 + 4.0 + 0.81 = 6.02$
这样一来问题便得到了解决,而这也正是卡方检验所采取的方式。而这个sum值就是卡方(chi-square),记作$\chi^2$, 为了更加形式化地表示,我们把观察值记为$O$, 期望值记为$E$, 那么有如下等式成立:
$$\chi^2 = \sum \frac{(O - E) ^ 2}{E}$$
下面的问题是,我们达到了卡方值,但是这个值到底好还是不好呢?是更加支持原假设还是拒绝原假设呢?
可以设想这样一种情况,我们假设河里的鱼服从原假设的分布,也就是三种鱼出现的概率相等。然后我们把三百次采样看作一次实验,每一次实验完毕之后记录下采样出的300条鱼中每一种鱼的频数,然后计算卡方值。在进行很多次这样的实验之后,我们可以画一个柱状图,这个图记录下了卡方值的分布情况。然后再把实际的观察值(也就是上面表格的第二行)计算的卡方值(6.02)带入进去,看看大于或者等于这个值在柱状图中所有卡方值中占有多少比例。如果占有的比例很大,说明这个值是由跟原假设很近似的假设得出的,这就证明了原假设是对的;反之。如果这个比例很小,说明如果分布服从原假设,那么所计算出的卡方值基本不可能包含这个观测出的卡方值,表明原假设是不对的,我们就可以拒绝原假设。
其实统计检验的基本思想就是这样。但是存在一个问题,我们不可能进行真实的采样(从河里抓鱼),所以一般采用计算机模拟的方式,具体步骤如下所示:
- 等概率的产生a(代表gumpies), b(代表sticklebarbs), c(代表spothheads)的序列
- 计算一个大小为300的序列中a, b, c三者的频数,作为观察值,然后将a = b = c = 100作为期望值,计算并记录下算出的卡方值
- 重复1~2步10000次, 画出柱状图如下:
可以看出只有5%左右的值大于6.02,说明我们可以以95%的置信度拒绝原假设。
二维情况
对于二维的情况,卡方检验又被称为卡方关联度检验,也就是检验两个变量之间的相关程度(独立程度),考虑下面这个数据表$O$:
Alzhemer’s onset - | during 5-year period | |||
---|---|---|---|---|
no | yes | |||
recieved- | yes | 147 | 9 | 156 |
estrogen | no | 810 | 158 | 968 |
957 | 167 | 1124 |
这是观察值,为了计算卡方值,很明显我们需要计算期望值。
为了方便表示,把上表变成如下形式:
(A)Alzhemer’s onset - | during 5-year period | |||
---|---|---|---|---|
no | yes | |||
(R) recieved- | yes | [cell a] | [cell b] | 156 |
estrogen | no | [cell c] | [cell d] | 968 |
957 | 167 | 1124 |
拿a做例子:
$$E_a = \frac{156}{1124} \times \frac{957}{1124} \times 1124$$
这个式子如何解释呢?如果这两个变量是独立的,那么$A$变量取$no$值与$R$变量取$yes$值这两个事件之间就是独立的,那么$[cell_a]$事件发生的概率就是两者相乘,也就是上述等式右边前两个数相乘,最后的期望值自然就是概率乘以实验总数。
上面的解释比较不正式,换一种较为正式的表达方式。假设我们要求$cell$的期望值,设$R$为$cell$所在列的边缘事件总数,$C$为$cell$所在行的边缘事件总数,$N$为实验总数目,这样就有:
$$E_{cell} =\frac{R}{N} \times \frac{C}{N} \times N$$
所以就有期望值$E$数据表如下:
(A)Alzhemer’s onset - | during 5-year period | |||
---|---|---|---|---|
no | yes | |||
(R) recieved- | yes | $E_a = \frac{156 \times 957}{1124} = 132.82$ | $E_b = \frac{156 \times 167}{1124} = 23.18$ | 156 |
estrogen | no | $E_c = \frac{968 \times 957}{1124} = 824.18$ | $E_d = \frac{968 \times 167}{1124} = 143.82$ | 968 |
957 | 167 | 1124 |
这样就可以调用公式:
$$\chi^2 = \sum \frac{(O - E) ^ 2}{E}$$
特别地,当行数以及列数都为2时,上述公式需要进行一下修改:
$$\chi^2 = \sum \frac{(|O - E| - 0.5) ^ 2}{E}$$
这样算出来的卡方值为$11.01$
最后涉及到自由度的问题,因为比较简单,所以只写出结论:
$$df = (r - 1)(c - 1)$$
r = number of rows
c = number of columns
ANOVA方差检验
为了方便比较,同样采用上述阿尔兹海默病的例子。研究表明,老年痴呆症患者患病之后会经常经历情绪非常不稳定地阶段,原因是因为患者患病之前的生活中经常有恐惧或者焦虑的体验,正是这些一直存在于脑海中的记忆出发了患病后的不稳定情绪的产生。
现在我们假设有一个实验团队发明了一种药物,可以缓解这种情绪问题,他们对小白鼠进行了实验。实验设计如下:
- 将小白鼠随机分为四组A, B, C, D
- A组作为参照组,不给药;B, C, D三组分别注射一个单位,两个单位,三个单位的药剂
- 记录实验结果,数值越低表明实验效果越好
实验结果如下:
A | B | C | D | Total |
---|---|---|---|---|
27.0 | 22.8 | 21.9 | 23.5 | |
26.2 | 23.1 | 23.4 | 19.6 | |
28.8 | 27.7 | 20.1 | 23.7 | |
33.5 | 27.6 | 27.8 | 20.8 | |
28.8 | 24.0 | 19.3 | 23.9 | |
$M_a = 28.86$ | $M_b = 25.04$ | $M_c = 22.50$ | $M_d = 22.30$ | $M_T = 24.68$ |
下面需要进行一下相关性分析,判断药物是否对症状的缓解产生作用。
和卡方检验一样,ANOVA检验最后也有一个衡量指标,记为$F$,定义如下:
$$F = \frac{MS_{bg}}{MS_{wg}} = \frac{组间相似度}{组内相似度}$$
具体的计算步骤如下所示(推导过程省略)
(1) 首先计算出如下值:
A | B | C | D | Total |
---|---|---|---|---|
$N_A = 5$ | $N_B = 5$ | $N_C = 5$ | $N_D = 5$ | $N_T = 20$ |
$\sum X_{Ai} = 144.30$ | $\sum X_{Bi} = 125.20$ | $\sum X_{Ci} = 112.50$ | $\sum X_{Di} = 111.50$ | $\sum X_{Ti} = 493.50$ |
$\sum X^2_{Ai} = 4196.57$ | $\sum X^2_{Bi} = 3158.50$ | $\sum X^2_{Ci} = 2576.51$ | $\sum X^2_{Di} = 2501.95$ | $\sum X^2_{Ti} = 12433.53$ |
$SS_A = 32.07$ | $SS_B = 23.49$ | $SS_C = 45.26$ | $SS_D = 15.50$ | $SS_T = 256.42$ |
其中:
$$SS = \sum X^2_i - \frac{(\sum X_i)^2}{N}$$
(2)计算$SS_{wg}$以及$SS_{bg}$
$$SS_{wg} = SS_A + SS_B + SS_C + SS_D$$
$$SS_{bg} = SS_T - SS_{wg}$$
(4)计算相关自由度
$$df_{bg} = k - 1 = 4 - 1 = 3$$
$$df_{wg} = (N_A - 1) + (N_B - 1) + (N_C - 1) + (N_D - 1)$$
(5)计算 $MS_{bg}$以及$MS_{wg}$
$$MS_{bg} = \frac{SS_{bg}}{df_{bg}}$$
$$MS_{wg} = \frac{SS_{wg}}{df_{wg}}$$
(6)计算$F$
最后得出F = 6.42 (df = 3, 16)
代码实现
|
|
因子分析
先说说因子分析与主成分分析的区别,下面的话引自知乎(https://www.zhihu.com/question/24524693)
具体实现使用SPSS软件进行实现:
操作步骤如下(引自 SPSS数据分析从入门到精通-陈胜可):
实验结果如下:
2017.2.27 Updates
决策树
|
|
Read data
|
|
Convert the data format
|
|
Split the data
|
|
|
|
array([ 0.64356436, 0.64356436, 0.64391855, 0.64391855, 0.64407713,
0.64407713, 0.64407713, 0.64407713, 0.64407713, 0.64407713])
difficulties_cat
|
|
Imp | |
---|---|
scr_ave | 0.553782 |
medu_newcat | 0.217218 |
age_m | 0.085820 |
income_newcat | 0.048912 |
edu_ave | 0.029740 |
female | 0.026161 |
onlychild | 0.021336 |
mediacontact | 0.017030 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacoview | 0.000000 |
Imp | |
---|---|
scr_ave | 0.525587 |
medu_newcat | 0.213067 |
age_m | 0.084708 |
scr_of_edu | 0.080575 |
mediacontact | 0.029232 |
female | 0.025661 |
onlychild | 0.020929 |
income_newcat | 0.020240 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacoview | 0.000000 |
emo_cat
|
|
Imp | |
---|---|
scr_ave | 0.521694 |
medu_newcat | 0.159798 |
income_newcat | 0.147978 |
edu_ave | 0.083233 |
age_m | 0.040750 |
female | 0.023781 |
mediacontact | 0.019127 |
mediacoview | 0.003639 |
onlychild | 0.000000 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
Imp | |
---|---|
scr_ave | 0.520711 |
income_newcat | 0.155111 |
medu_newcat | 0.146762 |
scr_of_edu | 0.115745 |
age_m | 0.023767 |
female | 0.021924 |
mediacontact | 0.011410 |
mediacoview | 0.004571 |
onlychild | 0.000000 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
con_cat
|
|
Imp | |
---|---|
scr_ave | 0.562325 |
medu_newcat | 0.098819 |
mediacontact | 0.095089 |
edu_ave | 0.077572 |
female | 0.064213 |
income_newcat | 0.056334 |
age_m | 0.023696 |
onlychild | 0.013513 |
mediacoview | 0.008440 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
Imp | |
---|---|
scr_ave | 0.511282 |
scr_of_edu | 0.110155 |
medu_newcat | 0.097473 |
mediacontact | 0.093793 |
female | 0.082843 |
income_newcat | 0.055566 |
age_m | 0.035552 |
onlychild | 0.013335 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacoview | 0.000000 |
hyp_cat
|
|
Imp | |
---|---|
medu_newcat | 0.343448 |
scr_ave | 0.265652 |
onlychild | 0.165487 |
edu_ave | 0.076194 |
income_newcat | 0.054466 |
age_m | 0.046774 |
mediacontact | 0.020992 |
mediacoview | 0.015532 |
female | 0.011454 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
Imp | |
---|---|
medu_newcat | 0.335192 |
scr_ave | 0.257218 |
onlychild | 0.161509 |
scr_of_edu | 0.105471 |
age_m | 0.065618 |
income_newcat | 0.033129 |
mediacontact | 0.022542 |
mediacoview | 0.012901 |
female | 0.006421 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
pee_cat
|
|
Imp | |
---|---|
scr_ave | 0.441246 |
income_newcat | 0.210646 |
female | 0.152568 |
age_m | 0.151888 |
medu_newcat | 0.033530 |
mediacoview | 0.009625 |
edu_ave | 0.000498 |
onlychild | 0.000000 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacontact | 0.000000 |
Imp | |
---|---|
scr_ave | 0.430946 |
income_newcat | 0.200188 |
age_m | 0.151286 |
female | 0.139104 |
medu_newcat | 0.033289 |
scr_of_edu | 0.033259 |
mediacoview | 0.011927 |
onlychild | 0.000000 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacontact | 0.000000 |
pro_cat
|
|
Imp | |
---|---|
female | 0.295389 |
scr_ave | 0.252091 |
mediacontact | 0.145010 |
age_m | 0.137453 |
income_newcat | 0.085421 |
edu_ave | 0.062697 |
medu_newcat | 0.021938 |
onlychild | 0.000000 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacoview | 0.000000 |
Imp | |
---|---|
female | 0.299316 |
scr_ave | 0.204496 |
mediacontact | 0.131972 |
age_m | 0.125169 |
scr_of_edu | 0.111909 |
income_newcat | 0.080072 |
medu_newcat | 0.047066 |
onlychild | 0.000000 |
divorce | 0.000000 |
scr_h_cat | 0.000000 |
mediacoview | 0.000000 |
Convert continuous variables to categorical variables
|
|
|
|
|
|
0.63948514409153423
|
|
Imp | |
---|---|
scr_h_cat | 0.528976 |
medu_newcat | 0.221779 |
age_m | 0.092168 |
income_newcat | 0.057032 |
onlychild | 0.034724 |
mediacontact | 0.027193 |
female | 0.021036 |
scr_ave | 0.011653 |
mediacoview | 0.005439 |
divorce | 0.000000 |
edu_ave | 0.000000 |
Imp | |
---|---|
scr_h_cat | 0.507678 |
medu_newcat | 0.215210 |
age_m | 0.089438 |
scr_of_edu | 0.042832 |
mediacontact | 0.041463 |
income_newcat | 0.035742 |
onlychild | 0.033695 |
female | 0.020413 |
scr_ave | 0.013527 |
divorce | 0.000000 |
mediacoview | 0.000000 |