为什么群集库中的daisy()在计算不相似性时无法排除NA

时间:2013-12-08 07:06:33

标签: r cluster-computing

根据daisy documentationcluster函数, 当NA(缺失)值存在时,它可以计算不相似性。

  

在菊花算法中,不包括x行中的缺失值   在涉及该行的不同之处。主要有两种情况,

     

如果所有变量都是间隔缩放的(并且度量标准不是“gower”),那么   metric是“euclidean”,n_g是其中的列数   第i行和第j行都没有NA,然后返回不相似度d(i,j)   是sqrt(p / n_g)(p = ncol(x))乘以欧几里德距离   两个长度为n_g的向量缩短以排除NA。规则是   类似于“曼哈顿”度量,除了系数是   P / n_g。如果n_g = 0,则相异性为NA。

     

当某些变量的类型不是间隔缩放时,或者如果   指定metric =“gower”,两行之间的差异是   每个变量的贡献的加权平均值。具体地,

     

d_ij = d(i,j)= sum(k = 1:p; w_k delta(ij; k)d(ij,k))/ sum(k = 1:p; w_k   增量(IJ; K)。)

     

换句话说,d_ij是权重w_k的d(ij,k)的加权平均值   delta(ij; k),其中w_k = weigths [k],delta(ij; k)是0或1,并且   d(ij,k),对总距离的第k个可变贡献是a   x [i,k]和x [j,k]之间的距离,见下文。

     

当变量x [,k]为0时,0-1权重增量(ij; k)变为零   在一行或两行(i和j)中丢失,或者当变量是   不对称二进制和两个值均为零。它在所有其他情况下   是1。

     

名义或二元变量对总数的贡献d(ij,k)   如果两个值相等,则相异度为0,否则为1。该   其他变量的贡献是两者的绝对差异   值,除以该变量的总范围。注意   “标准评分”应用于序数变量,即它们是   替换为整数代码1:K。请注意,这与...不一样   使用他们的等级(因为通常有联系)。

     

由于个人贡献d(ij,k)在[0,1]中,所以   相异度d_ij将保持在此范围内。如果所有权重都是如此   delta(ij; k)为零,相异度设置为NA。

但是为什么当我尝试这段代码时

library(cluster)
x <- c(1.115,NA,NA,0.971,NA)
y <- c(NA,1.006,NA,NA,0.645)
#z <- c(1.115,1.3,2.2,0.971,NA)
df <- as.data.frame(rbind(x,y))
daisy(df,metric="gower")

它给出了这样的信息:

Dissimilarities :
   x
y NA

Metric :  mixed ;  Types = I, I, I, I, I 
Number of objects : 2
Warning messages:
1: In min(x) : no non-missing arguments to min; returning Inf
2: In max(x) : no non-missing arguments to max; returning -Inf

我期望相异度输出给出非NA值,例如0。 什么是正确的方法?

如何将daisy()输出中的NA替换为0?

1 个答案:

答案 0 :(得分:2)

它可以这样做,但它至少需要一个非缺失值。在您的示例中,x在第2,3和5项中有NA,在五项中有1,3和4中有y。每对中都缺少一个或两个元素。你如何建议在这种情况下评估不相似性?我不知道。