R语言与统计-1:t检验与秩和检验

一般根据数据是否符合正态分布,选择合适的统计方法:

统计方法 适用情况
t.test() 比较两组(参数)
wilcox.test() 比较两组(非参数)
aov()或anova() 比较多组(参数)
kruskal.test() 比较多组(非参数)

1. T检验

T检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布资料。t检验是用t分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。它与Z检验、卡方检验并列。

做t检验需要满足的条件:
1. 服从正态分布
2. 方差齐性(方差是离散量,反映了数据的离散程度,如果两个方差的离散程度相差太大,说明两组数据的离散程度不一致,称为不齐性)

不满足方差齐性用t'检验

1.1 shapiro.test()函数检验数据是否服从正态分布
data1 <- sample(1:100,50)
shapiro.test(data1)

#   Shapiro-Wilk normality test 

#data:  data1
#W = 0.94483, p-value = 0.02101 ##(p>0.05不能拒绝原假设,说明这组数据符合正态分布)

其他进行正态性检验的函数 (如下函数都属于nortest包)
Lillie.test()
ad.test()
cvm.test()
pearson.test()
sf.test()
不同的函数可能会得到不同的结果。
对于不服从正态分布的数据,可以采用一些方法使它服从正态分布。

1.2 方差齐性检验var.test()

var.test只能用于两样本方差齐性检验

var.test()
1.3 t检验(使用t.test()函数)
  • 两组样本均数的比较(两组样本的t检验)
# 生成两组符合正态分布的数据
data3 <- rnorm(100,3,5)
data4 <- rnorm(200,3.4,8)

##方差齐性检验
var.test(data3,data4)

#   F test to compare two variances

# data:  data3 and data4
# F = 0.37241, num df = 99, denom df = 199,
# p-value = 1.339e-07
# alternative hypothesis: true ratio of variances is not equal to 1
# 95 percent confidence interval:
#  0.2670589 0.5297787
# sample estimates:
# ratio of variances 
#          0.3724146 
###可以看到p值远<0.05,方差不齐

#t检验
#⚠️方法不齐时要设置var.equal = F,设置var.equal = F时进行的是t' test
t.test(data3,data4,var.equal = F) 

#   Welch Two Sample t-test

# data:  data3 and data4
# t = 0.39341, df = 286.43, p-value = 0.6943
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
#  -1.158859  1.737839
# sample estimates:
# mean of x mean of y 
#  3.407682  3.118192
###可以看到p>0.05,95%置信区间包括了0(和p>0.05等价),两组数据均值没有统计学差异
  • 样本均数与总体均数的t检验
t.test(data3,mu=3.2) #mu设置总体均数

#   One Sample t-test

# data:  data3
# t = 0.43198, df = 99, p-value = 0.6667
# alternative hypothesis: true mean is not equal to 3.2
# 95 percent confidence interval:
#  2.453729 4.361636
# sample estimates:
# mean of x 
#  3.407682 
  • 配对t检验
data3 <- rnorm(200,3,5)
data4 <- rnorm(200,3.4,5)
t.test(data3,data4,paired = TRUE) #paired默认=False

#   Paired t-test

# data:  data3 and data4
# t = -2.1637, df = 199, p-value = 0.03168
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
#  -2.02744560 -0.09397804
# sample estimates:
# mean of the differences 
#               -1.060712 
1.4数据变换

当数据不满足正态分布的时候,要进行t检验必须进行原始数据的变换。如取log,平方根,倒数,boxCox转换等。

2. Wilcox秩和检验 wilcox.test()

Wilcox秩和检验(又称Mann-Whitney U检验)是对原假设的非参数检验,在不需要假设两组样本数据为正态分布的情况下,测试二者数据分布是否存在显著差异,此检验适用于数据分布属于非正态性的分析对象,其适用范围相较于t检验广泛。

#利用mtcars数据 
library(stats)
data("mtcars")
boxplot(mtcars$mpg~mtcars$am,ylab='mpg',names = c('automatic','manual))
#执行wilcoxon秩和检验验证自动档手动档数据分布是否一致

wilcox.test(mpg~am,data = mtcars)
#wilcox.test(mtcars$mpg[mtcars$am==0],mtcars$mpg[mtcars$am==1])  ##(与上面等价)

# Wilcoxon rank sum test with continuity correction

# data:  mpg by am
# W = 42, p-value = 0.001871
# alternative hypothesis: true location shift is not equal to 0

# Warning message:
#In wilcox.test.default(x = c(21.4, 18.7, 18.1, 14.3, 24.4, 22.8,  :
#  cannot compute exact p-value with ties

执行wilcoxon秩和检验(也称Mann-Whitney U检验)这样一种非参数检验 。t检验假设两个样本的数据集之间的差别符合正态分布(当两个样本集都符合正态分布时,t检验效果最佳),但当服从正态分布的假设并不确定时,我们执行wilcoxon秩和检验来验证数据集中mtcars中自动档与手动档汽车的mpg值的分布是否一致,p值<0.05,原假设不成立。意味两者分布不同。警告“无法精確計算带连结的p值“这是因为数据中存在重复的值,一旦去掉重复值,警告就不会出现。

你可能感兴趣的:(R语言与统计-1:t检验与秩和检验)