chol.default(Cxx)中的错误:顺序的前导未定是肯定的

时间:2018-06-27 13:56:02

标签: r statistics

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

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了?所以我不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

当您尝试操作的矩阵的某些特征向量不是正数(通常为零或在很小的阈值以下)时,会发生错误。从本质上讲,这意味着您的数据太嘈杂/太小而无法估计完整的协方差矩阵。

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

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

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