SAS 判别分析

分三个数据集:

 

1.

DATA XDT;
	INPUT c x1-x5 @@;
	CARDS;
1 8.11 251.01 13.23 5.46 7.31
1 9.36 185.39 9.02 5.66 5.99 
1 9.85 249.58 15.61 6.06 6.11
1 2.55 137.13 9.21 6.11 4.35 
1 6.01 231.34 14.27 5.21 8.79
1 9.64 231.38 13.03 4.86 8.53
1 4.11 260.25 14.72 5.36 10.03
1 8.90 259.51 14.16 4.91 9.79
1 7.71 273.84 16.01 5.15 8.79
1 7.51 303.59 19.14 5.70 8.53
1 8.06 231.03 14.41 5.72 6.15
2 6.80 308.90 15.11 5.52 8.49
2 8.68 258.69 14.02 4.79 7.16
2 5.67 255.54 15.13 4.97 9.43
2 8.10 476.69 7.38 5.32 11.32
2 3.71 316.12 17.12 6.04 8.17
2 5.37 274.57 16.75 4.98 9.67
3 5.22 330.34 18.19 4.96 9.61
3 4.71 331.47 21.26 4.30 13.72
3 4.71 352.50 20.79 5.07 11.00
3 3.36 347.31 17.90 4.65 11.19
3 8.27 189.59 12.74 5.46 6.94 
;
PROC CANDISC OUT=OUTXDT    /*保存原始变量和典型变量,存储新的数据集*/
              ANOVA         /*查看每个指标变量的一元方差分析结果*/
			  DISTANCE;     /*要求计算类间的平方马氏距离并输出计算结果*/
	CLASS c;                /*指定分类变量*/
	VAR x1-x5;              /*指定指标变量*/
RUN;
PROC GPLOT DATA=OUTXDT;    /*画图体现判别分析的结果*/
	PLOT CAN2*CAN1=c;
RUN;


 

2.

DATA GXB;
	do i=1 to 16;
	do grp=1 to 2;
	input id x1 x2@@;
	output ; end; end;
	cards;
l 9.86 5.18 1 10.66 2.07
2 13.33 3.73 2 12.53 4.45
3 14.66 3.89 3 13.33 3.06
4 9.33 7.10 4 9.33 3.94
5 12.80 5.49 5 10.66 4.45
6 10.66 4.09 6 10.66 4.92
7 10.66 4.45 7 9.33 3.68
8 13.33 3.63 8 10.66 2.77
9 13.33 5.96 9 10.66 3.21
10 13.33 5.70 10 10.66 5.02
11 12.00 6.19 11 10.40 3.94
12 14.66 4.01 12 9.33 4.92
13 13.33 4.01 13 10.66 2.69
14 12.80 3.63 14 10.66 2.43
15 13.33 5.96 15 11.20 3.42
16 . . 16 9.33 3.63
;
/* 判别分析 - 冠心病人和正常人在指标舒张压和血浆胆固醇上的判别分析 */
TITLE '建立判别函数';
proc discrim data=GXB
              outstat=outgxb   /*输出判别分析的结果,如均值、标准差、判别函数的系数等,用于下一步判别新样本*/
			  simple         /*输出每一个指标变量的基本统计量和每一类内的基本统计量*/
			  anova         /*输出每一个指标变量的一元方差分析结果,用于检验每个指标变量在每一类上的均值是否都相等*/
			  manova        /*输出所有指标变量的多元方差分析结果,检验所有指标变量在每一类上的均值是否都相等*/
			  pool=test     /*确定方差协方差矩阵V的形式,=TEST表示检验类间方差的一致性,方法是Bartlett的修正似然比检验法*/
			  listerr       /*输出每个样本的回代结果,包括每个样本的事后概率及根据Bayes判别准则重新分类的准确率和错误率*/
			  posterr;     /*输出用所建立的判别函数来判别样本分类时所产生的事后概率错误率估计。*/
	class grp;             /*按照grp的值给数据分成两组*/
	var x1 x2;             /*指定用来建立判别函数的指标变量,必须是连续型数值变量*/
	priors prop;           /*指定事前概率等于样本估计值*/
run;

/*根据上述建立的判别函数模型对以下数据进行判别分析*/
TITLE '依据上述判别函数进行测试';
data GXBtest;
	input x1 x2@@;
	cards;
9.06 5.68 11.66 2.17
13.00 3.43 12.11 4.12
12.66 2.82 12.63 3.26
9.00 6.86 8.33 2.91
12.12 5.19 11.12 4.22
;
proc discrim data=outgxb     /*此处的data设置为上述判别函数的结果集*/
              testdata=GXBtest    /*指定测试集为输入的测试数据*/
			  testlist            /*输出被检验的新数据集中每个新样本的分类结果*/
			  posterr;           /*用过程步discrim1中的判别函数来判别新样本时产生的事后概率错误率估计*/        
	class grp;                  /*指示分组依据*/
	var x1 x2;                 /*指定指标变量*/
run;


 

3.

data xg;
	do i=1 to 30;
	do g=1 to 2;
	input tc tg hdlc ldlc apoa apob@@;
	output; end; end;
	cards;
245 157 38 168 1.10 1.01  174 140 47 120 0.84 0.57
236 275 40 125 1.22 1.12  106 110 52 40 1.08 0.87 
238 354 38 126 0.90 1.06  173 82 53 103 0.97 0.66 
233 250 31 150 1.02 0.98  178 100 43 117 0.98 0.65
240 149 35 170 1.26 1.13  198 112 53 123 0.98 0.72
235 166 40 164 1.30 1.15  180 114 48 110 1.02 0.80
204 365 38 90 1.33 0.95   134 60 36 84 0.98 0.58  
200 95 43 100 1.24 0.98   204 118 63 119 1.02 0.84
297 240 38 207 1.14 1.51  168 80 52 90 1.07 0.80  
177 97 49 108 1.49 1.02   219 157 28 142 1.02 0.83
200 172 43 116 1.25 1.03  189 158 43 115 0.92 0.80
195 211 47 106 1.22 0.94  180 90 59 102 1.32 0.90 
166 217 33 86 1.10 0.74   177 227 75 64 1.40 0.99 
144 111 28 46 0.71 0.65   172 55 51 102 1.31 0.97 
233 107 42 156 0.95 0.77  166 217 33 86 1.10 0.74 
143 91 24 108 0.67 0.65   210 166 42 130 1.28 1.02
228 223 34 136 1.05 0.84  166 217 33 86 1.10 0.74 
264 186 41 183 1.22 0.92 223 186 73 113 1.62 0.98 
178 131 49 98 1.18 1.27  136 72 67 46 1.45 0.84 
240 127 33 174 0.78 0.90  156 107 45 106 0.93 0.74
180 211 27 106 0.85 0.69  201 117 45 147 1.06 0.85
161 91 39 88 0.94 0.52  134 58 60 65 1.03 0.54
236 106 36 104 0.87 0.58  195 93 51 141 1.22 0.72
168 106 36 104 0.87 0.73  262 257 62 142 1.56 0.80
174 141 28 103 0.81 0.73  194 171 42 114 1.11 0.71
215 168 38 134 0.88 0.87  165 70 36 110 1.22 0.96
268 185 28 203 0.75 0.97  183 249 44 88 1.12 0.96
213 387 22 141 0.80 0.78  200 191 58 100 1.61 0.77
285 154 39 210 1.17 1.37  171 309 52 51 1.37 0.69
193 123 42 121 1.12 1.00  222 350 13 57 0.36 1.39
;
proc stepdisc data=xg
                method=stepwise    /*指定逐步判别方法,缺省为stepwise,还可以选择forward或backward*/
                sle=0.3 sls=0.05 /*指定逐步判别的过程中,以0.3作为进入模型的显著性阈值,0.05作为移出模型的显著性阈值*/
                short              /*抑制输出*/
				Pcorr           /*输出合并的类内相关矩阵*/
				Bcov            /*输出类间协方差矩阵*/
				Tsscp           /*输出总体的向量内乘积*/
				Wcov            /*输出类内协方差矩阵*/
				stdmean;        /*输出标准化的类均值*/

	class g;        /*指定g为分类变量*/
	var tc tg hdlc ldlc apoa apob;   /*指定所选指标变量*/
run;


 

你可能感兴趣的:(SAS常用数据分析模型)