如果使用二进制数据,Jaccard和Gower的区别是什么?哪个更好?

问题描述

我尝试使用二进制数据制作分层聚类模型。 据我所知,在二进制数据的情况下,高尔距离计算出的差异与雅卡德距离相等。

但是,当我使用'proxy'和'cluster'库在R中尝试时,我发现结果彼此不同。

我的测试数据是

> test
   CHYT CIHD CHLP
1     0    0    1
2     0    0    1
3     0    0    1
4     0    0    0
5     0    0    0
6     0    0    0
7     1    1    1
8     0    0    0
9     0    0    1
10    0    0    0

> test_factor
   CHYT CIHD CHLP
1     0    0    1
2     0    0    1
3     0    0    1
4     0    0    0
5     0    0    0
6     0    0    0
7     1    1    1
8     0    0    0
9     0    0    1
10    0    0    0

这两个数据帧是相同的,但唯一的区别是值的类别(test:int,test_factor:factor)。

我的测试结果是,

library(proxy)
library(cluster)

> daisy(test_factor)
dissimilarities :
           1         2         3         4         5         6         7         8         9
2  0.0000000                                                                                
3  0.0000000 0.0000000                                                                      
4  0.3333333 0.3333333 0.3333333                                                            
5  0.3333333 0.3333333 0.3333333 0.0000000                                                  
6  0.3333333 0.3333333 0.3333333 0.0000000 0.0000000                                        
7  0.6666667 0.6666667 0.6666667 1.0000000 1.0000000 1.0000000                              
8  0.3333333 0.3333333 0.3333333 0.0000000 0.0000000 0.0000000 1.0000000                    
9  0.0000000 0.0000000 0.0000000 0.3333333 0.3333333 0.3333333 0.6666667 0.3333333          
10 0.3333333 0.3333333 0.3333333 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 0.3333333

> dist(test,method= 'Jaccard')
           1         2         3         4         5         6         7         8         9
2  0.0000000                                                                                
3  0.0000000 0.0000000                                                                      
4  1.0000000 1.0000000 1.0000000                                                            
5  1.0000000 1.0000000 1.0000000 0.0000000                                                  
6  1.0000000 1.0000000 1.0000000 0.0000000 0.0000000                                        
7  0.6666667 0.6666667 0.6666667 1.0000000 1.0000000 1.0000000                              
8  1.0000000 1.0000000 1.0000000 0.0000000 0.0000000 0.0000000 1.0000000                    
9  0.0000000 0.0000000 0.0000000 1.0000000 1.0000000 1.0000000 0.6666667 1.0000000          
10 1.0000000 1.0000000 1.0000000 0.0000000 0.0000000 0.0000000 1.0000000 0.0000000 1.0000000

即使我尝试二进制数据,它们是否也彼此不同? 如果是这样,那么使用这种输入数据计算两种方法间的层次聚类距离的更好方法是什么?

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)