多元分析


多元分析

聚类分析

聚类分析是对多个样本或者变量进行定量分类的一种方法.对样本进行分类叫做Q型聚类分析,对变量进行分类叫做R型聚类分析.

Q型聚类分析主要针对样本,是综合利用多个变量信息进行分类.R型聚类分析是分析的变量之间的亲疏关系.

Q型聚类分析

对一群待分类的样本有n个变量描述,所以每一个样本可以堪称$R^n$空间中的一个点,每个样本之间的亲疏关系可以通过样本点间距离进行度量.

在聚类分析中,对于定量变量,最常用的就是闵氏距离,即
$$d_q(x,y)=[∑_{k=1}^n∣x_k−y_k∣^q]^{\frac1q},q>0$$
以下是当q取特定值时的距离:

  • 绝对值距离:$d_1(x,y) = [∑_{k=1}^n∣x_k−y_k∣]$
  • 欧几里得距离: $d_2(x,y)=[∑_{k=1}^n∣x_k−y_k∣^2]^{\frac12}$
  • 切比雪夫距离: $d_{\infty}(x,y) = max|x_k-y_k|$
    为了克服闵氏距离对于量纲的一致性要求的缺点,可以使用马氏距离:
    $$d(x,y)=\sqrt{(x-y)^T\Sigma^T(x-y)}$$
    其中$\Sigma$时Z的协方差矩阵.

类的相似度度量有如下方法:

  • 最短距离:顾名思义
  • 最长距离:顾名思义
  • 重心:重心之间的距离
  • 类平均:$D(G_1,G_2)=\frac1{n_1n_2}∑_{x_i∈G_1}∑_{x_j∈G_2}d(x_i,x_j)$,n1,n2为点的个数
  • 离差平方和

对于这一类聚类分析,代码思路

from scipy.cluster.hierarchy import linkage
from scipy.spatial.distance import pdist,squareform
y = pdist(a,method = '') ##a是各个点坐标,method选择距离计算方法
yc = squareform(y)       ##将距离转换为距离对称方阵
z = linkage(y,method = '') ##y是各点距离,method参数选择,返回聚类

R型聚类分析

对于R型聚类分析的变量相似性度量,有两种相似性度量:

  • 相关系数:用两变量$x_j$与$x_k$的样本相关系数作为他们的相似性度量
  • 夹角余弦:用两变量$x_j$与$x_k$的样本夹角余弦作为他们的相似性度量

对于R型聚类分析的类与类的相似性度量,与Q型类似,对于实际分析的时候,先用R型聚类法从所有变量中选取几个有代表性的变量(剔除相关性较强的变量),再对选取变量进行Q型聚类分析.

动态聚类法

K-mean算法,见Scipy学习

主成分分析

基本思想

主成分分析将许多相关性很高的变量转化成彼此相互独立或不相关的变量,并用以解释资料的综合性指标。
设$X_1,…,X_p$表示p个随机变量,$x_1,…,x_p$表示样本观测值,若能找到$c_1,…,c_p,并且\Sigma_{i=1}^pc_i^2 = 1$使得$D(\Sigma_{i=1}^p(c_iX_i))$最大,由于方差反应的是数据差异程度,也就表明我们找到了这p个变量的最不相关的因素,这个解是p维空间的一个单位向量,代表一个主成分方向.

为了代表原来的p个向量,需要求多个主成分方向,并且这几个主成分方向向量正交/协方差为0.可以理解为主成分方向是原来p个变量的线性组合,通过找矩阵秩的方式降低了变量个数.之后,再通过选择特征值大的特征向量来笼统代表p个向量(特征值大说明这个因素对整体的贡献高,特征值小的变量对整体贡献值小)

特征值因子筛选

设有p个指标变量$x_1,…,x_p$,在第i此的取值为$a_{i1},…,a_{ip}$,其矩阵形式为
$$
A = \begin{bmatrix}
a_{11}&\ldots&a_{1p}\\
\vdots&\ddots&\vdots\\
a_{n1}&\ldots&a_{np}\\
\end{bmatrix}
$$
称A为设计阵,$A^TA$为方阵,取前面的特征值使所取特征值所占比重超过85%,每个特征值所对应的特征向量即为一个主成分方向。

主成分回归分析

首先需要对样本值中心标准化,设i次观测的样本j的值为$a_{ij}$,中心标准化之后的值为$a_{ij}^{‘}$

$$a_{ij}^{‘} = \frac{a_{ij} - u_j}{S_j}$$
$u_j$为样本j的均值,$S_j$为样本j的方差,令$A = {a_ij}$,则$(A^TA)X = X^T\Sigma$

在等到样本矩阵之后,如果样本数据数量级差距很大,则计算相关系数矩阵,反之,则计算协方差矩阵.

之后,根据计算出来的关系矩阵计算特征值(特征值是白化数据的方差,因为中心标准化之后,方差为1,特征值是拉伸倍数)和特征向量(是白化数据的旋转变换矩阵).选取较大特征值对应的特征向量(相当于降维,降低离散点的影响)组成,求出转移矩阵P,和原始数据X相乘得到新的数据Y. Y=PX.

因子分析

因子分析通过研究众多变量之间的内部依赖关系,探求观测数据中的基本结构,用少数几个假想变量来表示其基本数据结构。这几个假想变量能够反映原来众多变量的主要信息,原始的变量时可观测的显在变量,而假想变量是不可观测的潜在变量,称为因子。

因子分析和主成分分析类似,都是降维方式.

在开始分析之前需要进行KMO检验(大于0.7)和bartlett球形度检验(小于0.05),

因子分析模型

设P个变量$X_i$可以表示为
$$X_i = u_i + a_{i1}F_1 + … + a_{im}F_m + \epsilon_i, m \leq p(降维所以一定m不能比p大)$$
或矩阵表示
$$X_i - u_i = \Lambda F + \epsilon$$
F为公共因子,$\Lambda$为载荷因子,$\epsilon$为特殊因子,且
$$E(F) = 0, E(\epsilon) = 0,Cov(F) = I_m,D(\epsilon) = Cov(\epsilon) = diag(\sigma_1^2,…,\sigma_p^2)$$
$$Cov(X-u) = \Lambda{Cov(F)}\Lambda^T+Cov(\epsilon)= \Lambda\Lambda^T + diag(\sigma_1^2,…,\sigma_p^2)$$

因子载荷矩阵估计方法

设$\lambda_1 \geq \lambda_2…\geq \lambda_p$为样本系数矩阵R特征值,$\eta_1,…,\eta_p$为对应的特征向量,取较大的m个特征值以及其特征向量组成因子载荷矩阵$\Lambda$,
$$\Lambda = [\sqrt{\lambda_1}\eta_1,…,\sqrt{\lambda_m}\eta_m]$$
(有点类似主成分分析)
特殊因子的方差用$R-\Lambda\Lambda^T$的对角元来估计,为
$$\sigma^2_i = 1 - \Sigma_{(j = 1)}^m{a_{ij}^2}$$

因子旋转

建立因子分析模型的重要目的是为了知道每个公共因子的含义.因为载荷因子矩阵不唯一,为使后期分析工作方便,需要对载荷因子矩阵进行旋转,使得载荷因子矩阵的各个因子之间方差最大,类似主成分分析法找主成分方向.

从简化因子载荷矩阵的每一列出发,使和每个因子有关的载荷的平方的方差最大。当只有少数几个变量在某个因子上有较高的载荷时,对因子的解释最简单。方差最大的直观意义是希望通过因子旋转后,使每个因子上的载荷尽量拉开距离,一部分载荷趋于 ±1,另一部分趋于0。(这一部分可以直接交给第三方库去做)

因子得分

因子得分也就是公共因子的估计也很必要.因子得分则需要把公共因子表示为原变量的线性组合,因子得分函数:
$F_j=c_j+b_{j1}X_1+⋯+b_{jp}X_p ,j=1,2,⋯,m$
若将原始数据中心标准化,则
$\hat{F} = X_0R^{-1}\Lambda$


Author: Dovahkiin
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source Dovahkiin !
  TOC