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