资源描述
SAS的Factor过程
因子分析
Factor 过程 (李东风教程 P251—256,P255正交旋转,斜交旋转)
DATA SOCECON;
TITLE 'FIVE SOCIO-ECONOMIC VARIABLES';
TITLE2 'SEE PAGE 14 OF HARMAN: MODERN FACTOR ANALYSIS, 2ND ED';
INPUT POP 1-9 SCHOOL 10-19 EMPLOY 20-29 SERVICES 30-39
HOUSE 40-49;
LABEL POP='TOTAL POPULATION' SCHOOL='MEDIAN SCHOOL YEARS'
EMPLOY='TOTAL EMPLOYMENT' SERVICES='MISC. PROFESSIONAL SERVICES'
HOUSE='MEDIAN VALUE HOUSE';
CARDS;
5700 12.8 2500 270 25000
1000 10.9 600 10 10000
3400 8.8 1000 10 9000
3800 13.6 1700 140 25000
4000 12.8 1600 140 25000
8200 8.3 2600 60 12000
1200 11.4 400 10 16000
9100 11.5 3300 60 14000
9900 12.5 3400 180 18000
9600 13.7 3600 390 25000
9600 9.6 3300 80 12000
9400 11.4 4000 100 13000
;
RUN;
PROC PRINT;
RUN;
PROC FACTOR OUTSTAT=FACT1 METHOD=PRINCIPAL NFACT=2
ROTATE=VARIMAX PREPLOT PLOT SCORE;
TITLE2 'SEE PAGES 137 & 310 OF HARMAN: MODERN FACTOR ANALYSIS, 2ND ED';
RUN;
PROC PRINT; BY _TYPE_ NOTSORTED;
TITLE2 'OUTPUT DATA SET FROM PROC FACTOR';
RUN;
PROC SCORE SCORE=FACT1 DATA=SOCECON OUT=SCORES;
TITLE2 'FACTOR SCORES';
PROC PRINT;
RUN;
PROC FACTOR DATA=FACT1 METHOD=PRIN NFACT=2;
PRIORS SMC;
TITLE2 'SEE PAGE 162 OF HARMAN: MODERN FACTOR ANALYSIS, 2ND ED';
RUN;
PROC FACTOR DATA=FACT1 METHOD=ML NFACT=2 HEYWOOD;
TITLE2 'SEE PAGE 229 OF HARMAN: MODERN FACTOR ANALYSIS, 2ND ED';
RUN;
一、 factor过程
格式:proc factor 选项;
var 变量;
priors 公因子方差;
run;
注:1)、选项:data=输入数据集 outstat=输出数据集
method=因子选择方法(包括principal , ML , alpha , prinit 等)
rotate=因子转轴方式(包括none , varimax , promax , orthomax 等)
Priors=计算公因子方差的方法(包括One Smc 等)
2)priors语句为var语句中的变量设定公因子方差的预估值(介于0与1之间)。
例:美国洛杉机市12个社区的社会经济状况分析:5个变量为:pop(人口)、school(教育程度)、employ(就业)、services(服务)、house(房价),程序如下:
DATA economy;
INPUT POP SCHOOL EMPLOY SERVICES HOUSE;
CARDS;
……………………..
PROC FACTOR DATA=economy SIMPLE CORR;
TITLE 'Principal Component Analysis' ;
RUN;
PROC FACTOR DATA=economy PRIORS=SMC ROTATE=PROMAX OUTSTAT=factall REORDER ;
PROC PRINT;
TITLE2'FACTOR OUTPUT DATA SET' ;
RUN;
参照上例自己编的程:
libname abc "D:/sas1";
proc data abc.fitness;(想一想这里为什么用fitness而不用class)
input NUM AGE WEIGHT RUNTIME RSTPULSE RUNPULSE MAXPULSE OXYGEN GROUP;
proc factor data=abc.fitness PRIORS=SMC ROTALE=PROMAX OUTSTAT=factall REORDER;
proc print;
RUN;\
改进:
把promax 改为varimax,去掉reorder
Promax 和varimax是两种不同的旋转方法,一般用varimax.
Smc是计算公因子方差的方法
习题八第3题因子分析
data chemical;
input SO TO FO CO KO@@;
cards;
75.20 0.14 1.86 0.91 5.21
75.15 0.16 2.11 0.74 4.93
72.19 0.13 1.52 0.69 4.65
72.35 0.13 1.37 0.83 4.87
72.74 0.10 1.41 0.72 4.99
73.29 0.033 1.07 0.17 3.15
73.72 0.033 0.77 0.28 2.78
;
proc factor data=chemical SIMPLE CORR;
title 'chemical component';
run;
proc factor data=chemical PRIORS=SMC ROTATE=PROMAX OUTSTAT=factall REORDER;
PROC PRINT;
title2'factor output data set';
run;
展开阅读全文