【R语言】卡方检验

server/2025/2/11 4:38:18/

一、定义

卡方检验是用来检验样本观测次数与理论或总体次数之间差异性的推断性统计方法,其原理是比较观测值与理论值之间的差异。两者之间的差异越小,检验的结果越不容易达到显著水平;反之,检验结果越可能达到显著水平。

二、用法

chisq.test()函数

函数的用法:

chisq.test(x, y=NULL, correct=TRUE, p=rep(1/length(x), length(x)), rescale.p=FALSE, simulate.p.value=FALSE, B=2000)

参数详解:

  1. x:数值向量、因子或矩阵;
  2. y:数值向量或因子;当x是因子时,y也必须是一个相同长度的因子;如果x是一个矩阵,那么y就会被自动忽略。
  3. correct:用于单元格的数值小于5时的连续矫正,只能用于2x2的列联表;连续性矫正通常用于减少由于样本量较小而导致的偏差。
  4. p:表示与x长度相同的概率值向量。用于拟合优度检验时,指定每个类别的期望概率。如果未指定,则默认为等概率分布,即每个类别的概率为1/length(x)
  5. rescale.p:逻辑参数,用于控制是否将p的和重新调整为1;默认情况下为FALSE,表示不进行调整。如果p的元素之和不为1,且rescale.p = TRUE,则会自动将p重新调整为等概率分布。
  6. simulate.p.value:逻辑参数,用于控制是否以蒙特卡洛采样的方法模拟p值。默认情况下为FALSE,表示不使用蒙特卡洛模拟。当样本量较小或期望频数较小时,使用蒙特卡洛模拟可以得到更准确的p值。
  7. B:整数参数,指定蒙特卡洛采样的重复次数。仅在simulate.p.value = TRUE时有效。默认情况下为2000次重复采样。

 三、举例

1、默认p中所有元素都相等

随机抽取了50名儿童从5种玩具中挑选出一种自己最喜欢的玩具。

# 50名儿童对5种玩具的选择结果
toys <- c(10, 8, 20, 7, 5)
# 检验这5种玩具的结果是否相同
chisq.test(toys)
# 参数p中的每个元素默认相同,故设置p=rep(0.2,5)
chisq.test(toys, p=rep(0.2,5))

从以下结果可知,卡方值为14,自由度为4,p值为0.008<0.05,故可得出结论这5种玩具受欢迎程度差异显著。 

 2、p中的元素不等

# 50名儿童对5种玩具的选择结果
toys <- c(10, 8, 20, 7, 5)
p <- c(0.21, 0.13, 0.43, 0.12, 0.11)
chisq.test(toys, p=p)

从 以下结果可知,5种玩具的受欢迎程度不同,但这些不同与前期研究的结论是吻合的(p=0.953>0.05

set.see(123)
norm <- rnorm(10000)
ks.test(norm, y="pnorm")

 3、拟合优度检验ks.test()函数

ks.test()函数是 R 语言中用于执行 Kolmogorov-Smirnov (K-S) 检验的函数。K-S 检验是一种非参数检验方法,用于比较一个样本的分布与一个参考分布(或两个样本的分布)是否存在差异。具体来说,它评估样本数据的累积分布函数(CDF)与参考分布(或另一个样本数据的 CDF)之间的差异是否显著。

单样本K-S检验

检验一个样本是否服从标准正态分布:

# 生成一个标准正态分布的样本
set.seed(123) # 设定随机种子数
sample_data <- rnorm(10000)# 执行单样本 K-S 检验
ks.test(sample_data, "pnorm", mean = 0, sd = 1)

 

双样本K-S检验

 检验两个样本的分布是否相同

# 生成两个样本
set.seed(123)
sample1 <- rnorm(10000, mean = 0, sd = 1)
sample2 <- rnorm(10000, mean = 0.5, sd = 1)# 执行双样本 K-S 检验
ks.test(sample1, sample2)

4、二维列联表独立性检验

若要对二维列联表进行独立性检验,只需要让chisq.test()函数中的x参数为一个矩阵,或者让x参数和y参数都是向量(或同因子)。

用vcd扩展包中的Arthritis数据集为例,男性和女性在接受两种实验处理时的人数是否一致,以及这种相关疗法是否有效果。

x参数是矩阵

library(vcd)
table1 <- table(Arthritis$Treatment, Arthritis$Sex)
table1table2 <- table(Arthritis$Treatment, Arthritis$Improved)
table2chisq.test(x=table1)
chisq.test(x=table2) 

 x和y参数都是因子

chisq.test(x=Arthritis$Treatment, y=Arthritis$Sex)
chisq.test(x=Arthritis$Treatment, y=Arthritis$Improved)

上面两种方法的结果都想死,男性和女性在接受两种实验处理时的人数是一致的,因为p=0.5356>0.05;新疗法也是有效果的,因为p=0.001463<<0.05。


http://www.ppmy.cn/server/166662.html

相关文章

洛谷 P2095 营养膳食 C语言

P2095 营养膳食 - 洛谷 | 计算机科学教育新生态 题目描述 Mr.L 正在完成自己的增肥计划。 为了增肥&#xff0c;Mr.L 希望吃到更多的脂肪&#xff0c;然而也不能只吃高脂肪食品&#xff0c;那样的话就会导致缺少其他营养。 Mr.L 通过研究发现&#xff1a;真正的营养膳食规定…

青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构

青少年编程与数学 02-009 Django 5 Web 编程 03课题、项目结构 一、项目结构项目根目录应用目录其他目录 二、项目设置Django 插件设置项目配置环境变量设置项目目录标记版本控制 三、Django 插件安装 Django 插件配置 Django 插件使用 Django 插件功能 四、扩展插件开发效率插…

未来AI医院蓝图:源码、机器人与数字孪生如何打造智能医疗APP?

在人工智能&#xff08;AI&#xff09;、物联网&#xff08;IoT&#xff09;和大数据技术的推动下&#xff0c;医疗行业正在经历一场深刻的变革。从传统医院到互联网医院&#xff0c;再到智能医疗生态的构建&#xff0c;未来的AI医院不仅能提供更高效的医疗服务&#xff0c;还能…

ProcessingP5js游戏掉落的恐龙蛋

这款游戏是一款趣味十足的物品接取游戏&#xff0c;玩家将扮演一个接物品的角色。游戏的目标是通过控制篮子左右移动&#xff0c;接住从天而降的恐龙蛋和其他物品&#xff0c;积累分数&#xff0c;同时避开掉落的损失道具&#xff0c;确保自己的分数不断增长。 游戏玩法非常简…

OpenGL学习笔记(十二):初级光照:投光物/多光源(平行光、点光源、聚光)

文章目录 平行光点光源聚光多光源 现实世界中&#xff0c;我们有很多种类的光照&#xff0c;每种的表现都不同。将光投射(Cast)到物体的光源叫做投光物(Light Caster)。 平行光/定向光(Directional Light)点光源(Point Light)聚光(Spotlight) 平行光 当一个光源处于很远的地…

ArcGIS中的空值问题

空值是数据的一种特殊状态&#xff0c;当某个字段没有被赋值或者在数据获取、处理过程中数据缺失时就会出现空值。 01、空值的表现形式 【空值】不同于数字型的【零值】或者字符串型的【空格】。 数字型的【零值】是一个确定的数值&#xff0c;表示数量上为0。 字符串型的【…

换电脑了如何快速导出vscode里的插件

当你换电脑了&#xff0c;之前vscode里的插件又不想全部手动重装&#xff0c;那么恭喜你&#xff0c;刷到了这篇文章。 1. 将 VSCode 添加到系统路径 macOS 打开 VSCode。按下 Command Shift P 打开命令面板。 3。 输入 Shell Command: Install ‘code’ command in PATH …

【C语言篇】深入探究 C 语言指针:揭开指针变量与地址的神秘面纱

我的个人主页 我的专栏&#xff1a;C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 目录 引言指针的基础概念 2.1 什么是指针2.2 指针的声明与初始化2.3 指针的存储模型与内存布局 指针的操作 3.1 获取地址与解引用操作3.2 指针的算术…