根据daisy
documentation的cluster
函数,
当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?
答案 0 :(得分:2)
它可以这样做,但它至少需要一个非缺失值。在您的示例中,x
在第2,3和5项中有NA
,在五项中有1,3和4中有y
。每对中都缺少一个或两个元素。你如何建议在这种情况下评估不相似性?我不知道。