www.gusucode.com > stats 源码程序 matlab案例代码 > stats/FeatureTransformationExample.m

    %% Feature Transformation
% This example shows how to use feature transformation methods to create
% data models.

% Copyright 2015 The MathWorks, Inc.


%% Load Data
load moore
X = moore(:,1:5);
rng('default'); % For reproducibility

%% Compute Rank-Two Approximation Using Multiplicative Update Algorithm
opt = statset('MaxIter',10,'Display','final');
[W0,H0] = nnmf(X,2,'replicates',5,'options',opt,'algorithm','mult');

%% Perform Factorization Using Alternating Least-Squares Algorithm
opt = statset('Maxiter',1000,'Display','final');
[W,H] = nnmf(X,2,'w0',W0,'h0',H0,'options',opt,'algorithm','als');

%% Display H
H

%% Visualize Relative Contribution of Predictors in X
biplot(H','scores',W,'varlabels',{'','','v3','','v5'});
axis([0 1.1 0 1.1])
xlabel('Column 1')
ylabel('Column 2')

%% Load Factor Analysis Data
load stockreturns

[Loadings,specificVar,T,stats] = factoran(stocks,3,'rotate','none');

%% Display Loadings
Loadings

%% Display Estimated Specific Variances
specificVar

%% Display p-value
stats.p

%% Fit Model with Two Common Factors
[Loadings2,specificVar2,T2,stats2] = factoran(stocks, 2,'rotate','none');

stats2.p

%% Use Promax Rotation Criterion
[LoadingsPM,specVarPM] = factoran(stocks,3,'rotate','promax');
LoadingsPM

%% Plot Using Factor Loadings as Coordinates
biplot(LoadingsPM,'varlabels',num2str((1:10)'));
axis square
view(155,27);

%% Plot Estimated Scores
[LoadingsPM,specVarPM,TPM,stats,F] = factoran(stocks, 3,'rotate','promax');

plot3(F(:,1),F(:,2),F(:,3),'b.')
line([-4 4 NaN 0 0 NaN 0 0], [0 0 NaN -4 4 NaN 0 0],[0 0 NaN 0 0 NaN -4 4], 'Color','black')
xlabel('Financial Sector')
ylabel('Retail Sector')
zlabel('Technology Sector')
grid on
axis square
view(-22.5, 8)

%% Compute Estimated Factor Correlation Matrix
inv(TPM'*TPM)

%% Visualize Results
biplot(LoadingsPM,'scores',F,'varlabels',num2str((1:10)'))
xlabel('Financial Sector')
ylabel('Retail Sector')
zlabel('Technology Sector')
axis square
view(155,27)