(管理学本科水平:指本科学了个锤子的管理学专业毕业生开始从0开始学习统计学)
文章目录
1. 数据类型
categorical / integer
详情请参考我写的另一篇博文:测量尺度:名义尺度、定序尺度、定距尺度和定比尺度
2. 科学术语
- 无放回抽样sampling without replacement
- 偏倚
偏度是对数据分布对称性的测度,衡量数据分布是否左偏或右偏。
峰度是对数据分布平峰或尖峰程度的测度,它是一种简单而常用的正态性统计检验量。 - 长尾
- 列联表 / 交互分类表:按照两至多个属性进行分类,列出频数表1
- 独立成分分析ICA
- 统计推断statistical inference
- 参数估计parameter estimation
- 假设检验
- bootstrap:一种抽样方法。大概来说就是放回抽样多次,用多次抽样的指标的平均值作为最终的指标2
3. 分布
- 正态(高斯)分布
- 泊松分布
4. 假设检验
1. 参数检验 / 一致性评价
各种用以衡量两组数据是否一致的方法
- 学生T检验
用于检验两独立样本数据的均值是否存在显著差异。
使用前提:1. 各样本观察值为独立同分布的 2. 样本数据服从正态分布 3. 每个样本观测值的方差相等
from scipy.stats import ttest_ind
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [1.142, -0.432, -0.938, -0.729, -0.846, -0.157, 0.500, 1.183, -1.075, -0.169]
stat, p = ttest_ind(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('不能拒绝原假设,两样本集分布相同')
else:
print('拒绝原假设,样本集分布可能不同')
- Bland-Altman分析 / BA分析3:主要用于比较两种不同的测量方法或工具对相同样本的测量准确性和一致性
2. 相关性检验
各种用以衡量两组数据是否相关的方法
1. 数值变量
- 皮尔生(Pearson)乘积矩相关系数r / 皮尔逊相关系数 / 皮尔逊积矩相关系数 / PPMCC / PCCs:衡量线性相关性的强度
该检验将两个变量之间的协方差进行归一化处理以给出可解释的分数,为一个介于-1到1之间的值,-1表示完全负相关,1表示完全正相关,0表示没有相关性。
使用前提:1. 各样本观察值为独立同分布的 2. 样本数据服从正态分布 3. 每个样本观测值的方差相等
原假设:两变量相互独立
PEARSON 函数 - Microsoft 支持
from scipy.stats import pearsonr
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [0.353, 3.517, 0.125, -7.545, -0.555, -1.536, 3.350, -1.578, -3.537, -1.579]
stat, p = pearsonr(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('两变量相互独立')
else:
print('两变量可能存在线性相关关系')
- Spearman等级相关
用于检验两变量是否具有单调关系。
当两变量因非线性关系相关,或者不服从正态分布时,Spearman相关系数可以用来反映变量间的相关性强度。如果存在线性关系,也可以使用这种方法来检验,但是可能导致计算出的相关系数较低。
Spearman不是使用样本数据本身的协方差和标准差来计算相关系数的,而是根据样本值的相对秩次来计算统计量,这是非参数统计中常用的方法。
使用前提:1. 各样本观察值为独立同分布的 2. 各样本数据可定序
from scipy.stats import spearmanr
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [0.353, 3.517, 0.125, -7.545, -0.555, -1.536, 3.350, -1.578, -3.537, -1.579]
stat, p = spearmanr(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('两变量相互独立')
else:
print('两变量可能存在相关关系')
- Kendall等级相关
用于检验两变量是否具有单调关系。
使用前提:1. 各样本观察值为独立同分布的 2. 各样本数据可定序
from scipy.stats import kendalltau
data1 = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
data2 = [0.353, 3.517, 0.125, -7.545, -0.555, -1.536, 3.350, -1.578, -3.537, -1.579]
stat, p = kendalltau(data1, data2)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('两变量相互独立')
else:
print('两变量可能存在相关关系')
2. 分类变量
- Chi-Squared Test卡方检验:用于检验两分类变量是否相关。
卡方检验的零假设是一个分类变量的观测频数与该分类变量的期望频数相吻合。检验统计量服从卡方分布。
使用前提:用于计算两变量的列联表的观测值是独立的
列联表的每个单元格的期望计数不小于5
原假设:两变量相互独立
from scipy.stats import chi2_contingency
from scipy.stats import chi2
# 列联表
table = [[10, 20, 30],
[6, 9, 17]]
print('列联表')
print(table)
stat, p, dof, expected = chi2_contingency(table)
print('自由度dof=%d' % dof)
print('期望分布')
print(expected)
# [[10.43478261 18.91304348 30.65217391]
# [ 5.56521739 10.08695652 16.34782609]]
# 采用统计量推断
prob = 0.95
critical = chi2.ppf(prob, dof)
print('probability=%.3f, critical=%.3f, stat=%.3f' % (prob, critical, stat))
if abs(stat) >= critical:
print('拒绝原假设,两变量存在相关关系')
else:
print('不能拒绝原假设,两变量相互独立')
# 采用p值推断
alpha = 1.0 - prob
print('significance=%.3f, p=%.3f' % (alpha, p))
if p <= alpha:
print('拒绝原假设,两变量存在相关关系')
else:
print('不能拒绝原假设,两变量相互独立')
3. 显著性检验
- 方差检验ANOVA
- one-way ANOVA
4. 正态分布检验
- Shapiro-Wilk Test (W 检验):用于检验样本数据是否来自服从正态分布的总体
在实际应用中,W 检验被认为是一个可靠的正态性检验,但是也有人认为该检验更适用于较小的数据样本(数千个观测值以内)。
使用前提:各样本观察值为独立同分布的
from scipy.stats import shapiro
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
stat, p = shapiro(data)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('不能拒绝原假设,样本数据服从正态分布')
else:
print('不服从正态分布')
- D’Agostino’s
K
2
K^2
K2 Test:用于检验样本数据是否来自服从正态分布的总体。
D’Agostino’s K 2 K^2 K2 Test是通过计算样本数据的峰度和偏度,来判断其分布是否偏离正态分布。
使用前提:各样本观察值为独立同分布的
from scipy.stats import normaltest
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
stat, p = normaltest(data)
print('stat=%.3f, p=%.3f' % (stat, p))
if p > 0.05:
print('不能拒绝原假设,样本数据服从正态分布')
else:
print('不服从正态分布')
- Anderson-Darling Test:用于检验样本数据是否服从某一已知分布。
该检验修改自一种更复杂的非参数的拟合良好的检验统计(Kolmogorov-Smirnov Test)。SciPy中的anderson()
函数实现了Anderson-Darling检验,函数参数为样本数据及要检验的分布名称,默认情况下,为’norm’正态分布,还支持对’expon’指数分布,'logistic’分布,以及’gumbel’耿贝尔分布的检验,它会返回一个包含不同显著性水平下的p值的列表,而不是一个单一的p值,因此这可以更全面地解释结果。
使用前提:各样本观察值为独立同分布的
from scipy.stats import anderson
data = [0.873, 2.817, 0.121, -0.945, -0.055, -1.436, 0.360, -1.478, -1.637, -1.869]
result = anderson(data)
print('stat=%.3f' % (result.statistic))
for i in range(len(result.critical_values)):
sl, cv = result.significance_level[i], result.critical_values[i]
if result.statistic < result.critical_values[i]:
print('显著性水平为%.2f时,P值为%.1f,不能拒绝原假设,样本数据服从正态分布' % (sl/100, cv))
else:
print('显著性水平为%.2f时,P值为%.1f, 拒绝原假设,样本数据不服从正态分布' % (sl/100, cv))
5. 统计绘图(附Python 3代码)
我另外写了一篇博文,请参考:Python 3统计绘图简单示例
6. 统计指标
1. 描述一组数据
- 均值
- 算术平均值
- 调和平均值
- 中位数
- 方差
- 标准差
- 医学领域的独特指标
- Positive Predictive Value (PPV)
2. 评估模型预测结果
- 混淆矩阵 / 混淆表 / 误差矩阵:有监督学习预测结果的可视化
是一种特殊的(二维的)列联表4
- 准确率accuracy
- 精度precision
- 召回率recall / 灵敏度sensitivity: T P T P + F N \frac{TP}{TP+FN} TP+FNTP
- F值
- 特异性specificity: T N T N + F P \frac{TN}{TN+FP} TN+FPTN
- ROC
- Youden’s
J
J
J static / deltaP’ / 知情性informedness:衡量模型是不是纯纯瞎猜的,就不管是谁都是一样的输出概率(取值范围为
[-1,1]
)
5 - Cohen’s kappa coefficient:用于度量两个rators对于同一事物二分类的一致性程度6
参考资料
python之Boostrap自助法介绍_自助法python-CSDN博客
Rousselet, G. A., Pernet, C. R., & Wilcox, R. R. (2019, May 27). An introduction to the bootstrap: a versatile method to make inferences by using data-driven simulations. https://doi.org/10.31234/osf.io/h8ft7:这篇没看懂,感觉需要亿些扎实的统计学知识才能看懂 ↩︎混淆矩阵 - 维基百科,自由的百科全书
混淆矩阵(实验评价指标) - 知乎:这篇后面还介绍了一些别的指标,还没看 ↩︎Youden’s J statistic - Wikipedia:后面的好多内容我没看懂,感觉比较深 ↩︎