在执行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时,我得到完全相同的错误。任何人都有任何线索,如何解决这个或我做错了什么?为了完整性,我插入了数据集左上角的屏幕截图,以显示它的外观:
提前感谢您提供任何可能的帮助!
我知道这是旧的,但因为我今天已经解决了这个问题一段时间了:
HCPC
说它接受一个数据框,但是当我试图从标准的$col$coord
对象中简单地传递$colcoord
或ca
时,它会返回此错误。我最好的猜测是它实际需要/正在寻找的一些元数据不在坐标的数据框中,但我无法弄清楚它是什么或如何传递它。
当前版本的FactoMineR
实际上只允许你给HCPC
整个CA
对象,并告诉它是否聚类行或列。所以你的最后一行代码应该是:
data.cols.hcpc <- HCPC(data.ca, cluster.CA = "columns", graph = T)