t分布与t检验笔记

t分布

具有正态分布$N(\mu,\sigma)$观测值的样本量为n的样本均值也是正态分布变量,在统计推断中往往希望利用它减去总体的均值再除以均值的总体标准差来得到标准正态变量,如下所示:

$Z=\frac{\bar{X}-\mu}{\sigma\sqrt{n}}$

在这个变换中,如果用均值的样本标准差来代替其未知的总体标准差时(因为总体的标准差往往未知),即用$(\bar{x}-\mu)/(s/\sqrt{n})$代替$(\bar{x}-\mu)/(\delta/\sqrt{n})$,如下所示:

$t=\frac{\bar{X}-\mu}{s\sqrt{n}}$

得到的分布就不再是标准正态分布了,它的密度曲线有点像正态分布,不过中间瘦,尾巴长,这种分布称为t分布(t-distribution,或称为学生分布,Student’s t),这个分布是戈塞特(Gosset)发现的,他当时用t来表示这个变量,当时戈塞特在发表论文中,他使用的笔名是Student,因此也叫学生分布,不同的样本量通过标准化所产生的t分布也不同,这样就形成了一族分布,t分布族中的成员是以自由度来区分的,这里的自由度等于样本量减去1,即n-1,t分布通常用于研究小样本的均值,如果自由度趋于无穷,那么t分布就是标准正态分布了,一个有k个自由度的t分布用t(k)表示,下图就展示了标准正态分布N(0,1)和自由度等于1的t(1)以及自由度等于2的t(2)分布的密度函数曲线,我们可以看出,t分布两边尾巴比较长,如下所示:

1
2
3
4
5
6
xt<-seq(-4,4,length=300)
yt1<-data.frame(x=xt,y=dnorm(xt),group=rep("N(0,1)",300))
yt2<-data.frame(x=xt,y=dt(xt,2),group=rep("t(2)",300))
yt3<-data.frame(x=xt,y=dt(xt,1),group=rep("t(3)",300))
y_t <- rbind(yt1,yt2,yt3)
ggplot(y_t,aes(x=x,y=y,color=group))+geom_line()

mark

通常使用$t_{\alpha}$表示t分布相应于右侧尾概率$\alpha$的t变量的$\alpha$上侧分位数,即对t分布变量T,有$P(T>t_{\alpha})=\alpha$,下图就表示了自由度为2的t(2)分布右边的尾概率($\alpha=0.05$),如下所示:

mark

t分布的密度分布图

1
2
3
4
5
6
7
8
9
10
set.seed(1000)
x <- seq(-5,5,length.out=1000)
y <- dt(x,1,0)
plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,0.5),type="l",
xaxs="i",yaxs="i",ylab="density",xlab="",
main="The T density distribution")
lines(x,dt(x,5,0),col="green")
lines(x,dt(x,5,2),col="blue")
lines(x,dt(x,50,4),col="orange")
legend("topleft",legend=paste("df=",c(1,5,5,50),"ncp=",c(0,0,2,4)),lwd=1,col=c("red","green","blue","orange"))

t分布的累积分布图

1
2
3
4
5
6
7
8
9
10
set.seed(1)
x<-seq(-5,5,length.out=1000)
y<-pt(x,1,0)
plot(x,y,col="red",xlim=c(-5,5),ylim=c(0,0.5),type='l',
xaxs="i", yaxs="i",ylab='density',xlab='',
main="The T Cumulative Distribution Function")
lines(x,pt(x,5,0),col="green")
lines(x,pt(x,5,2),col="blue")
lines(x,pt(x,50,4),col="orange")
legend("topleft",legend=paste("df=",c(1,5,5,50)," ncp=", c(0,0,2,4)), lwd=1, col=c("red", "green","blue","orange"))

mark

某一数据是否符合t分布

Kolmogorov-Smirnov连续分布检验: 检验单一样本是不是服从某一预先假设的特定分布的方法。以样本数据的累计频数分布与特定理论分布比较,若两者间的差距很小,则推论该样本取自某特定分布族。
该检验原假设为H0:数据集符合T分布,H1:样本所来自的总体分布不符合T分布。令F0(x)表示预先假设的理论分布,Fn(x)表示随机样本的累计概率(频率)函数.
统计量D为: D=max|F0(x) - Fn(x)|
D值越小,越接近0,表示样本数据越接近T分布
p值,如果p-value小于显著性水平α(0.05),则拒绝H0

1
2
3
set.seed(1)
S<-rt(1000, 1,2)
ks.test(S, "pt", 1, 2)

其中p-value = 0.5461,说明数据集S符合df1=1, ncp=2的T分布

方差齐性检验

t检验过程,是对两样本均数(mean)差别的显著性进行检验。惟t检验须知道两个总体的方差(Variances)是否相等;t检验值的计算会因方差是否相等而有所不同。也就是说,t检验须视乎方差齐性(Equality of Variances)结果。但现在多数统计软件中已经有了方差不齐情况下的检验。另外,在ANOVA检验中,也要进行方差齐性检验。

t检验

T检验,亦称student t检验(Student’s t test),主要用于样本含量较小(例如n<30),总体标准差σ未知的正态分布资料。

在此要提一下Z检验。
Z检验是一般用于大样本(即样本容量大于30)平均值差异性检验的方法。它是用标准正态分布的理论来推断差异发生的概率,从而比较两个平均数>平均数的差异是否显著。当已知标准差时,验证一组数的均值是否与某一期望值相等时,用Z检验。

R中t检验的函数为t.test(),参数如下所示:

1
2
3
t.test(x, ...)
t.test(x, y = NULL,alternative = c("two.sided", "less", "greater"),mu = 0, paired = FALSE, var.equal = FALSE, conf.level = 0.95, ...)

参数说明
其中x, y是我们样本数据构成的向量,alternative表示备择假设的形式,“two.sided”表示双边检验(H1: 1不等于μ2), “less”表示单边检验(H1:μ1小于μ2),“greater”表示单边检验(H1:μ1大于μ2),paired表示样本是否是配对的,var.equal表示两总体方差是否相等。

案例运用

配对t检验

例3-6为比较两种方法对乳酸饮料中脂肪含量测定结果是否不同,随机抽取了10份乳酸饮料制品,分别用脂肪酸水解法和哥特里-罗紫法测定其结果如表3-5第(1)~(3)栏。问两法测定结果是否不同?(《医学统计学》(第四版,孙振球)

1
2
3
4
raw_data <- read.csv("https://raw.githubusercontent.com/20170505a/raw_data/master/data_szq_306.csv",sep="\t")
# read raw data
t.test(raw_data$result[1:10]-raw_data$result[11:20],mu=0)

计算结果如下所示:

1
2
3
4
5
6
7
8
9
10
11
12
> t.test(raw_data$result[1:10]-raw_data$result[11:20],mu=0)
One Sample t-test
data: raw_data$result[1:10] - raw_data$result[11:20]
t = 7.926, df = 9, p-value = 2.384e-05
alternative hypothesis: true mean is not equal to 0
95 percent confidence interval:
0.1946542 0.3501458
sample estimates:
mean of x
0.2724

结果与书中相同,p值小于0.01,但我觉得这个方法不一定要用配对t检验,普通的t检验也能胜任。

双样本t检验

例3-7 为研究国产四类新药阿卡波糖胶囊的降血糖效果,某医院用40名II型糖尿病病人进行同期随机对照试验。研究者将这些病人随机等分到试验组(用阿卡波糖胶囊)和对照组(用拜唐苹胶囊),分别测得试验开始前和8周时的空腹血糖,算得空腹血糖下降值见表3-6,能否认为该国产四类新药阿卡波糖胶囊与拜唐苹胶囊对空腹血糖的降糖效果不同?(《医学统计学》(第四版,孙振球)

1
2
3
4
5
raw_data <- read.csv("https://raw.githubusercontent.com/20170505a/raw_data/master/data_szq_307.csv",,header=T,sep=",")
a <- as.numeric(raw_data[,1])
b <- as.numeric(raw_data[,2])
t.test(a,b)

运算结果如下所示:

1
2
3
4
5
6
7
8
9
10
Welch Two Sample t-test
data: a and b
t = -0.64187, df = 36.086, p-value = 0.525
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
-2.32926 1.20926
sample estimates:
mean of x mean of y
2.065 2.625

结果p值为0.525。因此尚不能认为阿卡波糖胶囊与拜唐苹胶囊对空腹血糖的降糖效果不同。

t检验的局限

虽然t检验使用起来很方便,但是如果不加以注意,很容易误用,经常误用的情况包括:

  1. 不考虑数据的正态性,只要是两组比较就直接使用t检验(如果不符合正态性,就要采用Wilcoxon检验)。
  2. 将t检验用于多组实验设计中的两两比较,增加假阳性错误(此时应该使用ANOVA);
  3. 不考虑资料是否独立,采用独立资料的t检验分析。