SAS常用基础代码例子-主成分分析
给出1991年我国30个省、区、市城镇居民的月平均消费数据,所考察的八个指标如下(单位均为元/人)
X1:人均粮食支出; X2:人均副食支出;X3 :人均烟酒茶支出;X4 :人均其他副食支出;
X5 :人均衣着商品支出;X6 :人均日用品支出;X7 :人均燃料支出; X8:人均非商品支出;
(1)求样本相关系数矩阵R;
(2)从R出发做主成分分析,求各主成分的贡献率及前两个主成分的累计贡献率;
(3)求出前两个主成分并解释其意义,按第一主成分得分将30个省、区、市排序,结果如何?
解:建立数据集shuju,运用sas的proc corr过程求得八个变量的观测数据的样本协方差矩阵S:
proc corr cov nosimple data=shuju;
var x1-x8;
run;
proc princomp data=shuju out=bb;
var x1-x8;
run;
协方差矩阵(Covariance Matrix)S为:
由此看出,各指标的样本方差差异很大,因此从样本相关系数矩阵出发做主成分分析(即求标准化指标的样本成分)。
由SAS的proc princomp过程可求得其样本相关系数矩阵(Correlation Matrix)R为:



按第一主成分得分将30个省、区、市排序:
data score1;
set bb;
proc sort data=score1;
by descending prin1;
proc print data=score1;
var area prin1 x1-x8;
run;
由此可知,广东居民的月平均消费水平最高,上海居民次之,而江西居民的月平均消费水平是其中最低的。
代码块:
data shuju;
input area $ x1 x2 x3 x4 x5 x6 x7 x8 @@;
cards;
山西 8.35 23.53 7.51 8.62 17.42 10.00 1.04 11.21
内蒙古 9.25 23.75 6.61 9.19 17.77 10.48 1.72 10.51
吉林 8.19 30.50 4.72 9.78 16.28 7.60 2.52 10.32
黑龙江 7.73 29.20 5.42 9.43 19.29 8.49 2.52 10.00
河南 9.42 27.93 8.20 8.14 16.17 9.42 1.55 9.76
甘肃 9.16 27.98 9.01 9.32 15.99 9.10 1.82 11.35
青海 10.06 28.64 10.52 10.05 16.18 8.39 1.96 10.81
河北 9.09 28.12 7.40 9.62 17.26 11.12 2.49 12.65
陕西 9.41 28.20 5.77 10.80 16.36 11.56 1.53 12.17
宁夏 8.70 28.12 7.21 10.53 19.45 13.30 1.66 11.96
新疆 6.93 29.85 4.54 9.49 16.62 10.65 1.88 13.61
湖北 8.67 36.05 7.31 7.75 16.67 11.68 2.38 12.88
云南 9.98 37.69 7.01 8.94 16.15 11.08 0.83 11.67
湖南 6.77 38.69 6.01 8.82 14.79 11.44 1.74 13.23
安徽 8.14 37.75 9.61 8.49 13.15 9.76 1.28 11.28
贵州 7.67 35.71 8.04 8.31 15.13 7.76 1.41 13.25
辽宁 7.90 39.77 8.49 12.94 19.27 11.05 2.04 13.29
四川 7.18 40.91 7.32 8.94 17.60 12.75 1.14 14.80
山东 8.82 33.70 7.59 10.98 18.82 14.73 1.78 10.10
江西 6.25 35.02 4.72 6.28 10.03 7.15 1.93 10.39
福建 10.60 52.41 7.70 9.98 12.53 11.70 2.31 14.69
广西 7.27 52.65 3.84 9.16 13.03 15.26 1.98 14.57
海南 13.45 55.85 5.50 7.45 9.55 9.52 2.21 16.30
天津 10.85 44.68 7.32 14.51 17.13 12.08 1.26 11.57
江苏 7.21 45.79 7.66 10.36 16.56 12.86 2.25 11.69
浙江 7.68 50.37 11.35 13.30 19.25 14.59 2.75 14.87
北京 7.78 48.44 8.00 20.51 22.12 15.73 1.15 16.61
西藏 7.94 39.65 20.97 20.82 22.52 12.41 1.75 7.90
上海 8.28 64.34 8.00 22.22 20.06 15.12 0.72 22.89
广东 12.47 76.39 5.52 11.24 14.52 22.00 5.46 25.50
;
run;
proc corr cov nosimple data=shuju;
var x1-x8;
run;
proc princomp data=shuju out=bb;
var x1-x8;
run;
data score1;
set bb;
proc sort data=score1;
by descending prin1;
proc print data=score1;
var area prin1 x1-x8;
run;
本文通过SAS代码演示了如何对1991年30个省、区、市城镇居民的消费数据进行主成分分析,包括求样本相关系数矩阵,计算主成分贡献率和前两个主成分的累计贡献率,并依据第一主成分得分对地区进行排序,揭示消费水平差异。
1073

被折叠的 条评论
为什么被折叠?



