我正在尝试对183个变量进行随机矩阵相关,以计算Cholesky分解并与183个随机法线相关。为了创建相关矩阵,下面使用了可重复的代码:
首先我放下种子
set.seed(2)
然后我生成0.6到0.8之间的随机数
corr <- matrix(runif(183*183, min = 0.6, max = 0.8), 183, 183)
下一步是将对角线变成
for (i in 1:183) {
for (j in 1:183) {
if (i == j) {
corr[i,j] <- 1
}
}
}
最后一步是使其对称
for (i in 1:183) {
for (j in 1:183) {
if (i < j) {
corr[i,j] <- corr[j,i]
}
}
}
当我尝试进行cholesky分解时出现了我遇到的问题
cholesky <- chol(corr)
我收到以下错误:
chol.default(corr)中的错误:14阶的前导未成年人不是肯定的
如何使相关矩阵半定正?
也许您可以尝试下面的代码来生成半定正矩阵
set.seed(2)
v <- runif(183,0.6,0.8)
corr <- `diag<-`(tcrossprod(v),1)
赞成。通过参考有关协方差矩阵数值稳定性的文献,也许可以改善答案。以及为什么使用t(X)%*%X有助于生成稳定的