SAS中文论坛

标题: 紧急求助:关于SAS聚类的问题 [打印本页]

作者: shiyiming    时间: 2012-6-13 10:23
标题: 紧急求助:关于SAS聚类的问题
测试数据集如下:
data jaccard;
input kw$ x1 x2 x3 x4 x5 x6 x7 x8;
cards;
a 0 0 1 0 1 0 0 0
b 0 0 0 1 1 0 0 0
c 0 0 1 0 0 0 0 0
d 0 0 0 1 1 0 0 0
e 0 0 0 1 0 0 0 0
;
run;

计算距离矩阵如下:
proc distance data= jaccard method=djaccard absent=0 out=distjacc;
      var anominal(x1-x8);
id kw;
   run;

proc print;run;

运行结果如下:
Obs  kw   Dist1     Dist2    Dist3    Dist4    Dist5
1    a      0.00000      .        .        .        .
2    b      0.66667     0.0       .        .        .
3    c      0.50000     1.0       0        .        .
4    d      0.66667     0.0       1       0.0       .
5    e      1.00000     0.5       1       0.5       0

现在我需要对这五个观测值进行聚类,但是需要满足如下条件:如果某两个观测值之间的距离大于0.6,则不能聚成一类,比如上面的观测点a和b距离是0.66667,所以不能聚成一类,最后上面的五个点应该聚成2类:a和c一类;b,d,e一类,SAS如何实现?
作者: shiyiming    时间: 2012-6-13 12:10
标题: Re: 紧急求助:关于SAS聚类的问题
有个问题,如果观测是如下形式
[code:r3hmigfz]
data jaccard;
input kw$ x1 x2 x3 x4 x5 x6 x7 x8;
cards;
a 1 1 1 1 1 1 1 1
b 1 1 1 1 0 0 0 0
c 0 0 0 0 1 1 1 1
;
run;
[/code:r3hmigfz]
然后计算Jaccard得到
Obs    kw     a     b    c
   1     a     0.0    .    .
   2     b     0.5    0    .
   3     c     0.5    1    0

可见a和b距离为0.5,a和c距离为0.5,b和c距离为1。根据规则,结果是三个类?即使ab,ac都是0.5,但仍不可为一类?




欢迎光临 SAS中文论坛 (http://mysas.net/forum/) Powered by Discuz! X3.2