Me temo que esto no es cierto en general. Un contraejemplo es dado por emular un ejemplo de no-normal bivariante de distribución cuya marginales son normales: borrar toda probabilidad de (por ejemplo) el segundo y cuarto cuadrantes, como se muestra en la parte superior derecha ejemplo de Cardenal de la respuesta.
Extenderla en el caso de $M=2,K=3$ en una manera similar: comienzo con un estándar de trivariate distribución Normal, borrar toda probabilidad en los octantes donde un número impar de $X_1,X_2,X_3$ son negativos. (Dilip Sarwate proporciona los detalles en esta respuesta desde hace varios años.)
Este R
ejemplo se muestra cómo generar datos a partir de esta distribución.
n <- 1e4 # Approximately twice the desired sample size
K <- 3 # Must be 3 or greater
Y <- matrix(rnorm(K*n), n, dimnames=list(NULL, paste0("X.", 1:K)))
X <- Y[rowSums(Y >= 0) %% 2 == 0, ]
La última línea elimina todos los vectores en los que un número impar de los componentes son negativos.
Una imagen debe convencer de que esto funciona (y va a dar lugar fácilmente a una rigurosa demostración de que los tres $M$-variable marginales son Normal estándar). Aquí está un diagrama de dispersión de la matriz:
pairs(X, pch=16, col="#00000003")
Sin embargo, esto no es $K$-variable normal, debido a que la variable se determinó por recuento de los componentes positivos no tienen un Binomio$(1/2,3)$ distribución de:
table(rowSums(X >= 0))
0 2
1235 3778
Este enfoque no es especial para el caso de $K=3,M=2:$ se generaliza a todos los $M$ e $K.$ me quieren convencer a todos los multivariante marginales siendo Normal, tal vez mediante la simulación de datos que el anterior. El desafío de la simulación es realizar un adecuado test de normalidad multivariante en todos los márgenes. Es una manera de comprobar que el azar de las combinaciones lineales son Normales.
Para $K=4,$ he realizado la prueba con 500 azar combinaciones lineales para cada multivariante marginal, mediante una prueba de chi-cuadrado basado en el agrupamiento de los resultados en 20 de cuantiles de la distribución Normal estándar. Para la comparación, yo hice lo mismo con una muestra de una multivariante distribución Normal estándar del mismo tamaño. Para comparar los resultados, aquí están los histogramas de la chi-cuadrado p-valores. La columna de las etiquetas de las columnas de la determinación de las distribuciones marginales. El "falso" Normal multivariante se trazan a lo largo de la fila superior, mientras que el de referencia ("real") Normal multivariante se trazan a lo largo de la fila inferior.
Esperamos que estos histogramas aproximadamente uniforme para una verdaderamente $K$-variable de la distribución Normal. Se apartan de esta un poco porque las combinaciones lineales no son independientes unos de otros. Sin embargo, al comparar las frecuencias de menor p-valores en cada columna, pero la última, es muy claro que de acuerdo a estas pruebas el "falso" $K$-variable de distribución se ve tan Normal para todos los $M$-variable marginales. Debido a que la frecuencia de los bajos valores de p es mucho mayor para $K=M$ (columna de la derecha) no se parece en nada a lo $K$-variable Normal, aunque todos los $M$-variable marginales para $2\le M \lt K$ hacer aparecer Normal.
Para aquellos a quienes les gusta experimentar, aquí está la completa R
código utilizado para generar los ejemplos y figuras.
set.seed(17)
n <- 1e4
K <- 3 # Must be 3 or greater
Y <- matrix(rnorm(K*n), n, dimnames=list(NULL, paste0("X.", 1:K)))
X <- Y[rowSums(Y >= 0) %% 2 == 0, ]
Y <- Y[1:nrow(X), ]
Y <- Y * matrix(sample.int(2, length(Y), replace=TRUE)*2 - 3, ncol=K)
pairs(X, pch=16, col="#00000003")
table(rowSums(X >= 0)) # "Fake" multivariate normal distribution
table(rowSums(Y >= 0)) # "Real" MVN distribution
#
# To verify M-variate Normality, study all M-subsets of {1,2,...,K} for
# normality. A quick check is to take random linear combinations and test
# them for normality.
#
cutpoints <- qnorm(cutpoints.p <- seq(0, 1, by=0.05))
combine <- function(l) if("list" %in% class(l)) do.call("rbind", l) else l
n.tests <- 500
models <- list(`Non-normal`=X, Normal=Y)
df <- combine(lapply(names(models), function(Z.name) {
Z <- models[[Z.name]]
combine(lapply(2:K, function(M) {
combine(apply(combn(K, M), 2, function(j) {
Margin <- Z[, j]
p <- sapply(1:n.tests, function(i) {
y <- rnorm(M)
z <- Margin %*% (y / sqrt(sum(y^2)))
chisq.test(table(cut(z, cutpoints)))$p.value
})
data.frame(p=p, Model=Z.name, Dimension=M, Margins=paste(j, collapse=","))
}))
}))
}))
#
# Plot histograms of the p-values.
#
library(ggplot2)
ggplot(df, aes(p)) +
geom_histogram(aes(fill=Margins), show.legend=FALSE, binwidth=0.05, boundary=0) +
facet_grid(Model ~ Margins)