当我们使用包ClustOfVar
在R中进行变量聚类时,我们通常需要通过指定参数h
(高度)或k
(所需的数量)来将聚类树切割成组。簇状物)。
当我们使用k
时(只要k小于列数),它总能正常工作。
但是当我们使用h
来切割时,如果有3个或3个以上相同的列,则可能会出现错误。 (如果您没有收到错误消息,请多次运行以下代码。)
A = sample(LETTERS[1:4],40,replace = TRUE)
B = A
C = A
fit = hclustvar(X.quali = data.frame(A,B,C))
plot(fit)
cutree(fit,h=0.5)
#Error in cutree(fit, h = 0.5) :
# the 'height' component of 'tree' is not sorted (increasingly)
在以下示例中,我们只有2个相同列的组。它永远不会失败。
A = sample(LETTERS[1:4],40,replace = TRUE)
B = A
C = sample(LETTERS[1:2],40,replace = TRUE)
D = C
fit = hclustvar(X.quali = data.frame(A,B,C,D))
plot(fit)
cutree(fit,h=0.5)
如果我们在第二个例子中再添加一个相同的列:
A = sample(LETTERS[1:4],40,replace = TRUE)
B = A
C = sample(LETTERS[1:2],40,replace = TRUE)
D = C
E = C
fit = hclustvar(X.quali = data.frame(A,B,C,D,E))
plot(fit)
cutree(fit,h=0.5)
#Error in cutree(fit, h = 0.5) :
# the 'height' component of 'tree' is not sorted (increasingly)
它再次失败。
我认为通过h
剪切聚类树更加实用和方便,因为它更加一致和有意义。
是否有任何可行的解决方法?或者R中是否有更稳定的包可以进行变量聚类?感谢。