FactoMineR包中含补充信息的PCA分析调用dimdesc()函数报错求助
FactoMineR中dimdesc()在带补充变量的PCA下报错求助
最近在用FactoMineR处理orange数据集的PCA分析时,碰到了一个奇怪的问题,折腾了好久都没解决,麻烦大家帮忙看看!
问题详情
我分两种情况跑PCA:
- 第一种:只取数据集前8列做普通PCA,调用
dimdesc()分析维度相关性完全正常; - 第二种:先移除数据集的第16、17列,然后把第9-15列设为定量补充变量(
quanti.sup)、第1列设为定性补充变量(quali.sup)再跑PCA,结果调用dimdesc(res.pca.all, axes = 1:2)直接报错了。
我已经仔细检查过处理后的数据集,确认没有NA值,但还是搞不定这个错误。
重现代码
# 情况1:普通PCA(运行无问题) data_orange <- read.delim("orange.csv", header = T, sep = ";") data_orange_subset <- data_orange[,1:8] res.pca <- PCA(data_orange_subset, graph = F) dimdesc(res.pca, axes = 1:2) # 此步骤正常输出结果 # 情况2:带补充变量的PCA(dimdesc报错) data_orange_2 <- data_orange[,-c(16,17)] res.pca.all <- PCA(data_orange_2, graph = F, quanti.sup = 9:15, quali.sup = 1) dimdesc(res.pca.all, axes = 1:2) # 此处触发错误
错误信息
Error in if (sum(tabF[, 2] <= proba) > 0) resF <- tabF[tabF[, 2] <= proba, : missing value where TRUE/FALSE needed
我的R会话信息
R version 4.1.2 (2021-11-01) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Linux Mint 19.1 Matrix products: default BLAS: /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.7.1 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.7.1 locale: [1] LC_CTYPE=en_GB.UTF-8 LC_NUMERIC=C LC_TIME=en_GB.UTF-8 [4] LC_COLLATE=en_GB.UTF-8 LC_MONETARY=es_ES.UTF-8 LC_MESSAGES=en_GB.UTF-8 [7] LC_PAPER=es_ES.UTF-8 LC_NAME=C LC_ADDRESS=C [10] LC_TELEPHONE=C LC_MEASUREMENT=es_ES.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] factoextra_1.0.7.999 ggplot2_3.3.6 FactoMineR_2.4 loaded via a namespace (and not attached): [1] ggrepel_0.9.1 Rcpp_1.0.8.3 lattice_0.20-45 tidyr_1.2.0 [5] assertthat_0.2.1 digest_0.6.29 utf8_1.2.2 R6_2.5.1 [9] backports_1.4.1 evaluate_0.15 pillar_1.7.0 rlang_1.0.3 [13] rstudioapi_0.13 minqa_1.2.4 car_3.1-0 nloptr_2.0.3 [17] Matrix_1.4-1 DT_0.23 rmarkdown_2.13 labeling_0.4.2 [21] splines_4.1.2 lme4_1.1-29 htmlwidgets_1.5.4 munsell_0.5.0 [25] broom_0.8.0 compiler_4.1.2 xfun_0.31 pkgconfig_2.0.3 [29] faraway_1.0.7 htmltools_0.5.2 flashClust_1.01-2 tidyselect_1.1.2 [33] tibble_3.1.7 gridExtra_2.3 dendextend_1.15.2 viridisLite_0.4.0 [37] fansi_1.0.3 crayon_1.5.1 dplyr_1.0.9 withr_2.5.0 [41] ggpubr_0.4.0 MASS_7.3-56 leaps_3.1 grid_4.1.2 [45] nlme_3.1-157 gtable_0.3.0 lifecycle_1.0.1 DBI_1.1.2 [49] magrittr_2.0.3 scales_1.2.0 cli_3.3.0 carData_3.0-5 [53] farver_2.1.0 ggsignif_0.6.3 viridis_0.6.2 scatterplot3d_0.3-41 [57] ellipsis_0.3.2 generics_0.1.2 vctrs_0.4.1 boot_1.3-28 [61] ggsci_2.9 tools_4.1.2 glue_1.6.2 purrr_0.3.4 [65] abind_1.4-5 fastmap_1.1.0 yaml_2.3.5 colorspace_2.0-3 [69] cluster_2.1.3 rstatix_0.7.0 knitr_1.39
我自己的猜测(不确定对不对)
- 会不会是移除列后,补充变量的索引搞错了?比如原来的第9-15列在移除16、17列后位置有没有变化?
- 会不会是FactoMineR版本的bug?我用的是2.4版本,要不要试试更新到最新版?
dimdesc()处理带补充变量的PCA时,是不是需要额外指定参数,比如只分析主成分变量?
希望各位能给我一些解决思路或者建议,谢谢!
内容的提问来源于stack exchange,提问作者MagíBC
相关产品推荐
相关产品推荐

