gpt4 book ai didi

r - chol.default(Cxx) : the leading minor of order is not positive definite 中的错误

转载 作者:行者123 更新时间:2023-12-04 00:30:58 25 4
gpt4 key购买 nike

我在 R 中有一个非常简单的脚本。它加载两个数据帧,然后执行 rCCAmixOmics :

system('defaults write org.R-project.R force.LANG en_US.UTF-8') 
## install.packages("mixOmics")
library(mixOmics)
TCIA <- read.csv("/Users/kimrants/Desktop/Data_for_R/TCIA",
header=TRUE,
sep=",",
stringsAsFactors=FALSE)
TCGA <- read.csv("/Users/kimrants/Desktop/Data_for_R/TCGA",
header=TRUE,
sep=",",
stringsAsFactors=FALSE)

# Remove first column (of ID)
df_TCGA <- TCGA[,-1] df_TCIA<- TCIA[,-1]
data.shrink <- rcc(X=df_TCIA, Y=df_TCGA, ncomp = 5, method = 'shrinkage')
plot(data.shrink, scree.type = "barplot")
grid1 <- seq(0, 0.2, length = 5)
grid2 <- seq(0.0001, 0.2, length = 5)
cv <- tune.rcc(df_TCIA, df_TCGA,
grid1 = grid1, grid2 = grid2, validation = "loo")
result <- rcc(df_TCIA, df_TCGA, ncomp = 5,
lambda1= cv$opt.lambda1, lambda2 = cv$opt.lambda2)

但是,在执行倒数第二行时,出现此错误:

Error in chol.default(Cxx) : the leading minor of order 4 is not positive definite



我访问过类似错误的文档: http://mixomics.org/faq/parameters-tuning/

在这里,它说:“这很可能发生在遇到奇异矩阵时,其中来自两个数据集的变量总数远大于样本数。我们建议使用正则化 CCA”
...但我已经在使用 rCCA?所以我不知道如何解决这个问题..

最佳答案

当您尝试操作的矩阵的某些特征向量不是正数时(通常它们为零,或低于某个非常小的阈值),就会出现您看到的错误;这基本上意味着您的数据太嘈杂/太小而无法估计完整的协方差矩阵。

正则化 意味着(大约)添加一个惩罚项以将您的估计值推离零(在这种情况下,将您的矩阵推离具有非正特征向量)。如果您的正则化参数( lambda1lambda2 )太小,则会出现错误。由于您的 grid1grid2序列从零或非常小的值开始,rCCA会因为这些太小的值而窒息。

尝试将 grid1 和 grid2 序列设置为从更大的值开始,例如

grid1 <- grid2 <- seq(0.05, 0.2, length=5)

关于r - chol.default(Cxx) : the leading minor of order is not positive definite 中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51064686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com