R语言T检验的简单小例子
T检验是用来检验两组数据之间均值是否有差异的一种方法,比如下面我们用到的数据包括20个男生和20个女生的体重数据。
试验设计是自然群体下(人们正常生活,没有可以控制自己的体重)探究
- 男生和女生之间的体重是否有差异?
- 或者男生的体重是否大于女生?
- 再或者男生的体重是否小于女生?
于是在理想的群体中随机抽取20个男生和20个女生测量体重,记录数据。
这时候的统计检验方法就可以选择T检验。
本篇文章的内容参考https://www.datanovia.com/en/lessons/how-to-do-a-t-test-in-r-calculation-and-reporting/how-to-do-two-sample-t-test-in-r/
示例数据集来自datarium
包的genderweight
加载数据data('genderweight',package='datarium')
查看数据前六行head(genderweight)
数据集是一个数据框,将男生和女生的数据拆分成两个向量
library(dplyr)
women_weight <- genderweight %>%
filter(group == "F") %>%
pull(weight)
women_weight
men_weight <- genderweight %>%
filter(group == "M") %>%
pull(weight)
men_weight
这里我新学到的函数是pull()
,作用是用管道符把数据传递给他然后指定列名就直接转换成向量了。
如果要检验均值是否相等
t.test(women_weight,men_weight)
输出结果是
Welch Two Sample t-test
data: women_weight and men_weight
t = -20.791, df = 26.872, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-24.53135 -20.12353
sample estimates:
mean of x mean of y
63.49867 85.82612
t检验的零假设是两组数据均值相等,结果中p-value小于0.05,拒绝原假设,接受备择假设alternative hypothesis,备择假设是true difference in means is not equal to 0,翻译过来就是平均值差异不等于0,就是均值有差异。 这个做的是Welch Two Sample t-test
,如果要做学生式T检验,可以在t.test()
函数里加var.equal=T
参数
> t.test(women_weight,men_weight,var.equal=T)
Two Sample t-test
data: women_weight and men_weight
t = -20.791, df = 38, p-value < 2.2e-16
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-24.50140 -20.15349
sample estimates:
mean of x mean of y
63.49867 85.82612
如果要看男生体重是否比女生大,需要加alternative
参数
t.test(men_weight,women_weight,var.equal=T,alternative = "greater")
男生的数据放第一个参数,女生的数据方第二个参数,alternative = "greater"
是指备择假设是男生体重大于女生,对应的零假设就是男生体重不大于女生。 结果
Two Sample t-test
data: men_weight and women_weight
t = 20.791, df = 38, p-value < 2.2e-16
alternative hypothesis: true difference in means is greater than 0
95 percent confidence interval:
20.51693 Inf
sample estimates:
mean of x mean of y
85.82612 63.49867
p-value小于0.05拒绝原假设,所以结论就是男生体重大于女生
接下来是结果展示,T检验的结果通常可以用箱线图来展示
library(ggplot2)
ggplot(genderweight,aes(x=group,y=weight))+
geom_boxplot(aes(fill=group))+
geom_jitter(aes(color=group))+
geom_segment(aes(x=1,xend=1,y=70,yend=100))+
geom_segment(aes(x=2,xend=2,y=96,yend=100))+
geom_segment(aes(x=1,xend=2,y=100,yend=100))+
annotate('text',x=1.5,y=102,label="p-value< 2.2e-16")+
theme_bw()
- 生产环境大型sql语句调优实战第一篇(一) (r2笔记第31天)
- 讨论 | 你是否遇到过你完全不能理解的机器学习概念?
- 【专业技术】C++里面重要的几个关键字的用法
- sql monitor的使用(一) (r2第30天)
- sql_profile的使用(一) (r2笔记29天)
- 关于权限设置的一个小把戏(r2第27天)
- R语言实现混合模型
- 数据迁移判断非空约束(r2笔记45天)
- 【专业技术】linux下socket编程
- oracle并行的小细节(r2笔记44天)
- python实现朴素贝叶斯模型:文本分类+垃圾邮件分类
- 使用闪回查询备份数据(r2笔记43天)
- 生产环境sql语句调优实战第四篇(r2笔记41天)
- 生产环境sql语句调优实战第五篇(r2笔记41天)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- (数据科学学习手札96)在geopandas中叠加在线地图
- 秋天的第一杯奶茶该买哪家?Python 爬取美团网红奶茶店告诉你
- AttributeError: NoneType object has no attribute‘’
- tf.control_dependencies(control_inputs)
- tf.get_collection()
- tf.reduce_mean()
- tf.placeholder函数说明
- tf.sigmoid()用法
- Latex 表格过大(或过小)的调整方法
- Latex设置字体大小及表格中的文字大小等
- jQuery 选择器
- jQuery 介绍 以及基本使用
- 答应我,用了这个jupyter插件,别再重复造轮子了
- 商业数据分析从入门到入职(9)Python网络数据获取
- 谈一谈还原解包后小程序页面wxss样式的若干方法