1. T 检验
三种 T 检验
- 单样本 T 检验:检验样本均值与已知总体均值的差异性,要求样本服从正态分布。
- 配对样本 T 检验:检验配对样本均值是否有显著性差异,要求差值服从正态分布,无方差齐性要求。
例:同一组病人术前、术后某指标分布的差异性检验 - 两独立样本 T 检验:检验非配对样本均值是否有显著性差异,要求两样本均服从正态分布,要求方差齐。
例:某指标在不同性别间的分布差异性检验
T 检验在 Python 中实现
- 正态性检查:K-S 检验 (p > 0.05,则服从正态分布), 样本量较大时可不做
• Python 函数:scipy.stats.kstest(sample, cdf = 'norm')
• 函数输出:统计量,p 值 - 方差齐性检验:levene 检验 (p > 0.05,则具有方差齐性)
• Python 函数:scipy.stats.levene(sample1, sample2)
- 两独立样本 T 检验 (p < 0.05 具有显著性差异)
• Python 函数:scipy.stats.ttest_ind(sample1, sample2, equal_var)
• 方差齐 equal_var = Ture,执行 T 检验;否则,equal_var = False,执行 Welch’s 检验 - 不服从正态分布的数据,应使用配对 Wilcoxon 秩和检验
2. LASSO 特征筛选
- LASSO = Least Absolute Shrinkage and Selection Operator,套索算法
- 一种嵌入式特征选择方法
- LASSO 核心原理:把不重要的特征系数变为 0
LASSO 特征筛选时到底干了啥?
3. T 检验结合 LASSO 实现影像组学特征筛选
-
导入包
import pandas as pd import numpy as np from sklearn.preprocessing import StandardScaler #用于数据归一化处理 from scipy.stats import ttest_ind, levene # T 检验 方差齐性检验 from sklearn.linear_model import LassoCV from sklearn.utils import shuffle # 数据混序
-
导入数据
xlsx_a = 'data/featureTable/aa.xlsx' xlsx_b = 'data/featureTable/bb.xlsx' data_a = pd.read_excel(xlsx_a) data_b = pd.read_excel(xlsx_b) print(data_a.shape,data_b.shape) # (212, 30) (357, 30)
-
t 检验特征筛选
print(levene(data_a['A'], data_b['A'])) # a,b 样本的 A 特征方差齐性检验 # LeveneResult(statistic=90.47705934341127, pvalue=5.279775501703329e-20) # p < 0.05 不符合方差齐性 print(ttest_ind(data_a['A'], data_b['A'], equal_var=False)) # Ttest_indResult(statistic=22.208797758464524, pvalue=1.6844591259582747e-64) # p < 0.05,A 特征在 a,b 样本之间存在显著性差异。 index = [] for colName in data_a.columns[:]: # 遍历所有特征 if levene(data_a[colName], data_b[colName])[1] > 0.05: # 有方差齐性 if ttest_ind(data_a[colName]