r语言 - chol.default(Cxx) 中的错误:顺序的前导小调不是正定的



我在R中有一个非常简单的脚本。它在两个数据框中加载,然后使用mixOmics执行rCCA

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)

但是,在执行倒数第二行时,我收到此错误:

chol.default(Cxx( 中的错误:4 阶的前导小调不是正定的

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

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

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

则化意味着(大约(添加一个惩罚项,以使您的估计值远离零(在这种情况下,使您的矩阵远离非正特征向量(。如果你的正则化参数(lambda1lambda2(太小,那么你就会得到错误。由于grid1grid2序列从零或非常小的值开始,因此rCCA会因为这些太小的值而阻塞。

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

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

相关内容

  • 没有找到相关文章

最新更新