MATLAB感悟(4)--主成分分析

目的描述

​ 出於模型的須要,咱們的團隊選擇作一次主成分分析,一般這部分在隊伍中是會有同窗專門負責這塊的,至於爲何筆者就不在這裏多說了。函數

解決思路

​ 在MATLAB中封裝了有關因子分析的方法--PCA,讀者能夠經過help命令來查看如何調用這個方法。code

須要讀者注意的是,在進行主成分分析的時候可能會出現海伍德現象(heywood),惋惜的是,筆者並無找到關於解決這個問題的文獻,若是有讀者知道怎樣解決,勞駕告訴我一聲,謝謝。orm

function [FData_M,LOCATION,Lab]=Split_PCA_Data(title,F_title,DataSet,index)
%index 表示要提取的Lab有多少個
    LOCATION=[];
    Lab={};
    NUM=1;
    for i=1:index
        OBJECT=F_title{i,1};         
                for j=1:584
                    MSN=title{1,j};
                    if j~=1
                        if  MSN==OBJECT
                            LOCATION(:,NUM)=j;
                            Lab(i,1)={MSN};
                            Lab(i,2)={OBJECT};
                            NUM=NUM+1;
                        end
                    end
                end
        FData_M=DataSet(:,LOCATION);
    end
function [FData_M,LOCATION,Lab]=Split_Factor_Data(title,F_title,DataSet,index)
%index 表示要提取的Lab有多少個
    LOCATION=[];
    Lab={};
    NUM=1;
    for i=1:index
        OBJECT=F_title{i,1};         
                for j=1:584
                    MSN=title{1,j};
                    if j~=1
                        if  MSN==OBJECT
                            LOCATION(:,NUM)=j;
                            Lab(i,1)={MSN};
                            Lab(i,2)={OBJECT};
                            NUM=NUM+1;
                        end
                    end
                end
        FData_M=DataSet(:,LOCATION);
    end
%更新FactorMatrix

%提取數據
[TX_PCA_D,Loc,Lab]=Split_PCA_Data(title,Factormatrix,DataSet{1,1},index);

%使用擬合函數
TX_D=FitData_Cubicinterp(TX_D,index);

%保存X數據Y數據
TX_PCA_x=TX_PCA_D(:,1:index-3);
TX_PCA_y=TX_PCA_D(:,index-2:end);

%求相關係數矩陣
TX_PCA_r=corrcoef(TX_PCA_x)

%數據標準化
TX_PCA_x=zscore(TX_PCA_x);
TX_PCA_y=zscore(TX_PCA_y);

%分析
[TX_vec,TX_lambda,TX_rate]=pcacov(TX_PCA_r);
TX_f=repmat(sign(sum(TX_vec)),size(TX_vec,1),1)*TX_vec;

%累計貢獻
TX_contri=cumsum(TX_rate)
%求取全部主成分的分數
TX_score=TX_PCA_x*TX_f

%選取主成分個數 咱們默認設置爲num=4
%對E進行主成分分析
%要求輸出X的特徵矩陣,保存多項式迴歸的係數
%選取前四個作主成分,提取數據,
TX_Param_E=TX_score(:,[1:num])\TX_PCA_EDP;
%標準化變量的迴歸方程係數
TX_Param_E=TX_f(:,[1:num])*TX_Param_E;
TX_Param_E=[mean(TX_PCA_EDP)-std(TX_PCA_EDP)*mean(TX_PCA_x)./std(TX_PCA_x)*TX_Param_E,std(TX_PCA_EDP)*(TX_Param_E')./std(TX_PCA_x)]

%對D進行主成分分析
%要求輸出X的特徵矩陣,保存多項式迴歸的係數

TX_Param_D=TX_score(:,[1:num])\TX_PCA_GDP;
%標準化變量的迴歸方程係數
TX_Param_D=TX_f(:,[1:num])*TX_Param_D;
TX_Param_D=[mean(TX_PCA_GDP)-std(TX_PCA_GDP)*mean(TX_PCA_x)./std(TX_PCA_x)*TX_Param_D,std(TX_PCA_GDP)*(TX_Param_D')./std(TX_PCA_x)]

%量化排序
[TX_sort,TX_ind]=sort((TX_PCA_x*TX_vec(:,1:num)*TX_rate(1:num))/100);

結果展現

因爲結果有多種多樣的,直接給出MATLAB的工做空間,有興趣的讀者能夠自行下載。排序

連接: 密碼:0389ci

相關文章
相關標籤/搜索