Следующий воспроизводимый код генерирует 394 наблюдения из 183 случайных нормалей и пытается соотнести их с разложением Холецкого:
Генерировать параметры
d <- 211
l <- 183
m <- -0.006495094
vectorsd <- rep(0.29, 183)
Генерировать случайные нормали без корреляции
rnormd <- as.data.frame(rnorm(l, mean = m, sd = vectorsd))
for (i in 1:(d+l)) {
rnormd[,i] <- rnorm(l, mean = m, sd = vectorsd)
}
Генерация случайной полуопределенной положительной матрицы корреляций
v <- runif(183,0.6,0.8)
corr <- `diag<-`(tcrossprod(v),1)
Генерация матрицы холесского
cholesky <- chol(corr)
Корреляция нормалей и транспонирование выходных данных
rnormd <- t(t(rnormd)%*%cholesky)
В этой последней инструкции я получаю ошибку
Ошибка в rnormd * cholesky: несоответствующие массивы
Сначала возникла мысль, что проблема будет решена транспонированием моего матрица cholesky, но потом я понял, что chol()
функция уже транспонирует его.
Кто-нибудь может мне помочь?