数据准备
df <- read.table(file = "D:/Documents/R wd/df.csv", header = T, sep = ",", colClasses = c(year = "character", nitrogen = "character", variety = "character", block = "character")) # 数据导入。
df # 查看数据。
## year nitrogen variety block v1 v2 v3 v4 v5
## 1 2020 N1 a 1 1.26 2.14 3.4 4.66 3.25
## 2 2020 N1 a 2 1.20 2.90 4.1 5.30 1.27
## 3 2020 N1 a 3 1.30 3.00 4.3 5.60 2.24
## 4 2020 N1 b 1 1.08 1.72 2.8 3.88 1.00
## 5 2020 N1 b 2 1.05 1.65 2.7 3.75 3.12
## 6 2020 N1 b 3 1.15 1.35 2.5 3.65 4.57
## 7 2020 N2 a 1 1.32 3.78 5.1 6.42 5.85
## 8 2020 N2 a 2 1.28 4.32 5.6 6.88 6.48
## 9 2020 N2 a 3 1.35 3.95 5.3 6.65 7.21
## 10 2020 N2 b 1 1.33 3.47 4.8 6.13 6.56
## 11 2020 N2 b 2 1.28 2.72 4.0 5.28 8.43
## 12 2020 N2 b 3 1.30 3.90 5.2 6.50 7.55
## 13 2021 N1 a 1 1.19 3.61 4.8 5.99 3.11
## 14 2021 N1 a 2 1.21 3.29 4.5 5.71 2.54
## 15 2021 N1 a 3 1.24 3.26 4.5 5.74 1.28
## 16 2021 N1 b 1 1.09 2.71 3.8 4.89 3.24
## 17 2021 N1 b 2 1.28 2.32 3.6 4.88 1.27
## 18 2021 N1 b 3 1.35 1.95 3.3 4.65 1.15
## 19 2021 N2 a 1 1.45 4.35 5.8 7.25 5.74
## 20 2021 N2 a 2 1.40 3.80 5.2 6.60 6.85
## 21 2021 N2 a 3 1.37 4.23 5.6 6.97 7.42
## 22 2021 N2 b 1 1.28 2.72 4.0 5.28 8.20
## 23 2021 N2 b 2 1.15 3.35 4.5 5.65 5.70
## 24 2021 N2 b 3 1.24 3.46 4.7 5.94 6.00
7.4 t检验
t检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n < 30),总体标准差σ未知的正态分布。t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。
t检验的适用条件为样本分布符合正态分布。
R中检验正态分布的函数:
shapiro.test()
结果p值要是小于0.05,样本分布是非正态分布,如果大于0.05,样本分布是正态分布。
t检验可分为单总体检验和双总体检验,以及配对样本检验。
单总体t检验是检验一个样本平均数与一个已知的总体平均数的差异是否显著。
个人理解的应用实例:已知一个玉米品种的产量是8000 kg/ha,在一个田间试验中测定这个玉米品种的产量,单样本t检验要做的就是检验田间试验测定的产量与已知产量是否相等。
单样本t检验的假设:
H0:样本均值与已知的总体均值相等。
H1:样本均值与已知的总体均值不相等。
t统计量的计算:
m:样本平均值;
:已知总体的均值;
S:样本标准差,自由度df=n-1。
n:样本量。
单样本t检验R调用函数:
t.test(x, mu, alternative = "two.sided")
x:数据向量;
mu:理论平均值。默认为0,可根据自己统计计算需求更改;
alternative:备择假设。允许值为“two.sided”(默认),也可以根据需要设置为“greater”或“less”之一。
t.test(df$v1, mu = 1.5) # 单样本t检验,检验df数据集中v1平均值与理论值1.5间的差异。
##
## One Sample t-test
##
## data: df$v1
## t = -12, df = 23, p-value = 3e-11
## alternative hypothesis: true mean is not equal to 2
## 95 percent confidence interval:
## 1 1
## sample estimates:
## mean of x
## 1
结果解释:p值小于0.05,结论是v1的平均值与理论值1.5有显著差异。
7.4.1 独立样本的t检验
检验两个样本平均数与其各自所代表的总体的差异是否显著。
个人理解的应用实例:检验两个玉米品种产量是否存在差异。
t.test(y ~ x, data)
其中的y是一个数值型变量,x是一个二分变量。
t.test(y1, y2)
其中的y1和y2为数值型向量(即各组的结果变量)。可选参数data的取值为一个包含了这些变量的矩阵或数据框。
t检验默认假定方差不相等,并使用Welsh的修正自由度。你可以添加一个参数var.equal=TRUE以假定方差相等,并使用合并方差估计。默认的备择假设是双侧的(即均值不相等,但大小的方向不确定)。你可以添加一个参数alternative="less"或alternative="greater"来进行有方向的检验。
t.test(v1 ~ variety, data = df) # 检验a品种和b品种v1平均值的差异。
##
## Welch Two Sample t-test
##
## data: v1 by variety
## t = 2.1327, df = 20.893, p-value = 0.04498
## alternative hypothesis: true difference in means between group a and group b is not equal to 0
## 95 percent confidence interval:
## 0.002028389 0.162971611
## sample estimates:
## mean in group a mean in group b
## 1.2975 1.2150
结果解读:得到结果中P值小于0.05,说明要拒绝原假设(两品种v1值无差异),接受备择假设,即两品种v1值差异显著。
7.4.2 非独立样本的t检验
非独立样本的t检验假定组间的差异呈正态分布。
个人理解的应用实例:一个玉米品种接受两个施氮处理,两个施氮处理下玉米的产量是否存在差异。
t.test(y1, y2, paired=TRUE)
其中的y1和y2为两个非独立组的数值向量。
t.test(df[1:6,5], df[7:12,5], paired = TRUE) # 检验2020年N1处理下v1平均值和N2处理下v1平均值间差异。同一指标不同氮水平处理下差异。
##
## Paired t-test
##
## data: df[1:6, 5] and df[7:12, 5]
## t = -3.8233, df = 5, p-value = 0.01233
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.2285547 -0.0447786
## sample estimates:
## mean of the differences
## -0.1366667
t.test(df[1:6,5], df[13:18,5], paired = TRUE) # 检验在2020年和2021年N1处理下v1平均值间差异。同一指标年际间差异。
##
## Paired t-test
##
## data: df[1:6, 5] and df[13:18, 5]
## t = -1.0047, df = 5, p-value = 0.3611
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -0.18978687 0.08312021
## sample estimates:
## mean of the differences
## -0.05333333
结果解读:不同氮素水平的比较显示p值小于0.05,说明v1值在两个氮水平间差异显著;而两个年份下v1值无显著差异。
7.4.3 多于两组的情况
如果想在多于两个的组之间进行比较,应该怎么做?如果能够假设数据是从正态总体中独立抽样而得的,那么你可以使用方差分析(ANOVA)。ANOVA是一套覆盖了许多实验设计和准实验设计的综合方法。
参考资料:
- 《R语言实战》(中文版),人民邮电出版社,2013.
- t检验-百度,https://baike.baidu.com/item/t%E6%A3%80%E9%AA%8C
- 单样本t检验-投必得R语言教程,https://mp.weixin.qq.com/s?__biz=MzU1Mzc3OTIwNg==&mid=2247487807&idx=2&sn=4a4a01b6398fefb69231a3919e142ce6&chksm=fbecf856cc9b71404241f2559fcf62674f9969021bc968255eab7a44101c4000b26ce3cc8a22&scene=21#wechat_redirect