主成分分析——KMO检验(介绍及Matlab代码)

文章目录

  • 前言
  • 一、主成分适用性检验
  • 二、KMO检验
    • 1.计算公式
    • 2.Matlab代码
  • 总结


前言

 主成分分析已经越来越成为人们广泛应用的多元统计分析方法。但应用中盲目套用主成分分析方法的情况很多, 而对主成分分析的适用性, 主成分个数的合理性等问题重视不够, 更谈不上对主成分分析进行统计检验。
 为此, 为了更好应用主成分分析, 就应对主成分分析结果进行统计检验并建立统计检验体系。其中不可或缺的一步便是主成分适用性检验,即该组数据是否适合使用主成分方法进行分析。

一、主成分适用性检验

 并非所有的数据都适用于主成分分析的。主成分分析本身并不是目的, 实际应用中主成分分析往往是一种手段。目的是通过主成分分析简化数据结构, 在此基础上进行进一步的分析。
 因此, 使用主成分分析的前提条件是原始数据各个变量之间应有较强的线性相关关系。如果原始变量之间的线性相关程度很小, 它们之间不存在简化的数据结构, 这时进行主成分分析实际是没有意义的。所以, 应用主成分分析时, 首先要对其适用性进行统计检验。
 检验方法有巴特莱特球性检验,KMO检验等,本文主要介绍KMO检验。

二、KMO检验

1.计算公式

 KMO ( Kaiser- Meyer- Olkin- Measure of Sampling Adequacy) 检验是从比较原始变量之间的简单相关系数和偏相关系数的相对大小出发来进行的检验。当所有变量之间的偏相关系数的平方和, 远远小于所有变量之间的简单相关系数的平方和时, 变量之间的偏相关系数很小, KMO 值接近1, 变量适合进行主成分分析。KMO 值的计算公式为:
主成分分析——KMO检验(介绍及Matlab代码)_第1张图片
计算得到的KMO值越大,表示越适合进行主成分分析,其度量标准表如下:

KMO值 分析的适用性
0.90-1.00 非常好
0.80-0.89
0.70-0.79 一般
0.60-0.69
0.50-0.59 很差
0.00-0.49 不能进行分析

2.Matlab代码

代码如下:

function kmo=KMO(SA)
    X=corrcoef(SA);%SA是样本的原始数据
    iX = inv(X);     %X是原始数据的相关系数矩阵R,而inv表示求X的逆矩阵iX
    S2 = diag(diag((iX.^-1)));    %将iX的对角线的元素取倒数,其余元素都变为0,得到矩阵S2
    AIS = S2*iX*S2;    %anti-image covariance matrix,即AIS是反映像协方差矩阵   
    IS = X+AIS-2*S2;    %image covariance matrix,即IS是映像协方差矩阵
    Dai = diag(diag(sqrt(AIS)));    %就是将矩阵AIS对角线上的元素开平方,并且将其余元素都变成0,得到矩阵Dai
    IR = inv(Dai)*IS*inv(Dai); %image correlation matrix,即IR是映像相关矩阵
    AIR = inv(Dai)*AIS*inv(Dai); %anti-image correlation matrix,即AIR是反映像相关矩阵
    a = sum((AIR - diag(diag(AIR))).^2);    %diag(diag(AIR))表示将矩阵AIR的对角线取出来,再构造成一个对角矩阵(即对角线之   外元素都是 0);. 表示将偏相关系数矩阵AIR - diag(diag(AIR))的每一个元素乘方,这样得到矩阵a。
    AA = sum(a);              %得到偏相关系数矩阵AIR - diag(diag(AIR))中所有偏相关系数的平方和AA,但不考虑其对角线上的数值。
    b = sum((X - eye(size(X))).^2);    %eye()是单位矩阵;b就是将相关系数矩阵R中每一个元素乘方,但R对角线元素全部变成0
    BB = sum(b);             %BB就是所有变量之间(不包括变量自己与自己)的相关系数的平方和。
    kmo = BB/(AA+BB);   %KMO就是所有变量之间相关系数的平方和除以它与所有变量之间偏相关系数平方和的商,但不考虑变量  自己与自己的相关系数1以及偏相关系数。
end

总结

情人节了,送大家一句情话。
I love three things in the world,the sun,the moon and you.Sun for the moring ,moon for the night,and you forever.(浮世万千,吾爱有三。日,月与卿。日为朝,月为暮,卿为朝朝暮暮)

你可能感兴趣的:(matlab,算法)