Ich verwende den folgenden Code zu erstellen:effizientere Art und Weise ein spezifische Bandmatrix
var <- c(rep(4,4),rep(9,5))
cov <- diag(var)
n <- length(var)
rho <- 0.2
for(i in 1:(n-1)){
for(j in (i+1):n){
if (j <= i + 4) cov[i,j] <- rho/(j-i)* sqrt(var[i] * var[j])
}
}
So erstellen Sie diesen gewünschten Matrixausgang:
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
[1,] 4 0.8 0.4 0.2666667 0.3 0.0 0.0 0.0 0.00
[2,] 0 4.0 0.8 0.4000000 0.4 0.3 0.0 0.0 0.00
[3,] 0 0.0 4.0 0.8000000 0.6 0.4 0.3 0.0 0.00
[4,] 0 0.0 0.0 4.0000000 1.2 0.6 0.4 0.3 0.00
[5,] 0 0.0 0.0 0.0000000 9.0 1.8 0.9 0.6 0.45
[6,] 0 0.0 0.0 0.0000000 0.0 9.0 1.8 0.9 0.60
[7,] 0 0.0 0.0 0.0000000 0.0 0.0 9.0 1.8 0.90
[8,] 0 0.0 0.0 0.0000000 0.0 0.0 0.0 9.0 1.80
[9,] 0 0.0 0.0 0.0000000 0.0 0.0 0.0 0.0 9.00
Allerdings ist dieser Code zu langsam, um den Fall zu berechnen von großem n. Haben Sie effiziente Lösungen?