R:具有固定元素的协方差矩阵的参数化

时间:2012-12-13 08:30:57

标签: r optimization matrix constraints covariance

我正在对具有未知协方差矩阵X的某些高斯模型进行最大似然估计,该协方差矩阵X可以在任意位置包含固定元素。当没有固定元素时,我一直在使用以下log-cholesky参数化来确保X的正半精度:

diag(X)<-exp(0.5*param[1:k]) 
X[lower.tri(X)]<-param[-(1:k)]
X<-crossprod(X)

如果某些行和列固定为零,那么通过不更新矩阵的那些部分当然很容易处理:

nz<-diag(X)>0
diag(X)[nz]<-exp(0.5*param[1:k]) #different k now
X[nz,nz][lower.tri(X[nz,nz])]<-param[-(1:k)]
X[nz,nz]<-crossprod(X[nz,nz])

这概括为任何固定的行/列情况。但是,如果这种行/列的对角线元素(即相应变量的方差)是固定的,还是只与其他变量相关?有没有一般的方法这样做?

这是一个X的例子,NA标记我不想估计的元素而其他元素是固定的:

   > x
        [,1] [,2] [,3] [,4] [,5]
   [1,]   NA    0    0   NA   NA
   [2,]    0    0    0  0.0  0.0
   [3,]    0    0    1  0.0  0.0
   [4,]   NA    0    0   NA  0.5
   [5,]   NA    0    0  0.5   2

1 个答案:

答案 0 :(得分:0)

如果我理解正确你想要简单地忽略列(或变量),你甚至不需要从头开始重新计算Cholesky分解,而是有效地降低它的等级,而你可以使用正交变换进行降级,例如吉文斯轮换。我会通过实际删除列并从那里取出它来实现它。