Алгебра позади MVRNorm в пакете MASS - PullRequest
0 голосов
/ 20 февраля 2019

Вот код:

function (n = 1, mu, Sigma, tol = 1e-06, empirical = FALSE, EISPACK = FALSE) 
{
    p <- length(mu)
    if (!all(dim(Sigma) == c(p, p))) 
        stop("incompatible arguments")
    if (EISPACK) 
        stop("'EISPACK' is no longer supported by R", domain = NA)
    eS <- eigen(Sigma, symmetric = TRUE)
    ev <- eS$values
    if (!all(ev >= -tol * abs(ev[1L]))) 
        stop("'Sigma' is not positive definite")
    X <- matrix(rnorm(p * n), n)
    if (empirical) {
        X <- scale(X, TRUE, FALSE)
        X <- X %*% svd(X, nu = 0)$v
        X <- scale(X, FALSE, TRUE)
    }
    X <- drop(mu) + eS$vectors %*% diag(sqrt(pmax(ev, 0)), p) %*% 
        t(X)
    nm <- names(mu)
    if (is.null(nm) && !is.null(dn <- dimnames(Sigma))) 
        nm <- dn[[1L]]
    dimnames(X) <- list(nm, NULL)
    if (n == 1) 
        drop(X)
    else t(X)
}

Строка, которая мне интересна, такова:

 x <- eS$vectors %*% diag(sqrt(ev)) %*% t(x) # ignoring drop(mu)
 ...
 t(x)

Почему

X ^ T =UVZ ^ T, где Z - стандартизированный MVN?

Я думал, что это будет X = UVZ, где X ~ MVN (0, UV (I) (UV) ^ T) = MVN (0,Сигма)?

В ответ на ответ Сион Тхе Гоха:

Я могу видеть алгебру, и она работает только так, просто рассматривая измерения, но весь акттранспонирование всего кажется странным, учитывая свойства многовариантной нормали.То есть X = UVZ

Я провел некоторое рецензирование и обнаружил, что на самом деле это Matrix Normal , и аффинное преобразование там работает аналогичным образом.То есть X = Z (UV) ^ T.

Я не уверен, есть ли что-то глупое, что мне не хватает в понимании этого или я упускаю картину полностью, почему все транспонированов отношении, скажем, аффинного преобразования Википедии MVN

1 Ответ

0 голосов
/ 20 февраля 2019

U - собственный вектор сигмы.Это Sigma = UV ^ 2 U ^ T, где V - диагональная матрица.

Давайте вычислим ковариационную матрицу E [X ^ TX] и посмотрим, равна ли она сигме, где X = UVZ ^ T иZ ^ T удовлетворяют E [Z ^ TZ] = I, единичная матрица.

Имеется

E [X ^ TX] = E [UVZ ^ TZVU ^ T] = UVE [Z ^ TZ] VU ^ T = UV ^ 2U ^ T = сигма

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...