R中随机指数相关矩阵的Cholesky分解
Cholesky Decomposition of a random exponential correlation matrix in R
我有一组使用以下代码创建的指数相关矩阵。
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 分解。但其中许多是负定的。我该如何解决这个问题?
空间或时间建模中使用的指数相关矩阵,有一个控制衰减速度的因子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)
尝试用它来构造正负矩阵
A<-matrix(runif(n^2),n,n)
dim(A)
A<-A%*%t(A)
chol(A)
我有一组使用以下代码创建的指数相关矩阵。
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 分解。但其中许多是负定的。我该如何解决这个问题?
空间或时间建模中使用的指数相关矩阵,有一个控制衰减速度的因子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)
尝试用它来构造正负矩阵
A<-matrix(runif(n^2),n,n)
dim(A)
A<-A%*%t(A)
chol(A)