R中随机指数相关矩阵的Cholesky分解

时间:2017-05-24 07:57:48

标签: r matrix statistics correlation matrix-factorization

我有一组使用以下代码创建的指数相关矩阵。

x=runif(n)
R=matrix(0,n,n)  
for (j in 1:n)
{
  for(k in 1:n)
  {
    R[j,k]=exp(-(x[j]-x[k])^2);
  }
}

现在我想让他们的Cholesky分解。但其中许多都是否定的。我怎么能解决这个问题?

2 个答案:

答案 0 :(得分:1)

尝试使用它来构建正确的矩阵

A<-matrix(runif(n^2),n,n)
dim(A)
A<-A%*%t(A)
chol(A)

答案 1 :(得分:0)

空间或时间建模中使用的指数相关矩阵具有控制衰减速度的因子alpha

exp(- alpha * (x[i] - x[j]) ^ 2))

您已将此因素修正为1.但在实践中,此类因素是根据数据估算的。

请注意,alpha是确保数字正定性所必需的。该矩阵原则上是正定的,但在数值上不是alpha不足以快速衰减。

鉴于x <- runif(n, 0, 1)x[i]x[j]之间的距离会聚集在短距离[0, 1]中。这不是一个看到相关性衰减的大范围,也许你想尝试alpha = 10000

或者,如果你想留在alpha = 1,你需要让距离更加分散。试试x <- runif(n, 0, 100)。即使使用alpha = 1,衰减也非常快。

所以我们看到距离和alpha之间存在二元性。这也是为什么这种相关矩阵可以稳定地用于统计建模的原因。当估计alpha时,它可以适应距离,因此相关矩阵总是正定的。

示例:

f <- function (xi, xj, alpha) exp(- alpha * (xi - xj) ^ 2)

n <- 100

# large alpha, small distance
x <- runif(n, 0, 1)
A <- outer(x, x, f, alpha = 10000)
R <- chol(A)

# small alpha, large distance
x <- runif(n, 0, 100)
A <- outer(x, x, f, alpha = 1)
R <- chol(A)