数据挖掘之方差分析

1 概要

方差分析(Analysis of variance, ANOVA) 主要研究分类变量作为自变量时,对因变量的影响是否是显著的。

方差分析的方法是由20世纪的统计学家Ronald Aylmer Fisher在1918年到1925年之间提出并陆续完善起来的,该方法刚开始是用于解决田间实验的数据分析问题,因此,方差分析的学习是和实验设计、实验数据的分析密不可分的。

方差分析(ANOVA)是数理统计中很常用的内容, 那么到底是干什么用的呢? 在科学试验和生产实践中, 影响某一事物的因素往往很多, 比如化工生产中, 像原料成分, 剂量, 反应温度, 压力等等很多因素都会影响产品的质量, 有些因素影响较大, 有些影响较小, 为了使生产过程稳定, 保证优质高产, 就有必要找出对产品质量有显著影响的因素。 怎么找呢? 就需要试验, 方差分析就是根据试验的结果进行分析, 鉴别各个有关因素对试验结果影响程度的有效方法。而根据涉及到的因素个数的不同, 又可以把方差分析分为单因素方差分析、多因素方差分析等。

下面我们先重点研究单因素方差分析, 通过一个例子,引出方差分析中的几个概念:

某保险公司想了解一下某险种在不同的地区是否有不同的索赔额。 于是他们就搜集了四个不同地区一年的索赔额情况的记录如下表:
在这里插入图片描述
尝试判断一下, 地区这个因素是否对与索赔额产生了显著的影响?

这个问题就是单因素方差分析的问题, 具体解决方法后面会说, 首先先由这个例子弄清楚几个概念:

  1. 试验指标: 方差分析中, 把考察的试验结果称为试验指标, 上面例子里面的“索赔额”。
  2. 因素: 对试验指标产生影响的原因称为因素, 如上面的“地区”
  3. 水平: 因素中各个不同状态, 比如上面我们有A1, A2, A3, A4四个状态, 四个水平。

这个类比的话, 就类似于y就是试验指标, 某个类别特征x
就是因素, 类别特征x的不同取值就是水平。那么通过方差分析, 就可以得到某个类别特征对于y的一个影响程度了吧, 这会帮助分析某个类别特征的重要性哟!

那么如何进行单因素方差分析呢?

2. 单因素方差分析原理及python实现

在解决上面的问题之前, 我们得看看单因素方差分析的原理, 也就是把上面的例子概括为一般性的问题, 分析一下解法。

所谓单因素方差分析, 就是仅考虑有一个因素A对试验指标的影响。 假如因素A有r个水平, 分别在第i个水平下进行多次独立的观测, 所得到的试验指标数据如下:
A 1 : N ( μ 1 , σ 2 ) X 11 X 12 ⋯ X 1 n A 2 : N ( μ 2 , σ 2 ) X 21 X 22 ⋯ X 2 n 2 ⋮ ⋮ ⋯ ⋮ A r : N ( μ r , σ 2 ) X r 1 X r 2 ⋯ X m r \begin{array}{ccccc} A_{1}: N\left(\mu_{1}, \sigma^{2}\right) & X_{11} & X_{12} & \cdots & X_{1 n} \\ A_{2}: N\left(\mu_{2}, \sigma^{2}\right) & X_{21} & X_{22} & \cdots & X_{2 n_{2}} \\ \vdots & \vdots & \cdots & \vdots \\ A_{r}: N\left(\mu_{r}, \sigma^{2}\right) & X_{r 1} & X_{r 2} & \cdots & X_{m_{r}} \end{array} A1:N(μ1,σ2)A2:N(μ2,σ2)Ar:N(μr,σ2)X11X21Xr1X12X22Xr2X1nX2n2Xmr

注意这里的 n i n_{i} ni不一定一样, 上面的例子。 各总体间相互独立, 因此我们会有下面的模型:
{ X i j = μ i + ε i j ε i j ∼ N ( 0 , σ 2 ) ,  各  ε i j  独立  j = 1 , 2 , ⋯   , n i , i = 1 , 2 , ⋯   , r \left\{\begin{array}{c} X_{i j}=\mu_{i}+\varepsilon_{i j} \\ \varepsilon_{i j} \sim N\left(0, \sigma^{2}\right), \text { 各 } \varepsilon_{i j} \text { 独立 } \\ j=1,2, \cdots, n_{i}, \quad i=1,2, \cdots, r \end{array}\right. Xij=μi+εijεijN(0,σ2),  εij 独立 j=1,2,,ni,i=1,2,,r

简单解释一下上面这个在说啥: X i j X_{ij} Xij 就是第i个水平的第j个观测值, 上面例子里面就是第i个地区第j次的索赔额。 u i u_{i} ui 表示第iii个水平的理论均值, 后面的 ε i \varepsilon_{i } εi表示的随机误差, 假设这个服从正态。第一个等式的意思就是某个观测值可以用某水平下的均值加一个误差来表示。

如果我们想判断某个因素A对于试验指标是否有显著影响, 很直观的就是我们看看因素A不同的水平下试验指标的理论均值是否有显著差异, 即理论均值是否完全相同, 如果有显著差异, 就说明不同的水平对试验指标影响很大, 即A对试验指标有显著影响。这也是方差分析的目标, 故把问题转换成了比较不同水平下试验指标的均值差异。 显著在这里的意思是差异达到的某种程度。

基于上面的分析, 我们就可以把方差分析也看成一个检验假设的问题, 并有了原假设和备择假设:
H 0 : μ 1 = μ 2 = … = μ r H 1 : μ 1 , μ 2 , … μ r  不全相等  \begin{array}{l} H_{0}: \mu_{1}=\mu_{2}=\ldots=\mu_{r} \\ H_{1}: \mu_{1}, \mu_{2}, \ldots \mu_{r} \text { 不全相等 } \end{array} H0:μ1=μ2==μrH1:μ1,μ2,μr 不全相等 

那么这个假设检验的问题怎么验证呢? 我们得先分析一下, 为舍各个 X i j X_{i j} Xij 会有差异? 从上面的模型 中,我们可以看到 X i j = μ i + ϵ i j , X_{i j}=\mu_{i}+\epsilon_{i j}, Xij=μi+ϵij, 所以第一个可能就是 μ i \mu_{i} μi 可能有差异, 比如 μ 1 > μ 2 , \mu_{1}>\mu_{2}, μ1>μ2, 那么 X 1 j X_{1 j} X1j 很容易就大于 X 2 j X_{2 j} X2j 。 另一个可能就是随机误差的存在。在这样的启发下, 我们得找一个衡量全部 X i j X_{i j} Xij 之间差异的量,就是下面这个了:
S T = ∑ i = 1 r ∑ j = 1 n i ( X i j − X ˉ ) 2 S_{T}=\sum_{i=1}^{r} \sum_{j=1}^{n_{i}}\left(X_{i j}-\bar{X}\right)^{2} ST=i=1rj=1ni(XijXˉ)2

这个叫做总偏差平方和,如果这个越大, 就表示 X i j X_{i j} Xij 之间的差异就越大。这里的 X ˉ = \bar{X}= Xˉ= ∑ i = 1 r ∑ j = 1 n i X i j / n , n = n 1 + n 2 , … + n 2 \sum_{i=1}^{r} \sum_{j=1}^{n_{i}} X_{i j} / n, \quad n=n_{1}+n_{2}, \ldots+n_{2} i=1rj=1niXij/n,n=n1+n2,+n2 表示总的观测值个数。

接下来, 我们把这个平方和分解开为两部分:一部分是由于因素A引起的差异,这个叫做效应平方和 S A , S_{A}, \quad SA, 另一部分是由于随机误差引起的差异, \quad 这个叫做误差平方和 S E S_{E} SE

关于 S E , S_{E}, \quad SE, 先固定一个 i , i, i, 此时对应的所有观测值 X i 1 , X i 2 , … X i n i , X_{i 1}, X_{i 2}, \ldots X_{i n_{i}}, Xi1,Xi2,Xini, 他们之间的差异与每个水平的理 论平均值就没有关系了,而是取决于随机误差, 反应这些观察值差异程度的量 ∑ j = 1 n i ( X i j − X ˉ i ) 2 \sum_{j=1}^{n_{i}}\left(X_{i j}-\bar{X}_{i}\right)^{2} j=1ni(XijXˉi)2 其中 X ˉ i = ( X i 1 + X i 2 + ⋯ + X i n ) / n i , i = 1 , 2 , ⋯   , r \bar{X}_{i}=\left(X_{i 1}+X_{i 2}+\cdots+X_{i n}\right) / n_{i}, \quad i=1,2, \cdots, r Xˉi=(Xi1+Xi2++Xin)/ni,i=1,2,,r 综合所有的水平, \quad 就可以得到误
差平方和的公式如下:

S E = ∑ i = 1 r ∑ j = 1 n i ( X i j − X ˉ i ) 2 S_{E}=\sum_{i=1}^{r} \sum_{j=1}^{n_{i}}\left(X_{i j}-\bar{X}_{i}\right)^{2} SE=i=1rj=1ni(XijXˉi)2

而上面两者相减, 就会得到效应平方和 S A S_{A} SA

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
主成分分析(Principal Component Analysis, 简记PCA)是一种常用的数据降维技术,用于将高维数据转换为低维数据,同时保留数据的主要特征。它通过线性变换将原始数据投影到一个新的坐标系中,使得投影后的数据具有最大的方差。这些新的坐标轴被称为主成分,它们是原始数据中方差最大的方向。 主成分分析的步骤如下: 1. 标准化数据:将原始数据进行标准化处理,使得每个特征具有相同的尺度。 2. 计算协方差矩阵:计算标准化后的数据的协方差矩阵。 3. 计算特征值和特征向量:对协方差矩阵进行特征值分解,得到特征值和对应的特征向量。 4. 选择主成分:根据特征值的大小,选择前k个特征值对应的特征向量作为主成分。 5. 数据投影:将原始数据投影到选定的主成分上,得到降维后的数据。 以下是一个使用主成分分析进行数据降维的示例代码: ```python from sklearn.decomposition import PCA # 假设X是一个包含n个样本和m个特征的数据矩阵 pca = PCA(n_components=k) # 设置要保留的主成分个数为k X_new = pca.fit_transform(X) # 对数据进行降维 # 输出降维后的数据 print(X_new) ``` 在这个示例中,我们使用了scikit-learn库中的PCA类来进行主成分分析。通过设置n_components参数为k,我们可以指定要保留的主成分个数。fit_transform方法用于对数据进行降维,并返回降维后的数据矩阵X_new。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩波的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值