SAS教程[5]–第五章解答|《统计软件教程》(李东风版)|文艺数学君

  • A+
所属分类:SAS基础
摘要在这个新的教程中,我会结合《统计软件教程》(李东风版)这本数给出教程,并给出这本书第1到第5章的课后习题答案。希望大家能有所收获。这是这一系列的最后一篇文章了。

前言

一些话这是到了SAS第五章的内容了,也是挺快的,希望大家在看完这五篇文章后能够对SAS这门语言有所了解。

已经到了SAS学习的最后一个单元了,其实应该多少还是会有一些收获的。

学一个东西多少还是要靠自己,你能找到这个网站,找到这篇文章,相信你也是用心了,希望能学习每一个事物上面都能这样。

好了,下面就开始第五章的习题了。

 

5.1

题目要求

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

解答

  1. data SAS5_1;
  2. set SASuser.gpa;
  3. run;
  4. proc princomp data=SAS5_1 cov out=prin;/*进行主成分分析*/
  5. var gpa hsm hss hse satm satv;
  6. run;
  7. proc gplot;
  8. plot prin2*prin1 ;
  9. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

下面对上面的结果进行解释:

第一主分量贡献率已达73.37%,前两个主分量累计贡献率达到99.95%,所以前两个主分量可以表现学生学习成绩的大部分信息。

第一主分量的计算系数都是正数,所以它是一个学生,学习成绩的加权平均,所以第一个变量代表这个学生的总的学习情况。

第二主分量在satm上有较大的正系数,而在satv上有较大的负系数,在其他变量的系数上都接近0,可能是代表一个学生的数理学习水平。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

从第一主分量与第二主分量的散点图来看,散点的分布较匀,说明一个学生的总的学习情况与数理水平好坏可能关系不大。

下面进行简单的因子分析

  1. proc factor data=SAS5_1 simple corr;
  2. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

前两个主分量解释了64.06%的方差。按照默认的选择因子个数的准则MINEIGEN,取大于1的特征值,所以取两个因子。

而因子模式阵的结果,发现第一主分量(因子)在所有六个变量上都有正的载荷,可见这个因子反应了学生总体学习水平的影响。

第二主分量在satmsatv上有大的正载荷,在gpahsshse上有大的负载荷,因此第二个因子数值较大表明学生参加sat的成绩较好,而在大学的成绩低。

现进行主因子分析,先产生方差最大正交预旋转,然后进行斜交旋转。

  1. proc factor data=SAS5_1 priors=smc  rotate=promax reorder;
  2. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君 SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君 SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君 SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

可见,第一因子反映了hss, hse, hsm, gpa,这些应该与大学成绩有关。第二因子反映了satm, satv,与中学成绩有关。这样得到的因子已经比较好解释了。

再看斜交旋转的结果,从结果可以看到,此处的因子与正交旋转时相比并没有改进。

 

5.2

题目要求

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

解答

首先我们按照5.1节例2一样,输入数据如下:

  1. DATA SAS5_2;
  2. TITLE ’各州每十万人犯罪率’;
  3. INPUT STATE$ MURDER RAPE ROBBERY ASSAULT BURGLARY LARCENY AUTO;
  4. CARDS;
  5. ALABAMA 14.2 25.2 96.8 278.3 1135.5 1881.9 280.7
  6. ALASKA 10.8 51.6 96.8 284.0 1331.7 3369.8 753.3
  7. ARIZONA 9.5 34.2 138.2 312.3 2346.1 4467.4 439.5
  8. ARKANSAS 8.8 27.6 83.2 203.4 972.6 1862.1 183.4
  9. CALIFORNIA 11.5 49.4 287.0 358.0 2139.4 3499.8 663.5
  10. COLORADO 6.3 42.0 170.7 292.9 1935.2 3903.2 477.1
  11. CONNECTICUT 4.2 16.8 129.5 131.8 1346.0 2620.7 593.2
  12. DELAWARE 6.0 24.9 157.0 194.2 1682.6 3678.4 467.0
  13. FLORIDA 10.2 39.6 187.9 449.1 1859.9 3840.5 351.4
  14. GEORGIA 11.7 31.1 140.5 256.5 1351.1 2170.2 297.9
  15. HAWAII 7.2 25.5 128.0 64.1 1911.5 3920.4 489.4
  16. IDAHO 5.5 19.4 39.6 172.5 1050.8 2599.6 237.6
  17. ILLINOIS 9.9 21.8 211.3 209.0 1085.0 2828.5 528.6
  18. INDIANA 7.4 26.5 123.2 153.5 1086.2 2498.7 377.4
  19. IOWA 2.3 10.6 41.2 89.8 812.5 2685.1 219.9
  20. KANSAS 6.6 22.0 100.7 180.5 1270.4 2739.3 244.3
  21. KENTUCKY 10.1 19.1 81.1 123.3 872.2 1662.1 245.4
  22. LOUISIANA 15.5 30.9 142.9 335.5 1165.5 2469.9 337.7
  23. MAINE 2.4 13.5 38.7 170.0 1253.1 2350.7 246.9
  24. MARYLAND 8.0 34.8 292.1 358.9 1400.0 3177.7 428.5
  25. MASSACHUSETTS 3.1 20.8 169.1 231.6 1532.2 2311.3 1140.1
  26. MICHIGAN 9.3 38.9 261.9 274.6 1522.7 3159.0 545.5
  27. MINNESOTA 2.7 19.5 85.9 85.8 1134.7 2559.3 343.1
  28. MISSISSIPPI 14.3 19.6 65.7 189.1 915.6 1239.9 144.4
  29. MISSOURI 9.6 28.3 189.0 233.5 1318.3 2424.2 378.4
  30. MONTANA 5.4 16.7 39.2 156.8 804.9 2773.2 309.2
  31. NEBRASKA 3.9 18.1 64.7 112.7 760.0 2316.1 249.1
  32. NEVADA 15.8 49.1 323.1 355.0 2453.1 4212.6 559.2
  33. NEW_HAMPSHIRE 3.2 10.7 23.2 76.0 1041.7 2343.9 293.4
  34. NEW_JERSEY 5.6 21.0 180.4 185.1 1435.8 2774.5 511.5
  35. NEW_MEXICO 8.8 39.1 109.6 343.4 1418.7 3008.6 259.5
  36. NEW_YORK 10.7 29.4 472.6 319.1 1728.0 2782.0 745.8
  37. NORTH_CAROLINA 10.6 17.0 61.3 318.3 1154.1 2037.8 192.1
  38. NORTH_DAKOTA 0.9 9.0 13.3 43.8 446.1 1843.0 144.7
  39. OHIO 7.8 27.3 190.5 181.1 1216.0 2696.8 400.4
  40. OKLAHOMA 8.6 29.2 73.8 205.0 1288.2 2228.1 326.8
  41. OREGON 4.9 39.9 124.1 286.9 1636.4 3506.1 388.9
  42. PENNSYLVANIA 5.6 19.0 130.3 128.0 877.5 1624.1 333.2
  43. RHODE_ISLAND 3.6 10.5 86.5 201.0 1489.5 2844.1 791.4
  44. SOUTH_CAROLINA 11.9 33.0 105.9 485.3 1613.6 2342.4 245.1
  45. SOUTH_DAKOTA 2.0 13.5 17.9 155.7 570.5 1704.4 147.5
  46. TENNESSEE 10.1 29.7 145.8 203.9 1259.7 1776.5 314.0
  47. TEXAS 13.3 33.8 152.4 208.2 1603.1 2988.7 397.6
  48. UTAH 3.5 20.3 68.8 147.3 1171.6 3004.6 334.5
  49. VERMONT 1.4 15.9 30.8 101.2 1348.2 2201.0 265.2
  50. VIRGINIA 9.0 23.3 92.1 165.7 986.2 2521.2 226.7
  51. WASHINGTON 4.3 39.6 106.2 224.8 1605.6 3386.9 360.3
  52. WEST_VIRGINIA 6.0 13.2 42.2 90.9 597.4 1341.7 163.3
  53. WISCONSIN 2.8 12.9 52.2 63.7 846.9 2614.2 220.7
  54. WYOMING 5.4 21.9 39.7 173.9 811.6 2772.2 282.0
  55. ;
  56. RUN;

 

首先进行简单的因子分析

  1. proc factor data=SAS5_2 simple corr;
  2. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

前两个主分量解释了76.48%的方差。按照默认的选择因子个数的准则MINEIGEN,取大于1的特征值,所以取两个因子。

而因子模式阵的结果,发现第一主分量(因子)所有七个变量上都有正的载荷,可见这个因子反应了这个州总的犯罪情况。

第二主分量在burglary, larceny, atuo上有较大的正系数,在murder, rape, assault上有较大上负载荷,所以代表了暴力犯罪与其他犯罪的一种对比。

现在进行主因子分析。先产生方差最大正交预旋转,然后进行斜交旋转。

  1. proc factor data=SAS5_2 priors=smc
  2. rotate=promax reorder; /*ROTATE=PROMAX使得主因子分析后产生方差最大的正交预旋转*/
  3. run;

在初始的主因子结果之后是方差最大正交预旋转的结果:

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

可见,第一因子反映了LARCENY, BURGLARY, AUTO, ROBBERY, MURDER,ASSAULT, RAPE,这些应该与州的总体犯罪率有关。

第二因子反映ROBBERY, MURDER, ASSAULT, RAPE上有大的正载荷,说明反映了暴力犯罪的严重程度。这样得到的因子已经比较好解释了。

再看斜交旋转的结果,这里只给出了旋转后的因子模式阵:

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

从结果可以看到,此处的因子与正交旋转时相比并没有改进。我们在正交旋转中得到的系数就可以很好的解释变量了。

 

5.3

题目要求

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

解答

  1. data SAS5_3;
  2. input group $ x1 x2 x3 x4;
  3. cards;
  4. 1 6 -11.5 19 90
  5. 1 -4 -15.0 13 54
  6. 1 0 -23.0 5 -35
  7. 1 -100 -21.4 7 -15
  8. 1 -5 -18.5 15 18
  9. 1 10 -18.0 14 50
  10. 1 -8 -14.0 16 56
  11. 2 90.2 -17.0 17 3
  12. 2 0 -14.0 20 35
  13. 2 -100 -21.5 15 -40
  14. 2 13 -17.2 18 2
  15. 2 -11 -18.5 25 -36
  16. 2 0.5 -11.5 19 37
  17. 3 -11 -18.5 25 -36
  18. 3 0.5 -11.5 19 37
  19. 3 -10 -19.0 21 -42
  20. 3 20 -22.0 8 -20
  21. 3 0.6 -13.0 26 21
  22. 3 -40 -20.0 22 -50
  23. ;
  24. run;
  25. /*discrim可以进行参数判别和非参数判别*/
  26. proc discrim data=SAS5_3 outstat=SAS5_2_stat /*outstat指定输出输出判别函数的数据集*/
  27. method=normal pool=yes
  28. list crossvalidate;
  29. class group;   /*class分类变量*/
  30. priors proportional;
  31. id group;
  32. var x1-x4;
  33. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

上面是一些基本情况,和以各组的基本情况,列出了各组的先验概率。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

上面具体列出了各类的线性判断函数的各常数项及系数值。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

下面是每个观测的判别情况,包括原来为哪一类,现分入了哪一类,以及属于各类的后验概率值。带星号的为错判的观测。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

比如,group 2一共有6个观测,5个正确判断,占83.33%,有1个错判为group 3。最后一行为各类的先验概率。下面为各类的错判率,我们可以看出group 1的判别正确率最高,group 3的判别正确率最低。

下面是对训练数据进行交叉核实判断的情况。交叉核实的想法是,为了判断观测i的判别是否正确,用删去第i个观测的训练数据集算出判别规则,然后用此方法来判断第i个观测。对每一个观测都进行这样的判别。我们可以得到下面的表格。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

用交叉核实评价现有的group 1中7个判断对了6个,group 3的6个观测只判对了3个。并且,从表格中还可以看出,这时错误最少的group 1也有14.29%的错判率。

 

5.4

题目要求

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

解答

5.4.1

我们可以在INSIGHT中按照下面得进行操作:

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

得到如下的图:

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

5.4.2

  1. data SAS5_4;
  2. set SASuser.business;
  3. run;
  4. proc princomp data=SAS5_4 cov out=prin;
  5. var profits employs sales;
  6. run;
  7. proc gplot;
  8. plot prin2*prin1 ;
  9. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

第一主分量贡献率已达99.88%,前两个主分量累计贡献率达到100.00%,所以前两个主分量可以表现原三个变量的大部分信息。

第一主分量的计算系数都是正数,sale上有很大的载荷,所以它是反映了一个公司的规模情况。

第二主分量在profits上有的正系数,而在employs, sales上有负系数,代表一个公司的经营状况(盈利水平)。从第一主分量与第二主分量的散点图来看,主要集中在横轴附近的二三象限小区域内。

下面画出前两个主成分的散点图。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

5.4.3

  1. proc cluster data=SAS5_4 method=ward
  2. outtree=otree pseudo ccc;
  3. var profits employs sales;
  4. copy company;
  5. run;

我们可以得到如下的聚类过程

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

为了找到一个合理的分类个数,考察CCC、伪F、伪t-sq统计量和半偏R-sq统计量。因为类水平太大时的信息没有实际意义,所以我们对otree数据集取其类水平不超过30的观测,即:

  1. data ot;
  2. set otree;
  3. where _ncl_<=30;
  4. run;

通过如下的方法在INSIGHT中进行操作。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

可以画出如下的图像。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

由于ccc统计量,伪F,伪t^2 和半偏 R^2 都是看图中的局部最大值,用于确定聚类的个数,于是我们看下图。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

看来,比较一致的是四类。 因为我们知道可以分成四类,所以用如下的tree过程绘制树图并产生分类结果数据集:

  1. proc tree data=otree graphics
  2. horizontal nclusters=4
  3. out=oclust;
  4. copy company;
  5. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

从这张图上我们可以看出,也是可以分成两类的(因为可以看出很明显的两个大类)。

  1. proc tree data=ot graphics
  2. horizontal nclusters=2
  3. out=oclust;
  4. copy company;
  5. run;

上面的树形图过于复杂,我们是有ot画出简化后的聚类树,聚类个数为聚类为两类。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

为了统计分类结果,使用下面的代码:

  1. proc freq data=oclust;
  2. tables company*cluster /nopct norow nocol;
  3. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

下面我们在INSIGHT中用不同的颜色区分不同的类别。

我们首先将两个数据集合并。

  1. data SAS5_4_merge;
  2. merge SAS5_4 oclust;
  3. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

 

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君 SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

5.4.4

  1. proc univariate
  2. data=SAS5_4 normal;
  3. var profits employs sales;
  4. run;

关于变量profits的正态性检验,可以看到检验shapiro-Wilk的p-值很小,故拒绝原假设,我们可以认为数据不服从正态分布。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

关于变量employs的正态性检验,可以看到检验shapiro-Wilk的p-值很小,故拒绝原假设,我们可以认为数据不服从正态分布。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

关于变量sales的正态性检验,可以看到检验shapiro-Wilk的p-值很小,故拒绝原假设,我们可以认为数据不服从正态分布。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

下面我们来将数据做变换,使其接近正态分布。我们对profits和employs取对数,对sales取四次对数。然后再做正态性检验。

  1. data businessnew;
  2. set SAS5_4;
  3. l_profits=log(profits);
  4. l_employs=log(employs);
  5. l4_sales=log(log(log(log(sales))));
  6. run;
  7. proc univariate
  8. data=businessnew normal;
  9. var l_profits l_employs l4_sales;
  10. run;
  11. proc gchart
  12. data=businessnew;
  13. vbar l_profits;
  14. run;
  15. proc gchart
  16. data=businessnew;
  17. vbar l_employs;
  18. run;
  19. proc gchart
  20. data=businessnew;
  21. vbar l4_sales;
  22. run;

当然,我们也可以用INSIGHT进行操作,下面的结果是使用INSIGHT操作出的结果。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

从图中可以看到此事新的数据的shapiro-Wilk的p-值大于0.5,故我们可以认为新数据是服从正态分布的。

我们画出新的数据的三维散点图如下。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

再进行主成份分析

  1. proc princomp data=businessnew cov out=prin;
  2. var l_profits l_employs l4_sales;
  3. run;
  4. proc gplot;
  5. plot prin2*prin1 ;
  6. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

第一主分量贡献率已达81.79%,前两个主分量累计贡献率达到99.96%,所以前两个主分量可以表现原三个变量的大部分信息。

第一主分量的计算系数都是正数,在l_profits与l_employs上有很大的正载荷,所以它是反映了一个公司的规模情况。

第二主分量在l_employs上有大的正系数,而在l_profits上有负系数,代表一个公司的人均劳动生产率。

下面画出前两个主成分的散点图。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

现在开始做聚类分析。

  1. proc cluster
  2. data=businessnew method=ward
  3. outtree=otree pseudo ccc;
  4. var l_profits l_employs l4_sales;
  5. copy company;
  6. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

为了找到一个合理的分类个数,考察CCC、伪F、伪t-sq统计量和半偏R-sq统计量。因为类水平太大时的信息没有实际意义,所以我们对otree数据集取其类水平不超过30的观测,即:

  1. data
  2. ot;
  3. set otree;
  4. where _ncl_<=30;
  5. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

上面是四个变量的散点图,接下来我们看一下其中局部最大值的点的位置。

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

从各统计量图看来,局部最大值的ncl是2,故可以分成2类,所以用如下的tree过程绘制树图并产生分类结果数据集:

  1. proc tree data=otree graphics
  2. horizontal nclusters=2
  3. out=oclust;
  4. copy company;
  5. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

上面的树形图过于复杂,我们是有ot画出简化后的聚类树,聚类个数为聚类为两类。

  1. proc tree data=ot graphics
  2. horizontal nclusters=2
  3. out=oclust;
  4. copy company;
  5. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

为了统计分类结果,使用:

  1. proc tree data=otree graphics
  2. horizontal nclusters=2
  3. out=oclust;
  4. copy company;
  5. run;
  6. proc freq data=oclust;
  7. tables company*cluster /
  8. nopct norow nocol;
  9. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

 

5.5

题目要求

SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

解答

我们首先输入数据。

  1. data SAS5_5;
  2. input POP SCHOOL EMPLOY SERVICES HOUSE;
  3. CARDS;
  4. 5700 12.8 2500 270 25000
  5. 1000 10.9 600 10 10000
  6. 3400 8.8 1000 10 9000
  7. 3800 13.6 1700 140 25000
  8. 4000 12.8 1600 140 25000
  9. 8200 8.3 2600 60 12000
  10. 1200 11.4 400 10 16000
  11. 9100 11.5 3300 60 14000
  12. 9900 12.5 3400 180 18000
  13. 9600 13.7 3600 390 25000
  14. 9600 9.6 3300 80 12000
  15. 9400 11.4 4000 100 13000
  16. ;
  17. run;

下面开始做聚类分析。

  1. proc cluster data=SAS5_5 method=ward
  2. outtree=otree pseudo ccc;
  3. var POP SCHOOL EMPLOY SERVICES HOUSE;
  4. copy POP SCHOOL EMPLOY SERVICES HOUSE;
  5. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

为了找到一个合理的分类个数,考察CCC、伪F、伪t-sq统计量和半偏R-sq统计量。因为类水平太大时的信息没有实际意义,所以我们对otree数据集取其类水平不超过30的观测,即:

  1. data ot;
  2. set otree;
  3. where _ncl_<=30;
  4. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君

从各统计量图看来,并不一致,分两类可能比较合适。因为我们知道可以分成两类,所以用如下的tree过程绘制树图并产生分类结果数据集:

  1. proc tree data=otree graphics
  2. horizontal nclusters=2 out=oclust;
  3. copy POP SCHOOL EMPLOY SERVICES HOUSE;
  4. run;
SAS教程[5]--第五章解答|《统计软件教程》(李东风版)|文艺数学君
  • 微信公众号
  • 关注微信公众号
  • weinxin
  • QQ群
  • 我们的QQ群号
  • weinxin
王 茂南

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: