下表给出的数据是在洛杉矶十二个标准大都市居民统计地区中进行人口调查获得的。它有五个社会经济变量,分别是人口总数(pop) 、居民的教育程度或中等教育的年数(school )、雇佣人总数(employ )、各种服务行业的人数(services )和中等的房价(house ),试作因子分析。
五个社会因素调查数据
n | pop | school | employ | services | house |
1 | 5700 | 12.8 | 2500 | 270 | 25000 |
2 | 1000 | 10.9 | 600 | 10 | 10000 |
3 | 3400 | 8.8 | 1000 | 10 | 9000 |
4 | 3800 | 13.6 | 1700 | 140 | 25000 |
5 | 4000 | 12.8 | 1600 | 140 | 25000 |
6 | 8200 | 8.3 | 2600 | 60 | 12000 |
7 | 1200 | 11.4 | 400 | 10 | 16000 |
8 | 9100 | 11.5 | 3300 | 60 | 14000 |
9 | 9900 | 12.5 | 3400 | 180 | 18000 |
10 | 9600 | 13.7 | 3600 | 390 | 25000 |
11 | 9600 | 9.6 | 3300 | 80 | 12000 |
12 | 9400 | 11.4 | 4000 | 100 | 13000 |
实验代码:
proc import out=temp1
datafile="D:\1常用桌面文件\IT\SAS实验\实验8\1.xls"
DBMS=EXCEL2000 replace;
run;
proc factor data=temp1 method=prin priors=one simple corr proportion=0.80 rotate=varimax score n=3 out=test;
var pop school employ services house;
run;
proc print data=test;
var factor1 factor2 factor3;
run;
proc plot data=test;
plot factor2*factor1 $ n=′*′/
href=0 vref=0;
run;
代码结果解释:
method为principal是用主成分法进行因子分析
priors=one规定计算先验公因子方差估计的方法,两者都是程序默认的参数
corr求相关阵和偏相关阵,simple输出简单条件量
score用回归法估计因子得分模型系数
proportion为选取公因子个数m,使m为满足λ1+…+λm / p ≥ 0.80的最小正整数
所求出的公因子解,初始因子载荷阵并不满足“简单结构准则”,即各个公共因子的典型代表变量不很突出,因而容易使公共因子的意义含糊不清,不利于对因子进行解释.为此必须对因子载荷阵施行旋转变换,使得各因子载荷的平方按列向0和1两极转化,达到其结构简化的目的.这种变换因子载荷阵的方法称为因子旋转,而旋转变换的方法主要有正交旋转,斜交旋转等.
Pop=0.58096F1+0.80642F2
School=0.76704F1-0.54476F2
Employ=0.67243F1+0.72605F2
Services=0.93239F1-0.10431F2
House=0.79116F1-0.55818F2
公因子能解释的方差分别为2.8733136和1.7966601,最终公因子方差之和为4.669974=2.8733136+1.7966601=0.98782629+0.88510555+0.97930583+0.88023562+0.93750041。
公因子F1在4个变量上的因子载荷都为正值,其中它与变量Services,house,school的相关性特别大,公因子F2在变量Employ,Pop上有较大的正载荷0.80642,0.72605.结合专业知识认为F1是经济发展因子,F2是人口因子。如若需要进一部分析,需要进行因子旋转后得到因子得分函数来进行分析。笔者这里没进行旋转后的分析,若需要读者可自行进行实验同上述方法进行分析,因子旋转只是在因子分析后因子载荷平均而不好解释才进行该操作,目的是让载荷极化,方便进行专业性的解释。