在(M)CA之后对列(即变量)而不是行(即个体)执行HCPC

问题描述 投票:0回答:1

在执行CA之后,我想在我的数据集的列上执行HCPC。出于某种原因,我还必须在开始时指定我的所有列都是'factor'类型,然后再次循环它们并将它们转换为数字。我不知道为什么到底,因为如果我检查每列的类型(没有指定它们作为因子)它们看起来是数字...当我不加载和转换这样的数据时,我得到一个错误如下:

特征误差(crossprod(t(X),t(X)),symmetric = TRUE):'x'中的无限或缺失值

这可能是因为我的数据集中的列只包含0吗?如果是这样,那么在应用CA之前首先读取所有内容然后将其转换为数字,而不是直接执行CA,它是如何工作完美的?

那么,HCPC的原始问题如下:

# read in data; 40 x 267 data frame
data_for_ca <- read.csv("./data/data_clean_CA_complete.csv",row.names=1,colClasses = c(rep('factor',267)))

# loop over first 267 columns, converting them to numeric
for(i in 1:267)
  data_for_ca[[i]] <- as.numeric(data_for_ca[[i]])

# perform CA
data.ca <- CA(data_for_ca,graph = F)

# perform HCPC for rows (i.e. individuals); up until here everything works just fine
data.hcpc <- HCPC(data.ca,graph = T)

# now I start having trouble

# perform HCPC for columns (i.e. variables); use their coordinates that are stocked in the CA-object that was created earlier
data.cols.hcpc <- HCPC(data.ca$col$coord,graph = T)

上面的代码在最后一种情况下向我显示了树形图,甚至让我将其剪切成簇,但后来我得到以下错误:

catdes中的错误(data.clust,ncol(data.clust),proba = proba,row.w = res.sauv $ call $ row.w.init):找不到对象'data.clust'

值得注意的是,当我对我的数据执行MCA并尝试在我的列上执行HCPC时,我得到完全相同的错误。任何人都有任何线索,如何解决这个或我做错了什么?为了完整性,我插入了数据集左上角的屏幕截图,以显示它的外观:

enter image description here

提前感谢您提供任何可能的帮助!

r cluster-analysis hierarchical-clustering correspondence-analysis
1个回答
0
投票

我知道这是旧的,但因为我今天已经解决了这个问题一段时间了:

HCPC说它接受一个数据框,但是当我试图从标准的$col$coord对象中简单地传递$colcoordca时,它会返回此错误。我最好的猜测是它实际需要/正在寻找的一些元数据不在坐标的数据框中,但我无法弄清楚它是什么或如何传递它。

当前版本的FactoMineR实际上只允许你给HCPC整个CA对象,并告诉它是否聚类行或列。所以你的最后一行代码应该是:

data.cols.hcpc <- HCPC(data.ca, cluster.CA = "columns", graph = T)

© www.soinside.com 2019 - 2024. All rights reserved.