现在的位置: 首页 > 综合 > 正文

主成分分析

2018年10月22日 ⁄ 综合 ⁄ 共 3674字 ⁄ 字号 评论关闭

http://blog.renren.com/blog/0/726893170/editBlog 

一、关键词:

主成分分析思想:降维

信息量:第一主成分,第二主成分,.....

模型:矩阵方程或线性方程组

方程条件:主成分系数平方和为1,主成分间独立,主成分的方差递减

几何意义:坐标系旋转,以达到浓缩并覆盖原始信息避免信息重叠。

基于协方差阵求主成分:1.特征根,2.特征向量.3.第 i 主成分系数对应第 i 特征根的特征向量。

       4.累积贡献率,5.k个主成分的得分,6.主成分载荷

基于相关系数阵求主成分:1.相关系数矩阵,2.特征根,3.特征向量,......

二、语法

主成份分析过程为princomp,可以从原始变量分析,也可直接从协方差矩阵、相关系数矩阵或叉积阵(SSCP)分析。分析结果可以存储到数据集中,供其他过程调用。

 princomp过程一般由下列语句控制: 

proc  princomp  data=数据集 </选项列表> ;

var       变量列表;

partial   变量列表;

weight    变量;

freq      变量;

by        变量;

run ;

 

 princomp过程的结果表包括每一变量的简单统计数、相关系数或方差-协方差矩阵、特征值和特征向量等。

  1. 1.       proc princomp语句</选项列表>。

l       type=cov或type=corr——指明数据集类型,例如:data=new 
type
=corr:表明new为一相关系数corr数据集。

l       out=数据集名——规定存储原始数据和主分量得分的输出数据集。

l       outstat=数据集名——生成一个包括变量的平均数、标准差、相关系数、特征值、特征向量的输出数据集。另外,如果规定cov选项,还包括由协方差矩阵进行的计算(一般由相关系数矩阵进行计算);

l       n=个数——指定主分量个数。

l       std——要求在out=的数据集里把主成份得分标准化为单位方差。如果没有规定此项,主成份得分的方差等于相应的特征值。

l       noint——要求在模型中不含截距。

l       noprint——不打印输出分析结果。

  1. 2.       proc princomp过程中的主要语句。

l       var语句——指明分析的数值变量。如果省略var语句,则对所有数值变量进行分析。

partial语句——指明对偏相关阵或偏协方差矩阵进行分析时,被偏出去的这些数值变量的名字。 

三、例子

from <<sas/stat User's guide>>

/*-----------------------------------------------------------*/
/*                                                           */
/* Pre-season 1985 College Basketball Rankings               */
/* (rankings of 35 teams by 10 news services)                */
/*                                                           */
/* Note: (a) news services rank varying numbers of teams;    */
/*       (b) not all teams are ranked by all news services;  */
/*       (c) each team is ranked by at least one service;    */
/*       (d) rank 20 is missing for UPI.                     */
/*                                                           */
/*-----------------------------------------------------------*/

data HoopsRanks;
   input School $13. CSN DurSun DurHer WashPost USAToday
         Sport InSports UPI AP SI;
   label CSN      = 'Community Sports News (Chapel Hill, NC)'
         DurSun   = 'Durham Sun'
         DurHer   = 'Durham Morning Herald'
         WashPost = 'Washington Post'
         USAToday = 'USA Today'
         Sport    = 'Sport Magazine'
         InSports = 'Inside Sports'
         UPI      = 'United Press International'
         AP       = 'Associated Press'
         SI       = 'Sports Illustrated'
         ;
   format CSN--SI 5.1;
   datalines;
Louisville     1  8  1  9  8  9  6 10  9  9
Georgia Tech   2  2  4  3  1  1  1  2  1  1
Kansas         3  4  5  1  5 11  8  4  5  7
Michigan       4  5  9  4  2  5  3  1  3  2
Duke           5  6  7  5  4 10  4  5  6  5
UNC            6  1  2  2  3  4  2  3  2  3
Syracuse       7 10  6 11  6  6  5  6  4 10
Notre Dame     8 14 15 13 11 20 18 13 12  .
Kentucky       9 15 16 14 14 19 11 12 11 13
LSU           10  9 13  . 13 15 16  9 14  8
DePaul        11  . 21 15 20  . 19  .  . 19
Georgetown    12  7  8  6  9  2  9  8  8  4
Navy          13 20 23 10 18 13 15  . 20  .
Illinois      14  3  3  7  7  3 10  7  7  6
Iowa          15 16  .  . 23  .  . 14  . 20
Arkansas      16  .  .  . 25  .  .  .  . 16
Memphis State 17  . 11  . 16  8 20  . 15 12
Washington    18  .  .  .  .  .  . 17  .  .
UAB           19 13 10  . 12 17  . 16 16 15
UNLV          20 18 18 19 22  . 14 18 18  .
NC State      21 17 14 16 15  . 12 15 17 18
Maryland      22  .  .  . 19  .  .  . 19 14
Pittsburgh    23  .  .  .  .  .  .  .  .  .
Oklahoma      24 19 17 17 17 12 17  . 13 17
Indiana       25 12 20 18 21  .  .  .  .  .
Virginia      26  . 22  .  . 18  .  .  .  .
Old Dominion  27  .  .  .  .  .  .  .  .  .
Auburn        28 11 12  8 10  7  7 11 10 11
St. Johns     29  .  .  .  . 14  .  .  .  .
UCLA          30  .  .  .  .  .  . 19  .  .
St. Joseph's   .  . 19  .  .  .  .  .  .  .
Tennessee      .  . 24  .  . 16  .  .  .  .
Montana        .  .  . 20  .  .  .  .  .  .
Houston        .  .  .  . 24  .  .  .  .  .
Virginia Tech  .  .  .  .  .  . 13  .  .  .

;
;/* PROC MEANS is used to output a data set containing the      */
/* maximum value of each of the newspaper and magazine         */
/* rankings.  The output data set, maxrank, is then used       */
/* to set the missing values to the next highest rank plus     */
/* thirty-six, divided by two (that is, the mean of the        */
/* missing ranks).  This ad hoc method of replacing missing    */
/* values is based more on intuition than on rigorous          */
/* statistical theory.  Observations are weighted by the       */
/* number of nonmissing values.                                */
/*                                                             */

title 'Pre-Season 1985 College Basketball Rankings';
proc means data=HoopsRanks;
   output out=MaxRank
          max=CSNMax DurSunMax DurHerMax
              WashPostMax USATodayMax SportMax
              InSportsMax UPIMax APMax SIMax;
run;

   data Basketball;
      set HoopsRanks;
      if _n_=1 then set MaxRank;
      array Services{10} CSN--SI;
      array MaxRanks{10} CSNMax--SIMax;
      keep School CSN--SI Weight;
      Weight=0;
      do i=1 to 10;
         if Services{i}=. then Services{i}=(MaxRanks{i}+36)/2;
         else Weight=Weight+1;
      end;
   run;

ods graphics on;
proc princomp data=Basketball n=1 out=PCBasketball standard
              plots=patternprofile;
   var CSN--SI;
   weight Weight;
run;
ods graphics off;

proc sort data=PCBasketball;
   by Prin1;
run;

proc print;
   var School Prin1;
   title 'Pre-Season 1985 College Basketball Rankings';
   title2 'College Teams as Ordered by PROC PRINCOMP';
run;

【上篇】
【下篇】

抱歉!评论已关闭.