所以我想将我的数据分类为SAS中具有截止点的集群。我使用的方法是k-means聚类。 (我不介意这个方法,只要它给了我3组。)
我的群集代码:
proc fastclus data=maindat outseed=seeds1 maxcluster =3 maxiter=0;
var value resid;
run;
输出结果有问题。我希望Value的截止点包含在输出文件中。 (我不想要Resid的截止点)。那么无论如何要在SAS中这样做吗?
编辑:正如Joe指出的那样,我无法通过使用k-mean聚类实现我正在寻找的东西。那还有另一种方式吗?基本上,我想要一个截止点,以便我可以将它应用到另一个数据集。
我有什么:
Cluster Value Resid
1 34 11.7668
2 38.9 0.5328
3 42.625 -13.2364
我想要的是什么:
Cluster Value Resid Cut-off Value (Interger)
1 34 11.7668 1-36
2 38.9 0.5328 36-40
3 42.625 -13.2364 40-44
我的数据:
data maindat;
input value Resid ;
datalines;
44 -4.300511714
44 -9.646920963
44 -15.86956805
43 -16.14857235
43 -13.05797186
43 -13.80941206
42 -3.521394503
42 -1.102526302
42 -0.137573583
42 2.669238665
42 -9.540489193
42 -19.27474303
42 -3.527077011
41 1.676464068
41 -2.238822314
41 4.663079037
41 -5.346920963
40 -8.543723186
40 0.507460641
40 0.995302284
40 0.464194011
39 4.728791571
39 5.578685423
38 2.771297564
38 7.109159247
37 15.96059456
37 2.985292226
36 -4.301136971
35 5.854674875
35 5.797294021
34 4.393329025
33 -6.622580905
32 0.268500302
27 12.23062252
;
run;
答案 0 :(得分:1)
我认为你不一定能完全做到这一点。
k-means聚类使用您提供的所有变量之间的欧氏距离。这意味着它不仅仅使用value
来集群观察:它也使用Resid
。
因此,如果value
值更接近那么,它可能与群集2一起使用Resid
似乎应该与群集3一起使用。
在您的示例中,如果您请求out
数据集,您会看到这是真的。该out数据集的proc freq显示集群1有三行,其值为27
,37
和38
。群集2几乎包含所有行 - 除了总共7行外 - 从32
到44
不等。群集3的范围从40
到44
。
因此,没有合理的方式来定义您的群集,就像您使用这种群集方法一样。群集通常由其质心定义,这是您使用outstat
数据集获得的内容;您可以根据此确定应为哪个群集分配特定值。