我正在对具有未知协方差矩阵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
答案 0 :(得分:0)
如果我理解正确你想要简单地忽略列(或变量),你甚至不需要从头开始重新计算Cholesky分解,而是有效地降低它的等级,而你可以使用正交变换进行降级,例如吉文斯轮换。我会通过实际删除列并从那里取出它来实现它。