⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 anacor.m

📁 对应分析correspondence analysis(ANACOR) [G,F,A]=ANACOR(X)
💻 M
字号:
%%%%%%%   correspondence analysis(ANACOR)  %%%%%%%%%%%%%%%%%%%%%
% X为原始数据 p X n维 即有n个样本,每个样本由p个变量来描述。返回F为R型因子分析后的结果,Q为最后的结果,A=ZZ'。
%function [G,F,A]=ANACOR(X)
function [G,F]=ANACOR(X)
%为了确保表示的向量大小与表示样本的向量大小有同样的意义,对原始数据进行处理
T=sum(sum(X));
Xi=sum(X');  %% 对行求和,即:变量的边缘概率
Xj=sum(X);   %% 对列求和,即:样本的边缘概率
%%% 计算矩阵Z=(zij)

Z=(X-(Xi'*Xj/T))./sqrt(Xi'*Xj);
A=Z*Z';
%%%% 求特征值和特征向量,A为输入方阵,D为由A的全部特征值构成的对角矩阵,V的各列为对应于特征值的特征向量构成的矩阵
%[V,D]=eig(A);
D=eig(A,'nobalance');
% 特征值降序排列,并求累积量>=85%
b=sort(D);
D=b(end:-1:1);
d=sum(D);
D1=D/d;
i=1;
D2=D1(1);
while D2<=0.95
    i=i+1;
    D2=D2+D1(i);
end
%求前i项特征值对应的特征向量
option = struct('disp',0);
[eigvector, eigvalue] = eigs(A,i,'la',option);  %'LA' or 'SA' - Largest or Smallest Algebraic

%%% R型因子分析

U=eigvector;  %%修正后的特征值对应的特征向量,p X i维, i为使累积量>=85%的特征值数量
[m,n]=size(U);
U1=zeros(m,n);
E=D(1:i);     %%修正后的特征值,  在此为行向量
for x=1:i
    U1(:,x)=U(:,x)*sqrt(E(x));
end
%%% 求载荷矩阵 F
F=U1;
%[m,n]=size(F);
%% plot(F,'r*');
%% 画图
%for i=1:m
%    plot(F(i,1),F(i,2),'r*');
%    hold on;
%end

%%%求Q型因子分析

%B=Z'*Z;
V=Z'*U;
[m,n]=size(V);
V1=zeros(m,n);
E=D(1:i);     %%修正后的特征值,  在此为行向量
for x=1:i
    V1(:,x)=V(:,x)*sqrt(E(x));
end
G=V1;
%% 画图
[m,n]=size(F);
for i=1:m
    plot(F(i,1),F(i,2),'r*');
    hold on;
end

hold on

[x,y]=size(G);
for i=1:x
    plot(G(i,1),G(i,2),'bo');
    hold on;
end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -