前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >matlab做kmo检验的代码,急求 KMO测度和Bartlett 的球形度检验的计算原公式[通俗易懂]

matlab做kmo检验的代码,急求 KMO测度和Bartlett 的球形度检验的计算原公式[通俗易懂]

作者头像
全栈程序员站长
发布2022-09-07 15:57:06
1.3K0
发布2022-09-07 15:57:06
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

1、关于KMO公式,您从如下matlab源程序代码中不难得出,我已经用Excel就计算出来了,跟SPSS的计算结果完全一致。

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以及偏相关系数。

2、关于巴特利特球形检验的公式,作以下说明:

H0:原始数据的相关系数矩阵R与同维度的单位矩阵一致;H1:……不一致。

χ2=-[n-(2p+11)/6]ln|R|; df=p(p-1)/2。

其中:n是数据记录的条数;p是因子分析的变量数目;ln()是自然对数函数;|R|是相关系数矩阵R的行列式的值。

算出上述χ2统计量的值,查表χ2(0.01,df),若χ2

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148458.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档