第八讲 R-单样本T检验
在“R与生物统计专题”中,我们会从介绍R的基本知识展开到生物统计原理及其在R中的实现。以从浅入深,层层递进的形式在投必得医学公众号更新。
在上一讲中,我们介绍了第七讲 R-相关性分析及作图(点我可跳转)。到目前为止,我们已经学习了R语言基础、R语言的基本统计学技能和作图技能。加入R语言学习群的小伙伴学习积极性也很高,在群里纷纷交作业,想入群的拉倒文末撩小编哦。
单样本t检验用于将一个样本库内的样本某一变量的平均值与已知标准(或理论/假设)平均值进行比较(μ)。
通常,理论均值来自之前的实验或已知内容。例如,中国男人的平均身高为1.67m(先前研究中确定的值)。
1. 研究问题和统计假设
均值(m)是否等于理论平均值(μ)? 均值(m)是否小于理论平均值(μ)? 均值(m)是否大于理论平均值(μ)?
在统计数据中,我们可以定义相应的无效假设(H0) 如下:
假设1)H0:m = μ
假设2)H0:m≤ μ
假设3)H0:m≥ μ
相应的备择假设(H1)如下:
假设1)H1:m ≠ μ (不同)
假设2)H1:m> m(大于)
假设3)H1:m< μ(小于)
假设1)称为双向检验
假设2)和3)称为单向检验
2. 单样本t检验的公式
t统计量可以计算如下:
其中,
m是样本均值
n是样本量
s是样本的标准差,自由度df为n-1
μ是理论均值
我们可以为自由度(df)计算与t检验统计量(| t |),通过查询t分布表格对比其在df=n-1处的P值。
如果p值低于或等于显着性水平0.05,我们可以拒绝无效假设并接受备择假设。换句话说,我们得出结论,样本均值与理论均值有显著差异。
3. 用R完成单样本t检验
可以使用R函数t.test()计算单样本t检验:
t.test(x, mu = 0, alternative = "two.sided")
x:包含数据值的一个数字向量
mu:理论平均值。默认值为0,但可以更改。
alternative:备择假设。允许值为“two.sided”(默认),也可以根据需要设置为“greater”或“less”之一。
在这里,我们将使用名为chickwts的内置R数据集。我们之后会检验chickwts数据中weight与理论值300克之间是否有统计学差异。
# 导入R内自带的chickwts数据集
library(datasets)
data(chickwts)
# 将数据存储在变量my_data中
my_data <- chickwts
你可以使用head()和tails()函数检查数据,这将分别显示数据的第一部分和最后一部分。
# 显示前六行内容
head(my_data)
weight feed
1 179 horsebean
2 160 horsebean
3 136 horsebean
4 227 horsebean
5 217 horsebean
6 168 horsebean
我们想知道,实验中的小鸡重量weight 是否不同于300克?
# weight的统计学概况 (更多详情请参看第四讲 R-描述性统计分析)
summary(my_data$weight)
结果输出
Min. 1st Qu. Median Mean 3rd Qu. Max.
108.0 204.5 258.0 261.3 323.5 423.0
(请参看第五讲 R-数据描述性统计分析作图)
3.4.1 密度图
3.4.2 QQ图
3.4.3 正态性检验(shapiro-Wilk检验)
shapiro.test(my_data$weight)
Shapiro-Wilk normality test
data: my_data$weight
W = 0.97674, p-value = 0.2101
由上视觉分析及正态性检验显示,weight符合正态性分布,可以满足单样本t检验的假设条件(P>0.05)。
# 单样本t检验
test <- t.test(my_data$weight, mu = 300)
# 显示结果
test
输出结果
One Sample t-test
data: my_data$weight
t = -4.1757, df = 70, p-value = 8.426e-05
alternative hypothesis: true mean is not equal to 300
95 percent confidence interval:
242.8301 279.7896
sample estimates:
mean of x
261.3099
在上面的结果中:
t是t检验统计值(t = -4.18),
df是自由度(df = 70),
p值是t检验的显着性水平(p值=8.4e-05)。
conf.int是平均值的置信区间,为95%(conf.int = [242.8, 279.8]);
sample estimates是样本的平均值(平均值= 261.31)。
如果要检验小鸡的体重是否小于300克(单向测试),请输入以下内容:
t.test(my_data$weight, mu = 300,
alternative = "less")
或者,如果要检验小鸡的体重是否大于300克(单向测试),请输入以下命令:
t.test(my_data$weight, mu = 300,
alternative = "greater")
检验的p值为8.4e-05,小于显着性水平alpha = 0.05。我们可以得出结论,小鸡的平均体重与300克的显着不同,p值= 8.4e-05。
t.test()函数的结果是一个包含以下组件的列表:
statistic:t检验统计量的值
parameter:相应自由度下的t检验统计量
p.value:检验的p值
conf.int:适合于指定备择假设的均值的置信区间。
estimate:均值(独立t检验的情况)或比较两组的均值差异(配对t检验的情况)。
用于获取这些值的R代码的格式如下:
# 打印 p 值
test$p.value
[1] 8.426247e-05
# 打印均数
test$estimate
mean of x
19.25
# 打印可信区间
test$conf.int
[1] 242.8301 279.7896
attr(,"conf.level")
[1] 0.95
好了,本期讲解就先到这里。
第二讲 R-编程基础-运算、数据类型和向量等基本介绍
第三讲 R编程基础-矩阵和数据框
第四讲 R-描述性统计分析
当然啦,R语言的掌握是在长期训练中慢慢积累的。一个人学习太累,不妨加入“R与统计交流群”,和数百位硕博一起学习。
快扫二维码撩客服,
带你进入投必得医学交流群,
让我们共同进步!
↓↓
- END -
长按二维码关注「投必得医学」
更多科研干货在等你!
麻烦点一下在看再走呗