如何模拟稀疏协方差矩阵

时间:2018-12-15 20:40:26

标签: matrix sparse-matrix covariance-matrix

我想问你,如何模拟高维稀疏协方差矩阵?

这意味着所需的特性是: 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]

             }


              }

0 个答案:

没有答案