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

R chol.default(Cxx)中的错误:顺序的前导小调不是正定的,r,statistics,R,Statistics,我在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=TR

我在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)
system('defaults write org.R-project.R force.LANG en_US.UTF-8')
##安装软件包(“mixOmics”)
图书馆(混合组学)

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

正则化意味着(近似地)添加一个惩罚项以使估计值远离零(在本例中,将矩阵远离非正特征向量)。如果正则化参数(
lambda1
lambda2
)太小,则会出现错误。由于您的
grid1
grid2
序列从零或非常小的值开始,因此
rCCA
将因这些太小的值而阻塞

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

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

grid1猜测:尝试将
grid1
grid2
序列设置为从一个更大的值开始,例如,
grid1@BenBolker修复了它!非常感谢你。两件事:1)也许我是这里的新手。。。但你能解释一下这是怎么解决的吗?我不确定我是否理解监管背后的机制。2) 我得到这个警告:“检测到79个零标度的变量实例!”这是我应该做的事情吗?我不知道这些警告——对不起。