《R语言实战》自学笔记42-独立性检验

数据准备

df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 数据导入。
df # 查看数据。
##    year nitrogen variety block   v1   v2  v3   v4   v5
## 1  2020       N1       a     1 1.26 2.14 3.4 4.66 3.25
## 2  2020       N1       a     2 1.20 2.90 4.1 5.30 1.27
## 3  2020       N1       a     3 1.30 3.00 4.3 5.60 2.24
## 4  2020       N1       b     1 1.08 1.72 2.8 3.88 1.00
## 5  2020       N1       b     2 1.05 1.65 2.7 3.75 3.12
## 6  2020       N1       b     3 1.15 1.35 2.5 3.65 4.57
## 7  2020       N2       a     1 1.32 3.78 5.1 6.42 5.85
## 8  2020       N2       a     2 1.28 4.32 5.6 6.88 6.48
## 9  2020       N2       a     3 1.35 3.95 5.3 6.65 7.21
## 10 2020       N2       b     1 1.33 3.47 4.8 6.13 6.56
## 11 2020       N2       b     2 1.28 2.72 4.0 5.28 8.43
## 12 2020       N2       b     3 1.30 3.90 5.2 6.50 7.55
## 13 2021       N1       a     1 1.19 3.61 4.8 5.99 3.11
## 14 2021       N1       a     2 1.21 3.29 4.5 5.71 2.54
## 15 2021       N1       a     3 1.24 3.26 4.5 5.74 1.28
## 16 2021       N1       b     1 1.09 2.71 3.8 4.89 3.24
## 17 2021       N1       b     2 1.28 2.32 3.6 4.88 1.27
## 18 2021       N1       b     3 1.35 1.95 3.3 4.65 1.15
## 19 2021       N2       a     1 1.45 4.35 5.8 7.25 5.74
## 20 2021       N2       a     2 1.40 3.80 5.2 6.60 6.85
## 21 2021       N2       a     3 1.37 4.23 5.6 6.97 7.42
## 22 2021       N2       b     1 1.28 2.72 4.0 5.28 8.20
## 23 2021       N2       b     2 1.15 3.35 4.5 5.65 5.70
## 24 2021       N2       b     3 1.24 3.46 4.7 5.94 6.00

7.2.2 独立性检验

独立性检验通常对两个变量进行检验,查看这两个类别变量之间是否存在某种联系。它是根据次数资料判断两类因子彼此相关或相互独立的假设检验。也就是分析列联表中行变量和列变量是否相互独立。
由联表中的数据算出随机变量\chi^2的值,\chi^2的值越大,说明“X与Y有关系”成立的可能性越大。

1.卡方独立性检验

卡方检验(chi square test)主要应用于定类变量和定类变量之间的关系,也称独立性检验,是一种非参数假设检验。其测定两个分类变量之间的相关程度,是利用类别变量的观测值频数与期望值频数进行构建的,公式如下:
\chi^2 = \sum \frac{(f_o - f_e)^2} {f_e}
其中,f_o 为观测值频数,f_e 为期望值频数。可以看到, \chi^2 统计量其实反映了观察值频数和期望值频数之间的差距,当差距较小时,统计量的值也会变小。所以 \chi^2检验正是通过计算 \chi^2统计量与临界值进行比较来确定相关的显著性的。

假设检验问题由两个互斥的假设构成,其中一个叫做原假设,用H0表示;另一个叫做备择假设,用H1表示。在卡方检验中两个假设即为:H0:两个分类变量间独立;H1:两个分类变量间不独立。
结果的P-值小则代表拒绝原假设,即存在一定的关系;当P-值比较大时代表接受原假设,即不存在联系。例如:p = 0.05,代表变量之间无关的可能性小于5%,反过来,就是两者相关的概率大于95%,即拒绝原假设。

在R中使用chisq.test()函数对二维表的行变量和列变量进行卡方独立性检验。

library(vcd) # 调用vcd包。
mytable3 <- xtabs(~ year + nitrogen, data = df) # 构建year和nitrogen的列联表。
chisq.test(mytable3) # 检验独立性。这里p>0.05,表明year和nitrogen是相互独立的。
## 
##  Pearson's Chi-squared test
## 
## data:  mytable3
## X-squared = 0, df = 1, p-value = 1
mytable4 <- xtabs(~ nitrogen + variety, data = df) # 构建nitrogen和variety的列联表。
chisq.test(mytable4) # 检验独立性。这里p>0.05,表明nitrogen和variety是相互独立的。
## 
##  Pearson's Chi-squared test
## 
## data:  mytable4
## X-squared = 0, df = 1, p-value = 1

p值表示从总体中抽取的样本行变量与列变量是相互独立的概率。

2.Fisher精确检验

fisher.test()函数进行Fisher精确检验。Fisher精确检验的原假设是:边界固定
的列联表中行和列是相互独立的。其调用格式为fisher.test(mytable),其中的mytable是
一个二维列联表。fisher.test()函数可以在任意行列数大于等于2的二维列联表上使用,但不能用于2×2的列联表。

mytable5 <- xtabs(~ year + nitrogen, data = df) # 构建year和nitrogen的列联表。
fisher.test(mytable5) # 精确检验独立性。
## 
##  Fisher's Exact Test for Count Data
## 
## data:  mytable5
## p-value = 1
## alternative hypothesis: true odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.1537975 6.5020580
## sample estimates:
## odds ratio 
##          1

3.Cochran-Mantel-Haenszel检验

mantelhaen.test()函数可用来进行Cochran—Mantel—Haenszel卡方检验,其原假设是,两
个名义变量在第三个变量的每一层中都是条件独立的。

mytable6 <- xtabs(~ year + nitrogen + variety, data = df) # 构建三变量的列联表。
mantelhaen.test(mytable6) # 检验独立性。
## 
##  Mantel-Haenszel chi-squared test without continuity correction
## 
## data:  mytable6
## Mantel-Haenszel X-squared = 0, df = 1, p-value = 1
## alternative hypothesis: true common odds ratio is not equal to 1
## 95 percent confidence interval:
##  0.2018352 4.9545378
## sample estimates:
## common odds ratio 
##                 1

7.2.3 相关性的度量

显著性检验评估了是否存在充分的证据以拒绝变量间相互独立的原假设。如果可
以拒绝原假设,那么你的兴趣就会自然而然地转向用以衡量相关性强弱的相关性度量。vcd包中的assocstats()函数可以用来计算二维列联表的phi系数、列联系数和Cramer’s V系数。
Phi系数适用于2×2列联表,列联系数和Cramer’s V系数适用于大于2×2列联表。

Phi系数:phi =1,表明变量完全相关;phi = 0,表明变量相互独立;越接近1,越相关;越接近0,越不相关。
列联系数:适用于大于2×2列联表,当表中两变量相互独立时,系数为0。其最大值依赖于行数和列数,但是不可能大于1。
Cramer’s V系数:两个变量相互独立时,等于0;两个变量完全相关时,等于1。
总体来说,较大的值意味着较强的相关性。

library(vcd) # 调用vcd包。
mytable7 <- xtabs(~ year + nitrogen, data = df) # 构建year和nitrogen的列联表。
assocstats(mytable7) # 相关性度量。较大的值意味着较强的相关性。
##                  X^2 df P(> X^2)
## Likelihood Ratio   0  1        1
## Pearson            0  1        1
## 
## Phi-Coefficient   : 0 
## Contingency Coeff.: 0 
## Cramer's V        : 0

7.2.4 结果的可视化

7.2.5 将表转换为扁平格式

参考资料:

  1. 《R语言实战》(中文版),人民邮电出版社,2013.
  2. 独立性检验-百度,https://baike.baidu.com/item/%E7%8B%AC%E7%AB%8B%E6%80%A7%E6%A3%80%E9%AA%8C/4031921#reference-[2]-939046-wrap
  3. 统计学-分类数据与卡方检验-20180115,https://zhuanlan.zhihu.com/p/32952144
  4. R语言独立性检验,https://blog.csdn.net/m0_46291589/article/details/104396263
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容