La quantité de données nécessaires pour estimer les paramètres d'une distribution normale multivariée avec une précision spécifiée à une confiance donnée ne varie pas avec la dimension, toutes les autres choses étant les mêmes. Par conséquent, vous pouvez appliquer n'importe quelle règle empirique pour deux dimensions à des problèmes de dimension supérieure sans aucun changement.
Pourquoi cela? Il n'y a que trois types de paramètres: les moyennes, les variances et les covariances. L'erreur d'estimation dans une moyenne ne dépend que de la variance et de la quantité de données, . Ainsi, lorsque a une distribution normale multivariée et que les ont des variances , alors les estimations de ne dépendent que des et . D'où, pour obtenir une précision adéquate dans l'estimation de tous les , il suffit de considérer la quantité de données nécessaires pour que les ayant le plus grand des( X 1 , X 2 , … , X d ) X i σ 2 i E [ X i ] σ i n E [ X i ] X i σ i d σ in(X1,X2,…,Xd)Xiσ2iE[Xi]σinE[Xi]Xiσi. Par conséquent, lorsque nous envisageons une succession de problèmes d'estimation pour des dimensions croissantes , tout ce que nous devons considérer est de savoir combien le plus grand augmentera. Lorsque ces paramètres sont limités ci-dessus, nous concluons que la quantité de données nécessaires ne dépend pas de la dimension.dσi
Des considérations similaires s'appliquent à l'estimation des variances et des covariances : si une certaine quantité de données suffit pour estimer une covariance (ou coefficient de corrélation) avec la précision souhaitée, alors - à condition que la distribution normale sous-jacente ait une similitude valeurs des paramètres - la même quantité de données suffira pour estimer toute covariance ou coefficient de corrélation. σ i jσ2iσij
Pour illustrer et fournir un support empirique à cet argument, étudions quelques simulations. Ce qui suit crée des paramètres pour une distribution multinormale de dimensions spécifiées, tire de nombreux ensembles de vecteurs indépendants et identiques à partir de cette distribution, estime les paramètres de chacun de ces échantillons et résume les résultats de ces estimations de paramètres en termes de (1) leurs moyennes - -pour démontrer qu'ils ne sont pas biaisés (et le code fonctionne correctement - et (2) leurs écarts-types, qui quantifient la précision des estimations. (Ne pas confondre ces écarts-types, qui quantifient la quantité de variation entre les estimations obtenues sur plusieurs itérations de la simulation, avec les écarts-types utilisés pour définir la distribution multinormale sous-jacente!d change, à condition que change, nous n'introduisons pas de plus grandes variances dans la distribution multinormale sous-jacente elle-même.d
Les tailles des variances de la distribution sous-jacente sont contrôlées dans cette simulation en faisant la plus grande valeur propre de la matrice de covariance égale à . Cela maintient la densité de probabilité "nuage" dans les limites à mesure que la dimension augmente, quelle que soit la forme de ce nuage. Des simulations d'autres modèles de comportement du système à mesure que la dimension augmente peuvent être créées simplement en changeant la façon dont les valeurs propres sont générées; un exemple (utilisant une distribution Gamma) est montré commenté dans le code ci-dessous.1R
Ce que nous recherchons, c'est de vérifier que les écarts-types des estimations de paramètres ne changent pas sensiblement lorsque la dimension est modifiée. Je montre donc les résultats pour deux extrêmes, et , en utilisant la même quantité de données ( ) dans les deux cas. Il est à noter que le nombre de paramètres estimés lorsque , égal à , dépasse de loin le nombre de vecteurs ( ) et dépasse même les nombres individuels ( ) dans l'ensemble de données.d = 2 d = 60 30 d = 60 1890 30 30 ∗ 60 = 1800dd=2d=6030d=6018903030∗60=1800
Commençons par deux dimensions, . Il y a cinq paramètres: deux variances (avec des écarts types de et dans cette simulation), une covariance (SD = ) et deux moyennes (SD = et ). Avec différentes simulations (pouvant être obtenues en changeant la valeur de départ de la graine aléatoire), celles-ci varieront un peu, mais elles seront toujours de taille comparable lorsque la taille de l'échantillon est . Par exemple, dans la prochaine simulation, les écarts-types sont , , , et0,097 0,182 0,126 0,11 0,15 n = 30 0,014 0,263 0,043 0,04 0,18d=20.0970.1820.1260.110.15n=300.0140.2630.0430.040.18, respectivement: ils ont tous changé mais sont d'un ordre de grandeur comparable.
(Ces déclarations peuvent être étayées théoriquement, mais il s'agit ici de fournir une démonstration purement empirique.)
Passons maintenant à , en maintenant la taille de l'échantillon à . Plus précisément, cela signifie que chaque échantillon se compose de vecteurs, chacun ayant composants. Plutôt que d'énumérer tous les écarts-types de , regardons simplement leurs photos à l'aide d'histogrammes pour représenter leurs plages.n = 30 30 60 1890d=60n=3030601890
Les diagrammes de dispersion dans la rangée supérieure comparent les paramètres réels sigma
( ) et ( ) aux estimations moyennes faites au cours des itérations de cette simulation. Les lignes de référence grises indiquent le lieu de l'égalité parfaite: il est clair que les estimations fonctionnent comme prévu et ne sont pas biaisées.μ 10 4σmu
μdix4
Les histogrammes apparaissent dans la ligne du bas, séparément pour toutes les entrées de la matrice de covariance (à gauche) et pour les moyennes (à droite). Les écarts-type des variances individuelles ont tendance à se situer entre et tandis que les écarts-types des covariances entre les composants séparés ont tendance à se situer entre et : exactement dans la plage atteinte lorsque . De même, les écarts-types des estimations moyennes ont tendance à se situer entre et , ce qui est comparable à ce qui a été observé lorsque . Certes, il n'y a aucune indication que les SD ont augmenté en tant que0,12 0,04 0,08 d = 2 0,08 0,13 d = 2 d 2 600,080,120,040,08d=20.080.13d=2dest passé de à .260
Le code suit.
#
# 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