You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 19:27:33