随着大数据算法技术发展,数据算法越来越倾向机器学习和深度学习相关的算法技术,概率论和应用统计 等传统的技术貌似用的并不是很多了,但实则不然,在数据科学工作,还是会经常需要应用统计概率相关知识解决一些数据问题,例如 A/B试验的显著性计算,因果推断等等,故在此,笔者结合自己应用经验,对数据科学工作中常用到的应用统计知识做一个简单的归纳和总结。
偏差(Bias):偏差是指预测值或估计值的期望与真实值之间的差异。这种差异通常是系统性的,即它不是随机出现的,而是由于模型的过度简化或者某种系统性的误解导致的。例如,如果你在测量一个物体的长度时,你的尺子始终比真实的尺子短1厘米,那么你的测量结果就会有一个系统性的偏差。
随机误差(Random Error):随机误差是指预测值或估计值与其期望之间的差异。这种差异是随机的,即它没有固定的模式,而是由于随机因素(如测量误差或样本的随机性)导致的。在上述的测量例子中,如果你的尺子没有偏差,但由于你每次测量时的角度、力度等因素的不同,导致你的测量结果在真实长度的前后波动,那么这种波动就是随机误差。
误差(Error):误差是一个更广泛的概念,它包括了偏差和随机误差两部分。也就是说,误差是指预测值或估计值与真实值之间的总体差异。在统计模型中,我们通常假设误差项是由偏差和随机误差两部分组成的。
总的来说,偏差、随机误差和误差都是描述预测或估计的准确性的重要概念。在进行数据分析和建模时,我们通常希望降低偏差和随机误差,以提高预测或估计的准确性。
先看定义:
无偏估计(Unbiased Estimation):如果一个估计量的期望值等于被估计参数的真实值,那么这个估计量就被称为无偏估计。换句话说,无偏估计在多次重复实验中的平均值会接近真实的参数值。例如,样本均值就是总体均值的无偏估计。
有偏估计(Biased Estimation):如果一个估计量的期望值不等于被估计参数的真实值,那么这个估计量就被称为有偏估计。也就是说,有偏估计在多次重复实验中的平均值会偏离真实的参数值。例如,样本方差(除以n而不是n-1)就是总体方差的有偏估计。
所以由上面可知,无论是有偏估计还是无偏估计,都会和真实值有误差,但是不同在于有偏产生的是系统性偏差,而无偏产生的是随机误差。
以射击场景举例,下图虽有误差,但是误差是随机的,分布比较均衡
数学上的解释推荐看:简述无偏估计和有偏估计
区分单个数据点的分布(即数据分布)和样本统计量的分布(即抽样分布) 非常重要。
一组独立且同分布的随机变量(每个随机变量的期望和方差都存在),即使这些随机变量本身不是正态分布,当这些随机变量数量 n n n 很大时,其均值统计量的抽样分布趋近于正态分布。
一定要注意,这里指的是 在 这些随机变量上,得到的 均值 这个统计量的 抽样分布 趋向于正态分布。由此这些 随机变量的求和这个统计量 的抽样分布,也是 趋向于 正态分布。
通常,样本统计量(如均值等)的分布要比数据本身的分布更加规则,分布的形状更趋向 于正态分布的钟形曲线。统计所基于的样本规模越大,上面的观点就愈发成立。此外,样本的规模越大,样本统计量的分布就越窄
要估计统计量或模型参数的抽样分布,一个简单而有效的方法是,从样本本身中有放回地抽取更多的样本,并对每次重抽样重新计算统计量或模型。这一过程被称为自助法。自助法无须假设数据或抽样统计量符合正态分布
使用自助法对规模为 n n n的样本做均值重抽样的算法实现如下:
我们称 r r r为自助法的迭代次数, r r r的值可任意指定。迭代的次数越多,对标准误差或置信区间的估计就越准确。上述过程的结果给出了样本统计量或估计模型参数的一个自助集,可以从该自助集查看统计量或参数的变异性。
虽然Bootstrap法不需要假设数据或抽样统计量符合特定的分布,但它仍然有一些假设和限制。例如,Bootstrap法假设原始数据是一个对总体的良好代表,也就是说,原始数据中的观察结果是独立同分布的。如果这个假设不成立,那么Bootstrap法可能会给出误导性的结果。
要了解一个样本估计量中潜在的误差情况,除了使用频数表、直方图、箱线图 和标准误差等方法外,还有一种方法是置信区间。
其实就是 由抽样分布得到某一范围,用该范围来估计统计量。故抽样原理是置信区间的实现基础,这种范围覆盖形式更具确定性。
上面讲到 中心极限定理时,提到样本规模越大,均值分布越窄
我们从 Lending Club Loan Data拉取数据,用里面的"annual_inc"列数据做实验。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
df = pd.read_csv("loan.csv")
sample_data = df['annual_inc'].sample(1000, random_state=2023)
plt.hist(sample_data, 30, alpha = 0.5, label='data') # 原始数据点分布
# 从5*1000个数据元素中,每次随机抽取5个元素(样本规模),组成一个小组,总共得到1000 个小组,每个小组里求平均
sample_data5 = df['annual_inc'].sample(1000*5, random_state=2023)
index = np.array([[j for i in range(5)] for j in range(1000)]).flatten()
tmp_df = pd.DataFrame(columns=['data_5', 'index'])
tmp_df['data_5'] = sample_data5
tmp_df['index'] = index
sample_data5_res = tmp_df.groupby('index')['data_5'].mean().reset_index() # 得到平均值分布(样本规模为5)
# 从20*1000个数据元素中,每次随机抽取20个元素(样本规模),组成一个小组,总共得到1000 个小组,每个小组里求平均
sample_data20 = df['annual_inc'].sample(1000*20, random_state=2023)
index = np.array([[j for i in range(20)] for j in range(1000)]).flatten()
tmp_df = pd.DataFrame(columns=['data_20', 'index'])
tmp_df['data_20'] = sample_data20
tmp_df['index'] = index
sample_data20_res = tmp_df.groupby('index')['data_20'].mean().reset_index()# 得到平均值分布(样本规模为20)
plt.hist(sample_data_res['data_5'], 30, alpha = 0.5, label='data_5')
plt.hist(sample_data_res['data_20'], 30, alpha = 0.5, label='data_20')
plt.legend(loc='upper left')
plt.show()
显然,单值的原始数据点分布比较宽泛一点,样本规模为20的均值分布明显比样本规模为5的均值分布要窄很多,符合上面中心极限定理的说法。
随着样本规模越来越大,均值分布也越来越窄,故其越来越接近总体的真正均值。
由此引入标准误差
定义:标准误差是一种单变量度量,它总结了单个统计量抽样分布的变异性,可用于度量一个统计量(如样本均值)的精度或稳定性
标准误差
计算公式: s n \frac{s}{\sqrt{n}} ns
其中 s s s 表示标准偏差(统计量标准差), n n n 表示样本规模。
实验上,就是以相同规模,多次自助法抽样,得到 统计量的分布。
上面讲到,样本规模与真实值的关系,样本规模越大越接近真实值,故不难理解在计算 标准误差
时为何除以 n \sqrt{n} n,样本规模越大,标准误差越小。
标准误差 不仅仅 针对均值 这个统计量
其实也很容易理解 标准误差
:统计量分布离散度越低,样本规模越大,显然统计量分布就越集中,自然 误差就越小
理解 标准误差 的数学意义 对理解后面内容至关重要。
判断样本数据是否具有统计学上的显著差异。它帮助我们确定一个观察到的差异是否是由于真实的效应,而不是由于随机因素引起的。避免数据研究人员受到随机性的愚弄。
假设检验使用的逻辑是:“鉴于人们倾向于对异常的随机行为做出反应,并将其解释为有意义的真实行为,我们要在A/B实验中证明,组间差异要比偶然性可能导致的差异更极端。” 这里包含了一个基线假设,即各个处理是等同的,并且组间差异完全是由偶然性所导致的。我们称该基线假设为零假设。事实上,我们希望能证明零假设是错误的,并证明A组和B组结果之间的差异要比偶然性可能导致的差异更大。
假设检验本身不仅包括零假设,还包括一个相抵消的备择假设。下面通过一些例子来说明
总而言之,零假设和备择假设必须涵盖了所有的可能性。假设检验的结构取决于零假设的性质。
在统计学中,重抽样是指从观测数据中反复地抽取数据值,目标是评估一个统计量中的随机变异性。重抽样还可用于评估并提高一些机器学习模型的准确性。例如,对于使用多个自助数据集构建的决策树模型,可以通过Bagging过程计算其平均值
置换校验的目的:就是将多组样本打乱组合在一起,目的就是验证零假设,如果是效果是随机产生的,那么再重新抽样,各组之间的差异和置换之前的各组差异相差不大。
置换过程如下:
现在我们回头查看所观测到的组间差异,并与置换差异进行对比。如果观测到的差异位于置换差异内,那么置换检验的结果并不能证实任何事情,因为观测到的差异落在偶然可能产生之差异的范围内。但是,如果观测到的差异大部分落在置换分布之外,那么我们就可以得出与偶然性无关这一结论。如果使用专业术语描述,我们称差异是统计显著的。
简而言之:就是可以通过置换校验,得到 随机效果,与 实验效果 比较得到差异,再判断这个差异是否是 显著的,由此得到 实验效果是否是真实的。
在探索随机变异性中,置换检验是一种十分有用的启发式过程。它很容易编码,也很容易理解和解释。针对统计学中那些基于公式的形式主义和“假决定论”,置换检验提供了切实可行的绕行方法。
不同于依赖于统计学公式的方法,重抽样的一个优点在于给出了一种更加近乎万能的推断方法。它所适用的数据可以是数值,也可以是二元的;样本规模可以相同,也可以不同;并且无须假设数据符合正态分布。
统计学家引入了统计显著性的概念,用于衡量一个实验(也可以是对已有数据的研究)所生成的结果和随机生成的结果的差异,如果差异超过了随机变异的范围,则我们称它是统计显著的。
如果零假设是真的,那么观察到当前或更极端结果的概率。换句话说,p值是指在零假设成立的情况下(随机情况下),得到当前观察结果或更极端结果的概率
p值的定义是:如果p值很小(通常小于0.05或0.01),那么我们就有足够的证据来拒绝零假设,因为在零假设成立的情况下,观察到当前结果的概率非常小。这种情况下,我们说结果是统计显著的。
注意:p值并不是零假设为真的概率,也不是研究假设为假的概率。它只是在零假设为真的情况下,观察到当前或更极端结果的概率。
α \alpha α值是一个预先设定的阈值,用于确定统计显著性。 α \alpha α 值也被称为显著性水平(significance level)。
在假设检验中,我们首先设定一个零假设(null hypothesis),然后计算一个统计量和对应的 p p p 值。接下来,我们将计算出的 p p p 值与预先设定的 α \alpha α值进行比较。如果 p p p 值小于或等于 α \alpha α值,那么我们认为结果是统计显著的,有足够的证据拒绝零假设。如果 p p p值大于 α \alpha α值,那么我们没有足够的证据拒绝零假设。
注意: α \alpha α 值的选择是主观的,研究者可以根据实际情况和研究目的来设定一个合适的 α \alpha α值
首先需要说明的是 p p p值对我们做科学决策,有时候并不可靠,结合 α \alpha α值来说,该判断比较主观,但是 p p p值可以当做一种辅助决策的信息,例如 p p p值可以作为一种特征输入到机器学习模型中,或者可以根据 p p p值判断该特征是否应该在模型中。
上面我们讲到,显著性检验针对的让研究人员免受随机性的愚弄,但是下面的各种显著性检验方法,你会发现并没有直接针对随机性的假设来检验显著性,这是为什么呢?
显著性检验的目的是帮助我们判断观察到的数据或结果是否可能仅仅是由随机因素引起的。这并不意味着我们在假设检验中直接对"随机性"进行检验,而是我们通过检验特定的统计假设(如两组数据的均值是否相等)来间接地评估随机因素的影响。
在假设检验中,我们设定一个零假设,这通常是我们想要证伪的假设,例如"两组数据的均值相等"。如果这个假设是真的,那么任何我们在数据中观察到的差异都可以被认为是由随机因素引起的。然后我们计算一个统计量和对应的 p p p 值,这个 p p p 值表示在零假设为真的情况下,观察到当前或更极端结果的概率。
如果 p p p值很小(比如小于我们设定的显著性水平 α \alpha α),那么我们就有足够的证据拒绝零假设,因为在零假设为真的情况下,观察到当前结果的概率非常小。这意味着我们观察到的结果不太可能仅仅是由随机因素引起的,因此我们认为这个结果是统计显著的。
所以,虽然我们在假设检验中并不直接对"随机性"进行检验,但我们通过检验特定的统计假设来间接地评估随机因素的影响。
提出假设:首先,我们需要明确研究中的零假设( H 0 H0 H0)和备择假设( H 1 H1 H1)。零假设通常表示没有差异或效应,而备择假设则表示存在差异或效应。
选择显著性水平:显著性水平(通常表示为 α \alpha α)是我们在假设检验中所接受的最大错误概率。常见的显著性水平选择为 0.05 0.05 0.05或 0.01 0.01 0.01,表示我们愿意接受 5 % 5\% 5%或 1 % 1\% 1%的错误概率。
选择适当的统计检验方法:根据研究设计和数据类型,选择适当的统计检验方法。常见的统计检验方法包括t检验、方差分析(ANOVA)、卡方检验等。
计算统计量:根据所选的统计检验方法,计算相应的统计量。例如,在t检验中,我们计算t值;在方差分析中,我们计算F值。
确定临界值:根据显著性水平和自由度,查找相应的临界值。这些临界值用于判断统计量是否达到了显著性水平。
进行假设检验:将计算得到的统计量与临界值进行比较。如果统计量超过了临界值,我们拒绝零假设,认为差异是显著的。否则,我们无法拒绝零假设,认为差异不显著。
得出结论:根据假设检验的结果,得出关于研究问题的结论。如果拒绝了零假设,我们可以认为存在差异或效应;如果无法拒绝零假设,我们则无法得出差异或效应的结论。
z z z检验是一种常用的统计方法,用于比较一个样本均值与总体均值之间的差异是否显著。
适用条件:
统计量 Z Z Z计算公式:
Z = X ˉ − μ s n Z=\frac{\bar{X}-\mu}{\frac{s}{\sqrt{n}}} Z=nsXˉ−μ
注意:这里的 μ \mu μ 既可以是总体均值,亦或是对照组等均值,视具体问题和假设而定
其实这个计算公式也比较好理解:均值差异(分子)在标准误差(分母)上的倍数。
因为上面已经要求总体分布符合正态分布,统计量 z z z的抽样分布符合标准正态分布,因此允许我们通过标准正态分布的表格来确定 p p p 值。
计算得到的 Z Z Z值进行查表,可知均值之间的差异显著与否。
计算举例推荐看:z检验
用于小样本(样本容量小于30)的两个样本均值差异程度的检验方法。它是用 T T T分布理论来推断差异发生的概率,从而判定两个样本均值的差异是否显著。
适用条件:
统计量 t t t的计算公式:
Z = X ˉ − μ s n Z=\frac{\bar{X}-\mu}{\frac{s}{\sqrt{n}}} Z=nsXˉ−μ
自由度: n − 1 n-1 n−1
因为此时是小样本,样本标准差和总体标准差相差较大,无法得到统计量 t t t 符合标准正态分布,此时科学家经过试验发现, t t t的抽样分布更适合 t t t分布,因此通过 t t t分布来查表获得 p p p值。
计算得到统计量 t t t值后,再查表可知显著性
计算举例推荐看t检验
卡方检验主要用于比较观察频数(实际结果)和期望频数(零假设结果)之间的差异,或者比较两个分类变量之间的独立性。
计算方法:
R p = O b s e r v e d − E x p e c t e d E x p e c t e d R_p=\frac{Observed-Expected}{\sqrt{Expected}} Rp=ExpectedObserved−Expected
卡方统计量 = ∑ i r ∑ j c R p 2 卡方统计量=\sum_{i}^{r}\sum_{j}^{c} {R_p}^2 卡方统计量=i∑rj∑cRp2
其中 r , c r,c r,c 分别表示行数和列数。
自由度= ( r − 1 ) ∗ ( c − 1 ) (r-1)*(c-1) (r−1)∗(c−1)
查表可得 p p p 值,在指定阈值下,可以得到是否拒绝零假设。
计算举例推荐看 卡方检验
除了上面几个常用的,还有 k-s检验、F值检验、方差分析等等