-
2022-02-09 18:35:48
大家应该很熟悉卡方检验,卡方检验作为非参数检验的一种主要应用大样本数据(样本量>40)。今天我们详细介绍R语言中卡方检验的实现与应用。
1. 我们看下理论基础
(1)检验某个连续变量的分布是否与某种理论分布相一致。如是否符合正态分布、是否服从均匀分布等
①提出原假设H0:变量符合F(x)分布(针对连续型变量),若针对离散型变量,则要假设其分布律
②将样本划分区间k个,每个区间样本数不小于5,区间互不相交,获得每个区间的实际频数fi
③根据假设分布的分布函数,求出每个区间的理论概率pi,得到理论频数npi(n为样本总数)
④计算卡方统计量
⑤计算自由度,即区间数减1,假设显著性α=0.05,得到x2(k-1)α临界值,如果卡方统计量大于临界值,说明理论与实际偏差过大,拒绝原假设
(2)检验某个分类变量各类的出现概率是否等于指定概率。如在36选7的彩票抽奖中,每个数字出现的概率是否各为1/36;掷硬币时,正反两面出现的概率是否均为0.5。
①提出原假设H0:假设该各类变量符合出现概率
②根据原假设得出理论频数,即对各分类变量其对应概率为pi,则理论频数为npi(n为样本总数)
③根据已有实际观测值fi,计算卡方统计量即
④计算自由度,为分类变量数目减去一,与再显著性α=0.05下的临界值比较,若大于临界值,则认为偏差过大,拒绝原假设
(3)检验某两个分类变量是否相互独立。如吸烟(二分类变量
更多相关内容 -
desktop_逻辑回归_R语言卡方检验_疾病模型_卡方检验_metaCCA_
2021-09-30 12:40:00针对具有遗传性疾病和性状的遗传位点分析问题,使用假设检验的方法,分别采用卡方检验、逻辑回归、SKAT 以及metaCCA 方法建立数学模型,使用MATLAB 和R 语言及其工具包进行编程,在合理的假设下,确定了与遗传性疾病... -
R语言卡方检验
2019-11-11 21:25:18文章目录@[toc]卡方检验简介样本量要求卡方分析用途R语言示例卡方检验Fisher精确检验Cochran-Mantel-Haenszel检验 卡方检验简介 卡方检验时以χ2χ^2χ2分布为基础的假设检验方法。它的原假设是:观察频数与期望频数...
卡方检验简介
卡方检验时以 χ 2 χ^2 χ2分布为基础的假设检验方法。它的原假设是:观察频数与期望频数没有差别。
χ 2 χ^2 χ2值表示观察值域理论值之间的偏离程度。
根据 χ 2 χ^2 χ2分布及自由度获得原假设成立情况下当前统计量的概率P。如果p值很小,说明观察值与理论值偏离程度太大,应当拒绝原假设,表示比较资料之间有显著差异。否则将不能拒绝原假设。
样本量要求
- 至少卡方检验的每一个单元格,要求其最小期望频数均大于1,且至少有4/5的单元格期望频数大于5,此时使用卡方分布计算出的概率值才是准确的。否则应该用确切概率法。
四格表资料的卡方检验,样本量与方法选择
样本量 方法 n>40且T(理论频数)>5 皮尔逊卡方 n大于40且至少一个格子1<T<5 校正卡方 n<40或T<1 Fisher确切概率法 卡方分析用途
- 最主要用途考察无序变量各水平在两组或多组间的分布是否一致
- 检验两个分类变量是否相互独立
- 非参数检验卡方检验下,检验某个分类变量各类的出现概率是否等于指定概率的分布。
R语言示例
卡方检验
chisq.test()函数对二维表的行列变量进行卡方检验
#使用vcd包中Arthritis数据集 library(vcd) #生成列联表格式 mytable <- xtabs(~Treatment+Improved,data = Arthritis) #卡方检验 chisq.test(mytable) Pearson's Chi-squared test data: mytable X-squared = 13.055, df = 2, p-value = 0.001463 #p值小于0.05,说明治疗情况和改善情况不独立。
Fisher精确检验
fisher.test()函数
格式fisher.test(mytable),mytable是一个二维列联表library(vcd) mytable <- xtabs(~Treatment+Improved,data = Arthritis) #调用fisher.test()函数 fisher.test(mytable) Fisher's Exact Test for Count Data data: mytable p-value = 0.001393 alternative hypothesis: two.sided #P小于0.05,两者之间不独立
Cochran-Mantel-Haenszel检验
为两个二分类变量进行分层卡方检验。
mantelhaen.test()mytable <- xtabs(~Treatment+Improved+Sex,data = Arthritis) #调用mantelhaen.test()函数 mantelhaen.test(mytable) Cochran-Mantel-Haenszel test data: mytable Cochran-Mantel-Haenszel M^2 = 14.632, df = 2, p-value = 0.0006647 #结果表明,患者接受的治疗与得到的改善在性别的每一水平下并不独立
R 语 言 小 白 速 通 R语言小白速通 R语言小白速通
懂 点 R 语 言 懂点R语言 懂点R语言
欢 迎 分 享 收 藏 关 注 欢迎分享收藏关注 欢迎分享收藏关注 -
R语言卡方检验与结果可视化---ggstatsplot包
2020-01-26 12:31:01R语言卡方分析与结果可视化 1,卡方分析简介 2,R语言chisq.test() 3,基于ggstatsplot包的可视化分析R语言卡方检验与结果可视化
1,卡方分析简介与实例
2,R语言chisq.test()
3,基于ggstatsplot包的可视化分析卡方分析简介与实例:
卡方检验是生物学中应用很广的一种假设检验,可以通过对构成比,率进行检验,进而判断分类资料间的偏差程度。若卡方值越大,二者偏差程度越大;反之,二者偏差越小。其中卡方分析的原假设是观察频数与期望频数无差别,所以说当p值显著时,则拒绝原假设,认为二者之间有明显差异。总而言之,卡方分析即是用来判断两个样本间的差异程度,从而推断两个变量之间有没有关系。
一般常见的卡方分析是2x2列联表形式,例如服用某种药物是否对死亡率有影响:(自己编的数据)
简单统计之后,得到总数和死亡率:
原假设是:服药组和未服药组之间频数无显著差异(服药对死亡率无影响)
先计算自由度:(行数-1)*(列数-1)=1
这个是卡方的计算公式,R代表实际值,T代表理论值,理论值需要进一步计算才可以知道。
此处理论的死亡率就是20.69%,根据该数值计算出各个值的理论值:未服药组【治愈:328x(1-0.2069),死亡:328x0.2069】服药组同理也可以计算出结果,得到:
根据公式计算出卡方的值:
x2=(231-260.1368)2/260.1368+(97-67.8632)2/67.8632+(298-268.8609)2/268.8609+(41-70.1391)2/70.1391=31.03711
查表可知在自由度为1的情况下,临界概率是:3.84(95%),显然31.03711>3.84,远超卡方分布的临界值,同时31.03711>10.83(99.9%),对此我们便能得到结论,服药组和未服药组间有显著差异。R语言chisq.test()
在R语言中进行卡方检验还是十分方便的,只需要使用chisq.test即可实现,可以返回卡方值和对应的p值,同时还可以计算自由度。但是其对数据集的格式有一定的要求,如图所示为实际的操作步骤:
>治愈<-c(231,298) >死亡<-c(97,41) >data<-data.frame(治愈,死亡,row.names = c("未服药组","服药组")) >chisq.test(data) Pearson's Chi-squared test with Yates' continuity correction data: data X-squared = 29.981, df = 1, p-value = 4.362e-08 >data 治愈 死亡 未服药组 231 97 服药组 298 41
此处为2X2列链表的实例,在实际生活中,往往需要将结果反应到图像上,一般采用prism8或AI来制图,在R语言中ggstatsplot包也可以实现在这方面的功能。
基于ggstatsplot包的可视化分析
ggstatsplot包常用于各种检验的可视化制图中,在这里只简单介绍关于卡方分析的可视化。此处需要使用到ggbarstats函数,其参数可谓是非常的多,详细的参数表我放在另一个博客中了,有兴趣的朋友可以去看看(https://blog.csdn.net/m0_45248682/article/details/104086729)。务必记住ggbarstats函数对数据集的要求不同于chisq.test,它只能接受比率或者原始的统计数据,详细的将举例说明:
> head(mtcars) #原始数据集 mpg cyl disp hp drat wt qsec vs am gear carb Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1 Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2 Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1 > table(mtcars$vs) #频数统计(chisq.test使用) 0 1 18 14
在此处若只有下图的原始的数据则需要转换一下(不知道有没有更简单的方法,向大家请教一下)
数据处理:> status<-c(rep("治愈",231),rep("治愈",298),rep("死亡",97),rep("死亡",41)) > group<-c(rep("未服药组",231),rep("服药组",298),rep("未服药组",97),rep("服药组",41)) > data<-data.frame(status,group)
调用ggstatsplot包:(计算出95%置信区间并标记p值)
> ggstatsplot::ggbarstats( + data = data, + main = status, + nboot = 10,condition = group, + legend.title = "Group" + ) Note: 95% CI for effect size estimate was computed with 10 bootstrap samples. # A tibble: 2 x 11 group counts perc N 死亡 治愈 statistic p.value parameter method significance <fct> <int> <dbl> <chr> <chr> <chr> <dbl> <dbl> <dbl> <chr> <chr> 1 未服药组 328 49.2 (n = 328) 29.57% 70.43% 54.7 1.37e-13 1 Chi-squared test for given probabilities *** 2 服药组 339 50.8 (n = 339) 12.09% 87.91% 195. 2.80e-44 1 Chi-squared test for given probabilities ***
可以看见p值以及卡方值都被标注出来了,同时还可以通过title参数来加入标题,还可以转化绘图类型(从堆砌直方图转化为饼图)。
详细的参数以及说明已经放到另一篇博文中了,有兴趣的朋友可以打开看看。
https://blog.csdn.net/m0_45248682/article/details/104086729参考文献:
https://www.jianshu.com/p/6547fa7e97c1
https://www.meiwen.com.cn/subject/qfmmvftx.html -
R语言学习:卡方检验
2020-10-09 17:07:42卡方检验用来检验类别变量。 一、频数与频率 性别在不同组中的频数: > gender_f <- table(data_paper$gender, data_paper$group) > print(gender_f) 1 2 3 1 6 16 9 2 7 7 10 #行是性别,列是组 ...本文是个人学习笔记
卡方检验用来检验类别变量。
一、频数与频率
- 性别在不同组中的频数:
> gender_f <- table(data_paper$gender, data_paper$group) > print(gender_f) 1 2 3 1 6 16 9 2 7 7 10 #行是性别,列是组
- 性别在不同组中的频率:
> prop.table( gender_f, 2 )
注意,这里2代表 “gender_f” 中的第二个变量,即组别,因为我们需要的是不同性别在每个组中的频率
二、卡方检验
2.1 在R中进行卡方检验
有时候需要把连续变量分成分类变量,目前还没有碰到这类分析,后续如有需要会补上。这里的gender和group本身就是因子变量:
> S = chisq.test(gender, group)
> print (S)
即可得到卡方值与p值。
2.2 对结果进行确认
- 首先计算估计期望频数,是储存在"S"的“expected”分量中
- 再调出储存在table(gender,group)这个列联表中的观测频数
> S$expected > sum((table(gender,group)-S$expected)^2 / S$expected)
所得结果与上一节的卡方值相同。
函数“pchisq”可以用来计算一个卡方随机变量的累积分布函数,自由度df是(行-1)(列-1)
1 - pchisq(2.805835, df= 2)
所得值也与p值相同。
本文参考了 《通过实例学习R》 [美] 吉姆·艾伯特,玛利亚·里佐
-
使用R语言进行卡方检验
2020-06-23 09:08:02先定义卡方检验的一个方法 (1)读取文件,并根据x,y的参数获取相关的列数 (2)对单选项的处理:直接生成列联表 (3)对多选项的处理:对每个子选项都生成列联表,并将每个列联表的选择人数的那一列的数据取出并... -
一文详解 如何用 R 语言进行卡方检验。
2020-07-09 16:33:08本篇文章主要介绍如何用R语言进行 卡方检验,将按以下顺序进行介绍。 一、卡方检验基本概念 1、基本原理:卡方检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论推断值之间的偏离程度就... -
R语言_卡方检验
2017-10-13 14:00:30R语言 卡方检验 由 xiaoxiaogang 创建,youj 最后一次修改 2016-12-12 卡方检验是一种确定两个分类变量之间是否存在显着相关性的统计方法。 这两个变量应该来自相同的人口,他们应该是类似 - 是/否,... -
用R语言实现卡方检验
2017-11-11 13:30:23卡方检验在数据统计中,卡方检验是一种很重要的方法。 通常卡方检验的应用主要为: 1、 卡方拟合优度检验 2、 卡方独立性检验 本文主要通过使用自己编程的方法实现相关检验。 -
R语言 多个变量进行 卡方检验 循环 fisher检验 chi test 循环
2021-09-19 21:45:50单个卡方检验流程 table(data$smoke,data$sex) s=chisq.test(data$smoke,data$age ,correct = TRUE) s s$expected #看上面最小理论频数,和提示,考虑用fisher fisher.test(data$smoke,data$age) 多个变量进行卡方... -
统计学第七章 卡方检验【R语言实现】
2020-12-23 15:52:44知识点卡方分布(Chi-square distribution)四格表资料的卡方检验配对四格表的卡方检验四格表资料的Fisher确切概率法行*列资料的卡方检验多个样本率间的多重比较频数分布拟合优度的卡方检验1. 卡方分布当自由度趋于... -
卡方检验的R语言实现
2018-07-18 09:51:31chisq.test : 执行卡方检验 chisq.test( x, #数值型向量或矩阵,或者x 、y 全为因子 y=null , #数值型向量或x为因子时设为因子。x为矩阵时,列联表保存于其中,故忽略Y #与x等长的概率,该值测试比率是否与... -
R语言卡方独立性检验、使用chisq.test函数对列联表进行卡方检验、检验两个分类变量是否独立(自定义构建列联...
2022-04-25 16:21:15R语言卡方独立性检验、使用chisq.test函数对列联表进行卡方检验、检验两个分类变量是否独立 -
R语言开发之卡方检验了解下
2018-09-20 14:33:00卡方检验是一种统计方法,用于确定两个分类变量之间是否具有显着的相关性,并且这些变量应该来自相同的人口,它们应该是分类的,如 - 是/否,男/女,红/绿等...在R中,执行卡方检验的函数是,chisq.test()数,来看下... -
卡方检验及R语言实现
2017-03-27 17:48:19卡方检验及R语言实现 -
(生物信息学)R语言与统计学入门(三)——卡方检验
2022-03-27 22:56:02卡方检验是用途很广的一种假设检验方法,它在分类资料统计推断中的应用,包括:两个率或两个构成比比较的卡方检验;多个率或多个构成比比较的卡方检验以及分类资料的相关分析等。 卡方检验的适用条件:要求样本含量... -
四、均值t检验,方差卡方检验例题(R语言)
2020-11-26 19:09:53题目 程序及结果 1)程序 x<-c(4,9,11,13,18,20,24,28,45,67) y<-c(5,7,8,12,19,23,32,36,40,52) t.test(x,y,var.equal=TRUE) ... Two Sample t-test ...t = 0.063425, df = 18, p-value = 0.9501 ... -
R实战|卡方检验及其可视化
2022-01-01 01:25:49R实战|卡方检验及其可视化卡方检验卡方检验是一种以分布为基础的用途广泛的假设检验方法。是一种非参数检验方法。检验就是统计样本的实际观测值与理论推断值之间的偏离程度,实际观测值与理论... -
R语言实施皮尔森卡方检验
2017-05-31 18:30:33说明检查两个数据集中的类别分量是否不同,在...卡方检验主要用于两个方面,一是对总体分布进行拟合性检验,检验观查次数是否与某种理论次数相一致。 二是独立性检验,用于检验两组或者多组资料相互关联还是彼此独立。 -
R语言检验独立性:卡方检验(Chi-square test)和费舍尔精确检验分析案例报告
2019-06-12 14:15:09在这篇文章中,我将展示如何计算列联表,我将在列联表中引入两个流行的测试:卡方检验和Fisher精确检验。 什么是列联表? 列联表提供关于两个分类变量的测量的整数计数。最简单的列联表是一个2×22×2频率表,由两... -
R语言卡方检验--ggstatsplot包参数说明
2020-01-26 12:29:17ggstatsplot包参数说明 ggbarstats函数: ggbarstats( data, main, condition, counts = NULL, ratio = NULL, paired = FALSE, labels.legend = NULL, results.subtitle = TRUE, ... sam... -
R语言 | 卡方检验(Chi-squaretest)
2021-05-24 01:17:05卡方检验在计数资料中的应用,包括推断两个总体率或构成比之间有无差别、多个总体率或构成比之间有无差别、多个样本率间的多重比较、两个分类变量之间有无关联性、多维列联表的分析和频数分布拟合优度的卡方检验。... -
R语言分布的卡方拟合优度检验
2021-04-26 09:46:14卡方拟合优度检验,用于衡量观测频数与期望频数之间的差异 总体分布律已知 x<-c(315,108,101,32) chisq.test(x,p=c(9,3,3,1)/16) Chi-squared test for given probabilities data: x X-squared = 0.47002, df... -
R配对卡方检验(McNemar‘s Test)
2021-07-19 22:31:11R配对卡方检验(McNemar's检验) 目录 R配对卡方检验(McNemar's检验) McNemar's检验 McNemar's检验语法 McNemar检验用于确定配对数据之间的比例是否有统计学意义上的差异。 McNemar's检验 ... -
R语言 卡方检验
2018-05-06 10:11:02卡方检验是一种确定两个分类变量之间是否存在显着相关性的统计方法。 这两个变量应该来自相同的人口,他们应该是类似 - 是/否,男/女,红/绿等。 例如,我们可以建立一个观察人们的冰淇淋购买模式的数据集,并尝试... -
R语言【列联表与独立性检验(皮尔逊卡方检验、Fisher 检验)】
2020-04-13 20:56:03R语言与大数据编程实战》 学习笔记