Student's Test统计学原理及其应用
0. 数据正态检验和方差齐性检验的意义
正态性(Normality),严格来说是残差要复合正态分布,不过实际中很多人直接对因变量采用正态性检验,多数情况下二者差不多
方差齐性(Equality of Variances),也就是方差相等。对于每一个x取值,因变量y或者说其残差基本相等
正态性和方差齐性是经典统计模型应用的两个前提条件,如t检验、方差分析、线性回归都需要满足这两个条件, 在非趋中分布(偏态分布)的数据里,均值、方差等概念将失去意义
1. 正态检验
点击查看代码
from scipy.stats import shapiro, kstest, normaltest
from sklearn.datasets import load_wine
dtfData, srzTag = load_wine(return_X_y=True, as_frame=True)
dtfData.head()

# 用Shapiro-Wilk方法对dtfData进行逐行检验
# SPSS规定:当样本含量3 ≤ n ≤5000 时, 结果以Shapiro-Wilk(W)为准,当样本量n > 5000, 结果以Kolmogorov-Smirnov(D)为准
# SAS 规定:当样本含量n ≤ 2000 时, 结果以Shapiro-Wilk(W)为准,当样本量n > 2000, 结果以Kolmogorov-Smirnov(D)为准
dtfPValue1 = dtfData.apply(lambda x: shapiro(x.dropna())).rename(index={0:'stats',1:'p_value'})
# 筛选p_value大于0.05的列
dtfPValue1.loc[:, dtfPValue1.loc['p_value', :] > 0.05]

# 用Kolmogorov-Smirnov对dtfData进行逐行检验
# SPSS规定:当样本含量3 ≤ n ≤5000 时,结果以Shapiro-Wilk(W)为准,当样本量n > 5000, 结果以Kolmogorov-Smirnov(D)为准
# SAS 规定:当样本含量n ≤ 2000 时,结果以Shapiro-Wilk(W)为准,当样本量n > 2000, 结果以Kolmogorov-Smirnov(D)为准
dtfPValue2 = dtfData.apply(lambda x: kstest(x.dropna(), 'norm')).rename(index={0:'stats',1:'p_value'})
# 筛选p_value大于0.05的列
dtfPValue2.loc[:, dtfPValue2.loc['p_value', :] > 0.05]

# 用normaltest对dtfData进行逐行检验
# GraphPad官方推荐使用该方法
dtfPValue3 = dtfData.apply(lambda x: normaltest(x.dropna())).rename(index={0:'stats',1:'p_value'})
# 筛选p_value大于0.05的列
dtfPValue3.loc[:, dtfPValue3.loc['p_value', :] > 0.05]

2. 方差齐性检验
点击查看代码
from scipy.stats import levene
from sklearn.datasets import load_wine
dtfData, srzTag = load_wine(return_X_y=True, as_frame=True)
dtfData.head()

'''
取dtfData的前三行前三列, 可以发现直接遍历DataFrame与遍历DataFrame.columns效果一样, 都是取出了columns
如果想遍历index, 需要显式的指定DataFrame.index
如果想遍历值, 需要显式的指定DataFrame.values, 默认axis=0, 即按行取出值
'''
dtfX=dtfData.iloc[:3,:3]
for i in dtfX:print(i, end=' ')
print()
for j in dtfX.columns:print(j, end=' ')
print()
for k in dtfX.index:print(k, end=' ')
print()
for v in dtfX.values:print(v, end=' ')

# levene接收list-like对象作为形参
fltstats, fltPValue = levene(*dtfData.T.values)
print(f"统计量为{fltstats}, P值为{fltPValue:.3f}")
# 结果:统计量为260.0886098266127, P值为0.000
3. Student's T-test
T检验,又名Student's Test,用于比较两组的平均值,并确定组间差异是否可能是由随机波动引起的统计学方法,最早于1908年由William Sealy Gosset用笔名'Student'发表在科学杂志Biometrika上
3.1 t-test统计量
1️⃣ 检验原理
\(H_0\): 样本均值与总体均值相等
\(H_1\): 样本均值与总体均值不相等
2️⃣ z-检验
记总体服从正态分布,总体均值为\(\mu\),总体方差为\(\sigma^2\),样本均值随机变量\(\bar X = \frac{1}{n}\sum_{i=1}^{n}X_{i}\)(这里n是样本容量),样本标准差随机变量\(s=\sqrt{\frac{1}{n-1}\sum_{i=1}^{n}(X_{i}-\bar X)^{2}}\),那么有:
根据卡方变量的一个重要定理:
\(pass\)
可将z检验转化为t检验
3.2 t-test类型及其性质
| t-test 类型 | 是否要求正态分布 | 是否要求方差齐性 |
| 独立样本t检验 | 是,两样本均服从正态分布 | 是 |
| 配对样本t检验 | 是,两样本差值服从正态分布 | 否 |
| 单样本t检验 | 是,单样本服从正态分布 | 否 |
💢 有没有发现独立样本t检验和方差分析的前置要求是一样的
3.2 t-test实验设计流程

4. linsay report数据格式及详细使用方法
1️⃣ 总体规范
- 原始数据必须是
Excel/csv文件 - 原始数据第一列必须是
特征/指标/代谢物等 - 原始数据第一行必须是
样本名,且样本名需要自行增加前缀以区分组别,格式类似于TMT_1CON_1,分别代表空白组和处理组的1号样本,以此类推!最多两个组,每个组最少三次重复(单样本t检验除外)! - 原始数据除了第一行第一列以外均称为数据区,数据区不允许有缺失值,不允许有非数值型数据
2️⃣ 独立 vs 配对 vs 单样本
- 配对样本t检验要求两组组内样本量一致且按顺序配对
- 单样本t检验要求均值列单列成组,放在整个文件的最后一列
- fc列默认左边均值/右边均值,所以数据排版尽量将处理组放在左边,控制组放在右边
作者: LinsayLector
出处: https://www.cnblogs.com/linsaylector/articles/16532690.html
版权: 本文为原创文章,受到[署名-非商业性使用-相同方式共享4.0]版权协议保护

浙公网安备 33010602011771号