我想问你,如何模拟高维稀疏协方差矩阵?
这意味着所需的特性是: 1.正半定义 2.稀疏 3,结果相关性在-1,1之间 4.对称 5.对角线上的正数
我的解决方案实际上仅适用于p <200,因为对于较大尺寸的解决方案而言,这是非常耗时的解决方案
p <-100
稀疏<-0.01
corr <-Matrix(0,p,p)#创建工作区
diag(corr)<-1#制作对角线
l1 <-1#第一分钟特征值
for(i in 2:p){
c<-runif(i-1) #for testing sparsity for each previous stock
for(j in 1:(i-1)){
if( c[j] < sparsity) { #testing sparsity
stp <- 0 # starting position of stop
while ( stp == 0 ) {
hij <- runif(1,-1,1) # generating correlation
corr[i,j] <- hij # plugging
corr[j,i] <- hij
l1 <- eigs_sym(corr,1,which='SA',opts=list(retvec=FALSE))$values # min eigen value
if(l1 > 0) {
stp <- 1 #checking PSD
}
}
}
}
}
covariance <- Matrix(0,p,p) # creating workspace
hi <- abs(rnorm(p,10,2)) # generating variance
diag(covariance) <- hi # plugging variance to covariance matrix
for (k in 2:p){
for(m in 1:(k-1)){
#deriving covariance
covariance[k,m] <- corr[k,m]*sqrt(covariance[k,k])*sqrt(covariance[m,m])
covariance[m,k] <- covariance[k,m]
}
}