La cantidad de datos necesarios para estimar los parámetros de una distribución Normal multivariada dentro de una precisión especificada a una confianza dada no varía con la dimensión, todas las demás cosas son iguales. Por lo tanto, puede aplicar cualquier regla general para dos dimensiones a problemas de dimensiones superiores sin ningún cambio en absoluto.
¿Por qué debería hacerlo? Solo hay tres tipos de parámetros: medias, variaciones y covarianzas. El error de estimación en una media depende solo de la varianza y la cantidad de datos, . Por lo tanto, cuando tiene una distribución Normal multivariada y tiene varianzas , entonces las estimaciones de dependen solo de y . Por lo tanto, para lograr una precisión adecuada en la estimación de todos los , solo necesitamos considerar la cantidad de datos necesarios para que tenga el mayor den(X1,X2,…,Xd)Xiσ2iE[Xi]σinE[Xi]Xiσi. Por lo tanto, cuando contemplamos una sucesión de problemas de estimación para aumentar las dimensiones , todo lo que tenemos que considerar es cuánto aumentará la más grande . Cuando estos parámetros están limitados anteriormente, concluimos que la cantidad de datos necesarios no depende de la dimensión.dσi
Consideraciones similares se aplican a la estimación de las varianzas y covarianzas : si una cierta cantidad de suficientes datos para estimar uno de covarianza (o coeficiente de correlación) a una precisión deseada, a continuación, - proporciona la distribución normal subyacente tiene similares valores de parámetros: la misma cantidad de datos será suficiente para estimar cualquier covarianza o coeficiente de correlación.σ2iσij
Para ilustrar y proporcionar soporte empírico para este argumento, estudiemos algunas simulaciones. Lo siguiente crea parámetros para una distribución multinormal de dimensiones especificadas, extrae muchos conjuntos independientes de vectores idénticamente distribuidos de esa distribución, estima los parámetros de cada muestra y resume los resultados de esas estimaciones de parámetros en términos de (1) sus promedios. -para demostrar que son imparciales (y el código funciona correctamente) y (2) sus desviaciones estándar, que cuantifican la precisión de las estimaciones. (No confunda estas desviaciones estándar, que cuantifican la cantidad de variación entre las estimaciones obtenidas en múltiples iteraciones de la simulación, con las desviaciones estándar utilizadas para definir la distribución multinormal subyacente!d cambia, siempre que cambie, no introducimos variaciones mayores en la distribución multinormal subyacente.d
Los tamaños de las variaciones de la distribución subyacente se controlan en esta simulación haciendo que el valor propio más grande de la matriz de covarianza sea igual a . Esto mantiene la densidad de probabilidad "nube" dentro de los límites a medida que aumenta la dimensión, sin importar cuál sea la forma de esta nube. Las simulaciones de otros modelos de comportamiento del sistema a medida que aumenta la dimensión se pueden crear simplemente cambiando la forma en que se generan los valores propios; un ejemplo (usando una distribución Gamma) se muestra comentado en el siguiente código.1R
Lo que estamos buscando es verificar que las desviaciones estándar de las estimaciones de los parámetros no cambien apreciablemente cuando se cambia la dimensión . Por lo tanto, muestran los resultados para dos extremos, y , utilizando la misma cantidad de datos ( ) en ambos casos. Es de destacar que el número de parámetros estimados cuando , igual a , supera con creces el número de vectores ( ) y excede incluso los números individuales ( ) en todo el conjunto de datos.dd=2d=6030d=6018903030∗60=1800
Comencemos con dos dimensiones, . Hay cinco parámetros: dos variaciones (con desviaciones estándar de y en esta simulación), una covarianza (SD = ) y dos medias (SD = y ). Con diferentes simulaciones (que se pueden obtener cambiando el valor inicial de la semilla aleatoria), éstas variarán un poco, pero serán consistentemente de un tamaño comparable cuando el tamaño de la muestra sea . Por ejemplo, en la siguiente simulación, las SD son , , , yd=20.0970.1820.1260.110.15n=300.0140.2630.0430.040.18, respectivamente: todos cambiaron pero son de órdenes de magnitud comparables.
(Estas afirmaciones pueden apoyarse teóricamente, pero el punto aquí es proporcionar una demostración puramente empírica).
Ahora nos movemos a , manteniendo el tamaño de la muestra en . Específicamente, esto significa que cada muestra consta de vectores, cada uno con componentes. En lugar de enumerar todas las desviaciones estándar de , solo veamos imágenes de ellas usando histogramas para representar sus rangos.d=60n=3030601890
Los diagramas de dispersión en la fila superior comparan los parámetros reales sigma
( ) y ( ) con las estimaciones promedio realizadas durante las iteraciones en esta simulación. Las líneas de referencia grises marcan el lugar de la igualdad perfecta: claramente las estimaciones funcionan según lo previsto y son imparciales.σmu
μ104
Los histogramas aparecen en la fila inferior, por separado para todas las entradas en la matriz de covarianza (izquierda) y para las medias (derecha). Las SD de las variaciones individuales tienden a estar entre y mientras que las SD de las covarianzas entre componentes separados tienden a estar entre y : exactamente en el rango alcanzado cuando . De manera similar, las DE de las estimaciones medias tienden a estar entre y , lo cual es comparable a lo que se vio cuando . Ciertamente, no hay indicios de que las SD hayan aumentado a medida que0.080.120.040.08d=20.080.13d=2dsubió de a .260
El código sigue.
#
# Create iid multivariate data and do it `n.iter` times.
#
sim <- function(n.data, mu, sigma, n.iter=1) {
#
# Returns arrays of parmeter estimates (distinguished by the last index).
#
library(MASS) #mvrnorm()
x <- mvrnorm(n.iter * n.data, mu, sigma)
s <- array(sapply(1:n.iter, function(i) cov(x[(n.data*(i-1)+1):(n.data*i),])),
dim=c(n.dim, n.dim, n.iter))
m <-array(sapply(1:n.iter, function(i) colMeans(x[(n.data*(i-1)+1):(n.data*i),])),
dim=c(n.dim, n.iter))
return(list(m=m, s=s))
}
#
# Control the study.
#
set.seed(17)
n.dim <- 60
n.data <- 30 # Amount of data per iteration
n.iter <- 10^4 # Number of iterations
#n.parms <- choose(n.dim+2, 2) - 1
#
# Create a random mean vector.
#
mu <- rnorm(n.dim)
#
# Create a random covariance matrix.
#
#eigenvalues <- rgamma(n.dim, 1)
eigenvalues <- exp(-seq(from=0, to=3, length.out=n.dim)) # For comparability
u <- svd(matrix(rnorm(n.dim^2), n.dim))$u
sigma <- u %*% diag(eigenvalues) %*% t(u)
#
# Perform the simulation.
# (Timing is about 5 seconds for n.dim=60, n.data=30, and n.iter=10000.)
#
system.time(sim.data <- sim(n.data, mu, sigma, n.iter))
#
# Optional: plot the simulation results.
#
if (n.dim <= 6) {
par(mfcol=c(n.dim, n.dim+1))
tmp <- apply(sim.data$s, 1:2, hist)
tmp <- apply(sim.data$m, 1, hist)
}
#
# Compare the mean simulation results to the parameters.
#
par(mfrow=c(2,2))
plot(sigma, apply(sim.data$s, 1:2, mean), main="Average covariances")
abline(c(0,1), col="Gray")
plot(mu, apply(sim.data$m, 1, mean), main="Average means")
abline(c(0,1), col="Gray")
#
# Quantify the variability.
#
i <- lower.tri(matrix(1, n.dim, n.dim), diag=TRUE)
hist(sd.cov <- apply(sim.data$s, 1:2, sd)[i], main="SD covariances")
hist(sd.mean <- apply(sim.data$m, 1, sd), main="SD means")
#
# Display the simulation standard deviations for inspection.
#
sd.cov
sd.mean