t检验


数据出来了要做三件事:1,检验一下数据是否符合正态分布;2,如果符合正态分布,就进行T检验,看P值是否小于0.05;3,如果数据不符合正态分布,就用另外的“非参数检验”。但是我完全不明白这些名词背后是什么原理。

这些原理是这样的:

举个例子:好比我们有一个H0假设(不希望出现的假设)说:“抽烟人群的肺活量和非抽烟人群没有差异”。我们已经知道非抽烟人群的肺活量均值是u0。因此H0假设就意味着:如果在抽烟人群中抽一个足够大的样本,这个样本的均值应该来自一个均值为u0的正态分布。

为什么样本的均值会服从正态分布呢?当然是因为高大上的“中心极限定理”。

好的,现在我们真的去抽了一个抽烟者样本,算出一个肺活量均值,发现它比非抽烟者的肺活量均值u0低了不少。但是这个时候我们还不能说H0假设就是错的。因为H0假设可以自我辩解说:本来嘛,你的样本均值是来自我这个正态分布,那当然有可能高有可能低。没准你这次只是碰巧抽到一帮肺活量低的人,是你运气不好。

面对这种狡辩,我们……竟然毫无办法!因为这种可能性确确实实是存在的,而且基本上是永远不可能排除掉的。我们任何一个基于统计做出的研究结论,都无法完全否定这样的质疑:你的样本并不能代表“真实”情况,你得到这个结果只是“碰巧”。除非你像超人一样抽样,拿到了全世界所有抽烟者的肺活量数据,才能排除这种所谓“第一类错误”。

但如果要这样想的话,那所有的研究都没法做了。所以我们找了一个现实一点的妥协方案:确实,在你H0假设之下,我是有可能抽样抽到这个均值;但只要让我发现抽到这样的均值的概率小于0.05,我就认为这里面有问题。我认为0.05这么小概率的事情是不可能发生在我身上的。所以如果我们的抽烟者肺活量均值在H0假设之下发生的概率小于0.05,我们就拒绝H0假设,认为抽烟者的平均肺活量和非抽烟者相比,是下降的。

基本上,上面几段只是重复了我第一篇笔记里的内容。所以如果你看过我第一篇笔记的话,可以跳过前面,从这里开始阅读。(那你一开始为什么不说咧!)

那么,我们怎么计算:“在H0假设之下,抽到这个均值的概率”呢?上面说了,H0假设认为,样本均值u来自一个均值为u0的正态分布。我们手里也有样本标准差S。样本的容量是n。那么这就结了,我们把这个正态曲线画出来,把我们的均值标在横坐标上,马上就得到了:在抽样中,抽到的均值小于(或者大于)这个均值的概率。然后我们拿这个概率p去和0.05相比。

这是一个思路,另一个思路是:我们先把0.05所对应的均值在曲线上标出来,这样我们就得到了“可以拒绝H0假设的均值取值范围”。只要我们的均值落在这个范围之内,就说明它悲剧了,它的概率小于0.05;而我们就喜剧了,就可以拒绝H0假设了。而这个范围,我们把它命名为“置信区间”。你把均值“置”入,我就“信”你,这样一个区间。(呃,其实置信区间这个名字另有出处,我以后再另写一篇吧。)

以上这种检验方法是基于正态分布的,我们把它叫做“Z检验”。“Z”代表“正态”的“正”的拼音。(并不是!“Z”在统计学上代表“标准正态分布”。)

但是要应用这种“Z检验”,有个前提:样本容量n要足够大。为什么?同样是因为高大上的“中心极限定理”。我看到课程中举的例题里,使用Z检验的样本容量一般都在100以上。(好像科研实践中是20以上?我忘了。)

那你说我的样本容量只有7啊8啊的,老鼠不给力啊样本收集不上来啊怎么办?没关系,如果你满足另一个前提,你就可以选择我们的另一个优惠套餐。如果你所抽样的那个总体,比如“全体吸烟者的肺活量”,本身服从正态分布的话,就算样本容量小了点,我也可以勉强认为:你的样本均值服从另一种叫做 Student T 的分布。(所以这个优惠套餐是叫学生套餐吗?)

这就是在科研中被大量使用(看来大家的样本数量都不怎么多撒)的:T检验。

注意这里有个容易混淆的概念。Z检验是说:当样本容量足够大时,你的“样本均值”服从某个正态分布。通俗点说:你们实验室去抽了一个样本,得到一个均值;某某大学也做这项研究,也抽了一个样本得到一个均值……这么多均值放在一起,它们是服从正态分布的。为什么?“中!心!极!限!定!理!”

而T检验是说:当样本——那一个个抽烟者的肺活量数字——服从正态分布时,均值服从Student T分布。为什么?抱歉,老师没教……

Student T的分布曲线和正态分布有点像,当然公式不一样。T分布在样本量极大的时候趋近于正态分布。正态分布只要知道均值和标准差就可以画出曲线,T分布还要知道一个值叫“自由度”df,df=n-1。我不知道什么是自由度,但我知道为什么它是n-1而不是n:因为,好比说你的样本里有n个数,你告诉我它们的均值,然后让我猜这n个数是多少。这种情况下,对我来说,前n-1个数都可以“自由”取值,但最后一个却不行。因为一旦前n-1个数确定了,然后根据均值,我就可以算出最后一个数来。所以最后一个数不“自由”。所以自由度是n-1。

自由度在Student T分布和另一种叫“卡方分布”的分布里都有出现。

以上就是Z检验和T检验背后的原理。上面举例举的是一个样本的情况,两个样本的情况可以以此类推。

两个配对样本本质上就是一个样本:比如一个班的学生,期中考的成绩和期末考的成绩,表面上看是两个样本,实际上在做统计的时候,我们是用每个人的期末考减去他本人的期中考,最后还是一个样本。这种情况下H0一般就是两次考试分数没有差异,也就是说期末减期中之后产生的这个样本,其样本均值来自一个均值为0的分布。

两个独立样本情况略复杂,主要是公式里的标准差部分有点变化,均值就拿来直接相减了。具体公式就不写了,其实没必要了解,交给软件或者R就可以了。

T检验的步骤[2]

  1、建立虚无假设H01 = μ2,即先假定两个总体平均数之间没有显著差异;

  2、计算统计量t值,对于不同类型的问题选用不同的统计量计算方法;

  1)如果要评断一个总体中的小样本平均数与总体平均值之间的差异程度,其统计量t值的计算公式为:

  t=\frac{\bar{X}-\mu_0}{\sqrt{\frac{S}{n-1}}}

  2)如果要评断两组样本平均数之间的差异程度,其统计量t值的计算公式为:

  t=\frac{\bar{X}_1-\bar{X}_2}{\sqrt{\frac{\sum x_1^2+\sum x_2^2}{n_1+n_2-2}\times\frac{n_1+n_2}{n_1\times n_2}}}

  3、根据自由度df=n-1,查t值表,找出规定的t理论值并进行比较。理论值差异的显著水平为0.01级或0.05级。不同自由度的显著水平理论值记为t(df)0.01和t(df)0.05

  4、比较计算得到的t值和理论t值,推断发生的概率,依据下表给出的t值与差异显著性关系表作出判断。

T值与差异显著性关系表
tP值差异显著程度
t\ge t(df)0.01P\le 0.01差异非常显著
t\ge t(df)0.05P\le 0.05差异显著
t < t(df)0.05P > 0.05差异不显著

  5、根据是以上分析,结合具体情况,作出结论。

另附一篇详细公式解释http://wiki.mbalib.com/wiki/T%E6%A3%80%E9%AA%8C

### T检验的定义及其分类 T检验是一种用于比较两组数据均值是否存在显著差异的统计分析方法。它主要用于小样本数据分析,当样本数量较小时,正态分布可能不适用,而T检验则通过计算t统计量并评估其对应的p值来判断两个群体之间的差异是否有统计学意义。 #### 独立样本T检验 独立样本T检验适用于比较来自不同群体的数据集。例如,在研究两种治疗方法的效果时,可以通过该测试验证治疗前后的效果是否一致[^1]。以下是使用Python实现的一个例子: ```python import numpy as np from scipy import stats group1 = np.array([23, 21, 19, 25, 27]) group2 = np.array([17, 19, 21, 15, 13]) t_stat_ind, p_val_ind = stats.ttest_ind(group1, group2) print(f'Independent t-test: t-statistic = {t_stat_ind}, p-value = {p_val_ind}') ``` 此代码片段展示了如何利用`stats.ttest_ind()`函数完成独立样本T检验,并返回相应的t统计量和p值[^1]。 #### 配对样本T检验 配对样本T检验适合用来检测同一对象在某种干预措施前后变化的情况下的均值差别的显著性。比如测量患者接受特定药物治疗之前与之后的症状评分的变化程度[^1]。下面是另一个基于Python的例子: ```python before_treatment = np.array([23, 21, 19, 25, 27]) after_treatment = np.array([21, 19, 20, 23, 24]) t_stat_paired, p_val_paired = stats.ttest_rel(before_treatment, after_treatment) print(f'Paired t-test: t-statistic = {t_stat_paired}, p-value = {p_val_paired}') ``` 这里运用了`stats.ttest_rel()`来进行成对观测值间的对比操作。 #### 单样本T检验 单样本T检验旨在确定单一数据集合体平均数偏离指定理论数值的程度是否达到显著水准。这有助于了解实际收集到的一系列读数是否接近预期目标值或者标准参考线[^2]。下面给出一段示范程序: ```python from scipy import stats population_mean = 100 data = pd.Series([...]) # 插入具体实验所得资料序列 t_stat, p_value = stats.ttest_1samp(data, population_mean) print(f"t统计量: {t_stat}, p值: {p_value}") ``` 上述脚本说明了怎样借助`stats.ttest_1samp()`达成针对单独一组实测成果开展假设检定的目的[^2]。 无论采用哪种形式的T检验,最终都需要依据得到的p值去判定原命题(null hypothesis)能否被否定。一般而言,若p值低于预设阈限(如α=0.05),就可认定存在明显区别;反之,则缺乏足够证据支持这一结论[^3]。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值