当前位置: 首页 > news >正文

R语言~T检验

文章目录

  • 引入:
      • 分解理解:
    • 注意
    • 修改(4缸 vs 6缸车)
      • 方法1:筛选数据
      • 方法2:使用subset参数
      • 方法3:直接向量比较
    • 结果差异
    • 验证示例
  • t检验详解及R语言实现
    • 什么是t检验?
    • t检验的三种主要类型
      • 1. 单样本t检验
      • 2. 独立样本t检验
      • 3. 配对样本t检验
    • 实际案例:mtcars数据集分析
      • 案例1:不同气缸数的油耗比较
      • 案例2:自动挡 vs 手动挡的油耗
    • t检验的假设条件
    • 非参数替代方法
    • 结果解释要点
    • 注意事项

引入:

t.test(mpg ~ I(cyl == 4), data = mtcars)

分解理解:

  1. I(cyl == 4)

    • 创建一个逻辑向量:4缸车为TRUE,其他为FALSE
    • 在mtcars中:4缸车 vs (6缸车 + 8缸车)
  2. mpg ~ I(cyl == 4)

    • 公式形式:将mpg按上述分组进行比较
  3. 实际比较的是

    • 组1:4缸车 (TRUE)
    • 组2:6缸车 + 8缸车 (FALSE)

注意

这不是真正的"4缸 vs 6缸车"比较,因为:

  • 包含了8缸车在第二组中
  • 实际上比较的是"4缸车 vs 非4缸车"

修改(4缸 vs 6缸车)

方法1:筛选数据

# 只保留4缸和6缸车
data_46 <- mtcars[mtcars$cyl %in% c(4, 6), ]
t.test(mpg ~ cyl, data = data_46)

方法2:使用subset参数

t.test(mpg ~ cyl, data = mtcars, subset = cyl %in% c(4, 6))

方法3:直接向量比较

mpg_4 <- mtcars$mpg[mtcars$cyl == 4]
mpg_6 <- mtcars$mpg[mtcars$cyl == 6]
t.test(mpg_4, mpg_6)

结果差异

  • 原代码:比较4缸车 vs (6缸+8缸车),两组样本量差异大
  • 修改后代码:只比较4缸车 vs 6缸车,结果更准确

验证示例

# 查看各组数量
table(mtcars$cyl)
#  4  6  8 
# 11  7 14 # 原代码的分组
table(I(mtcars$cyl == 4))
# FALSE  TRUE 
#    21    11 # 修改后的分组(只包含4和6缸)
table(mtcars$cyl[mtcars$cyl %in% c(4,6)])
#  4  6 
# 11  7 

t检验详解及R语言实现

什么是t检验?

t检验是一种统计假设检验方法,用于比较两个群体的均值是否存在显著差异。它基于t分布,适用于小样本情况。

t检验的三种主要类型

1. 单样本t检验

检验单个样本的均值是否与已知的总体均值有显著差异。

R语言代码:

# 生成示例数据
set.seed(123)
sample_data <- rnorm(30, mean = 100, sd = 15)# 单样本t检验:检验均值是否为100
t.test(sample_data, mu = 100)# 检验均值是否为105
t.test(sample_data, mu = 105)# 获取详细结果
result <- t.test(sample_data, mu = 100)
cat("t值:", result$statistic, "\n")
cat("p值:", result$p.value, "\n")
cat("置信区间:", result$conf.int, "\n")
cat("样本均值:", result$estimate, "\n")

2. 独立样本t检验

比较两个独立样本的均值是否有显著差异。

R语言代码:

# 生成两个独立样本
set.seed(123)
group1 <- rnorm(25, mean = 50, sd = 10)
group2 <- rnorm(30, mean = 55, sd = 10)# 基本独立样本t检验
t.test(group1, group2)# 假设方差相等
t.test(group1, group2, var.equal = TRUE)# 单侧检验(检验group1是否小于group2)
t.test(group1, group2, alternative = "less")# 使用数据框格式
data <- data.frame(value = c(group1, group2),group = rep(c("A", "B"), c(25, 30))
)
t.test(value ~ group, data = data)

3. 配对样本t检验

比较同一组受试者在两种不同条件下的差异。

R语言代码:

# 生成配对数据(如治疗前后)
set.seed(123)
before <- rnorm(20, mean = 70, sd = 8)
after <- before + rnorm(20, mean = 5, sd = 3)  # 治疗后有所改善# 配对t检验
t.test(before, after, paired = TRUE)# 另一种写法:直接检验差值
difference <- after - before
t.test(difference, mu = 0)# 可视化配对数据
plot(1:20, before, type = "b", col = "red", ylim = c(60, 85),xlab = "受试者", ylab = "测量值", main = "治疗前后对比")
lines(1:20, after, type = "b", col = "blue")
legend("topright", legend = c("治疗前", "治疗后"), col = c("red", "blue"), lty = 1)

实际案例:mtcars数据集分析

案例1:不同气缸数的油耗比较

# 4缸 vs 8缸车的mpg比较
data_48 <- mtcars[mtcars$cyl %in% c(4, 8), ]
t.test(mpg ~ cyl, data = data_48)# 可视化
boxplot(mpg ~ cyl, data = data_48, main = "不同气缸数的油耗比较",xlab = "气缸数", ylab = "MPG")

案例2:自动挡 vs 手动挡的油耗

# 按变速箱类型分组
t.test(mpg ~ am, data = mtcars)# 添加分组标签
mtcars$transmission <- ifelse(mtcars$am == 0, "自动", "手动")
boxplot(mpg ~ transmission, data = mtcars,main = "变速箱类型对油耗的影响",xlab = "变速箱类型", ylab = "MPG")

t检验的假设条件

  1. 正态性:数据应近似正态分布
  2. 独立性:观测值之间相互独立
  3. 方差齐性:两独立样本的方差应相等(可使用方差齐性检验)

检验假设条件的R代码:

# 正态性检验
shapiro.test(mtcars$mpg)# 方差齐性检验
var.test(mpg ~ cyl, data = data_48)# 当方差不等时使用Welch校正
t.test(mpg ~ cyl, data = data_48, var.equal = FALSE)

非参数替代方法

当数据不满足t检验假设时,可以使用非参数检验:

# Wilcoxon秩和检验(Mann-Whitney U检验)
wilcox.test(mpg ~ cyl, data = data_48)# 配对样本的Wilcoxon符号秩检验
wilcox.test(before, after, paired = TRUE)

结果解释要点

  • p值 < 0.05:拒绝原假设,认为均值存在显著差异
  • 置信区间:如果不包含0,说明差异显著
  • 效应量:衡量差异的大小程度
# 计算效应量(Cohen's d)
library(effectsize)
cohens_d(mpg ~ cyl, data = data_48)

注意事项

  1. 多重比较问题:进行多个检验时需要校正p值
  2. 样本量:小样本时检验效能较低
  3. 异常值:对异常值敏感,需要检查数据
  4. 实际意义:统计显著不等于实际重要

t检验是统计分析中的基础工具,正确理解和应用t检验对于数据分析和科学研究至关重要。

http://www.dtcms.com/a/528784.html

相关文章:

  • 春季大扫除:清理 Arch Linux 中的垃圾
  • 未在props中声明的属性
  • php网站iis设置同心食品厂网站建设项目任务分解
  • 中国启用WPS格式进行国际交流:政策分析与影响评估
  • 中文域名做的网站有哪些网站域名怎么做分录
  • Docker使用【镜像】
  • 全链路智能运维中的业务连续性保障与容灾切换机制
  • linux的文件系统
  • 英语四级真题完整版(1990-2025)|2025年6月最新试题+答案解析|可打印PDF
  • 网站开发 项目的人员分配建筑工程网络计划编制软件
  • React 06
  • 红河县网站建设昆明网站建设哪家
  • 社区互助养老系统设计与实现方案
  • 服装购物商城网站建设安徽六安旅游必去十大景点
  • 「用Python来学微积分」14. 连续函数的运算与初等函数的连续性
  • 红酒商城网站建设广告设计案例网站
  • Linux内核进程管理子系统有什么第六十七回 —— 进程主结构详解(63)
  • 哪个网站可以接针织衫做单淘宝上找人做网站
  • C++容器deque
  • 【NestJS】 OpenAPI文档:运行时动态生成揭秘
  • 关闭VSCode的GitHub Copilot功能
  • 网站页面设计版权企业做网站这些问题必须要注意
  • python opencv gpu加速 cmake msvc cuda编译问题和设置
  • Profibus DP转Modbus TCP工业数据采集网关:实时监测楼宇设备状态
  • HTTP 协议的常用方法有哪些?(GET、POST、PUT、DELETE、PATCH)各自的作用和区别是什么?
  • 什么是 RESTful API?RESTful API 的设计原则有哪些?(URL 语义化、HTTP 方法对应操作、无状态等)
  • 怎么在CSDN插入表格 设置字体颜色
  • Pycatia二次开发基础代码解析:组件识别、选择反转与链接创建技术解析
  • 多线程六脉神剑第五剑:原子操作 (Interlocked)
  • 在阿里云Debian12搭建WG