1. 简介
T检验,亦称student t检验(Student's t test),主要用于样本含量较小(例如n<30),总体标准差σ未知的正态或近似正态总体,它比较的是服从t分布的两组数据是否有差异。
2. 想一想是不是独立分组
3. 检验是否为正态分布
- qqplot
qqplot是用来检测两组数据分布是否相同的图形方式,如果量组数据分布相同,那么他们的qqplot将会是一条直线。
检验正态性qqplot一般步骤:
set.seed(5)
S <- rt(30, df = 2, ncp = 1)
s <- as.data.frame(S)
ggplot(data = s, aes(sample = S)) + geom_qq()+
geom_qq_line(distribution = qnorm)
但,有时候用rt产生的t分布与正态分布的QQ图也不是一条直线。٩(๑❛ᴗ❛๑)۶
- Kolmogorov-Smirnov test
连续分布检验: 检验单一样本是否服从某一预先假设的特定分布的方法。
ks.test(x, y, ...,
alternative = c("two.sided", "less", "greater"),
exact = NULL)
当y是数字时,H0:两数据集分布相同; 当y是字符串时,H0: 数据集x,是符合y所表示的分布的;
结果:D值越小,越接近0,表示样本数据越接近T分布;如果p-value小于显著性水平α(0.05),则拒绝H0 。总的来说,D越小,P越大说明数据越符合已知分布。
这个检验非常严格,如果两个正态分布的mean值不同,P值也会非常小,就会拒绝H0,认为两组数据来源不相同。
- Shapiro–Wilk test
是一种在频率上统计检验中检验正态性的方法,适用于大多数数值是单一的。
H0: 数据符合正态分布
shapiro.test ()
W值:W越小,越接近0,表示样本数据越接近正态分布
p值:如果p-value小于显著性水平α(0.05),则拒绝H0
- Anderson-Darling Test For Normality
检测待测数据是否与已知目标数据分布相同。
ad.test{ nortest}
- Statistical bootstrap methods
estimates the accuracy/sampling distribution of a statistic
boot{boot}
- D'Agostino-Pearson normality test
if you have lots of repeated values
- Lilliefors normality test
mean and variance are unknown
- Spiegelhalter's T' normality test
powerful non-normality is due to kurtosis, but bad if skewness is responsible
- Jarque–Bera test
- Anderson–Darling test
- Cramér–von Mises criterion
- Pearson's chi-squared test
- Kullback–Leibler divergences
感觉选哪个检测方法都有风险,最好先做个qqplot看看。
4. 方差齐性
使用F检验来测试方差的齐性。 可以使用函数var.test()。
var.test(x ~ group, data = data)
5. 使用
- 单样本T检验:用于比较样本数据与一个特定数值之间是否的差异情况 。
t.test(x, mu = 0, alternative = "two.sided")
- 独立样本T检验:要求服从正态分布和总体方差相等(方差齐)。
# 数据储存为data.fram格式
t.test(x~ y, data = data)
# 数据为两列表
t.test(x,y)
配对样本T检验:要求两组样本量相等 ,最好具有时间先后格局的数据,如:吃药前血压和吃药后血压,处理前处理后等。
# 与上面一样
t.test(x,y, paired = T)
- tips: 同样的数据,选择配对比较与不配对比较的结果是不同的,一定对数据有较为清晰的认知,选择合适的方法;如果不知道该选两尾还是一尾,推荐更为保守的两尾,让数据自己说话。
6. 结果
- p-value 决定是否拒绝0假设,如果低于0.05或者0.01,就需要拒绝零假设,接受备择假设(alternative hypothesis: true difference in means is not equal to 0)。
- 如果高于0.05,择无法拒绝0假设,认为两个数组的值是相等的。
- 如果想知道x的means比y的小还是大,加入参数alternative = "less"/"greater"
7. 只有平均数,标准差和样本量做Ttest
只有统计量的Ttest,BSDA包。
tsum.test(mean.x, s.x, n.x,
mean.y, s.y, n.y)
8.T检验的局限
T检验使用起来很方便,但经常误用的情况包括:
- 不考虑数据的正态性,只要是两组比较就直接使用t检验(如果不符合正态性,就要采用Wilcoxon检验);
- 将t检验用于多组实验设计中的两两比较,增加假阳性错误(此时应该使用ANOVA);
- 不考虑资料是否独立,采用独立资料进行t检验分析。