Объем данных, необходимых для оценки параметров многомерного нормального распределения с точностью до заданной точности с заданной достоверностью, не зависит от измерения, при прочих равных условиях. Поэтому вы можете применять любое эмпирическое правило для двух измерений к задачам более высокого измерения без каких-либо изменений.
Зачем это? Есть только три вида параметров: среднее, дисперсии и ковариации. Ошибка оценки в среднем зависит только от дисперсии и количества данных, . Таким образом, когда имеет многомерное нормальное распределение, а имеют дисперсии , тогда оценки зависят только от и . Отсюда, для достижения достаточной точности при оценке всех , нам нужно только учитывать объем данных , необходимых для , имеющего самый большой из( 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, Поэтому, когда мы рассматриваем последовательность задач оценки для увеличивающихся измерений , все, что нам нужно учитывать, это то, насколько увеличится наибольшее значение . Когда эти параметры ограничены выше, мы заключаем, что объем необходимых данных не зависит от измерения.dσi
Аналогичные соображения применимы к оценке дисперсий и ковариаций : если определенного количества данных достаточно для оценки одной ковариации (или коэффициента корреляции) с требуемой точностью, то - при условии, что базовое нормальное распределение имеет аналогичные значения параметров - того же объема данных будет достаточно для оценки любой ковариации или коэффициента корреляции. σ i jσ2iσij
Чтобы проиллюстрировать и обеспечить эмпирическую поддержку этого аргумента, давайте изучим некоторые симуляции. Следующее создает параметры для мультинормального распределения заданных измерений, рисует множество независимых идентично распределенных наборов векторов из этого распределения, оценивает параметры для каждого такого образца и суммирует результаты этих оценок параметров в терминах (1) их средних значений: - чтобы продемонстрировать, что они несмещены (и код работает правильно), и (2) их стандартные отклонения, которые количественно определяют точность оценок. (Не путайте эти стандартные отклонения, которые количественно определяют степень вариации среди оценок, полученных за несколько раз итерации симуляции со стандартными отклонениями, используемыми для определения основного мультинормального распределения!дdИзменения , при условии, что при изменении мы не вносим больших отклонений в само базовое мультинормальное распределение.d
Размеры дисперсий базового распределения контролируются в этом моделировании, делая наибольшее собственное значение ковариационной матрицы равным . Это сохраняет плотность вероятности «облаком» в пределах границ при увеличении размера, независимо от того, какой может быть форма этого облака. Моделирование других моделей поведения системы при увеличении размера может быть создано просто путем изменения способа генерации собственных значений; один пример (с использованием гамма-распределения) показан закомментированным в приведенном ниже коде.1R
То, что мы ищем, это чтобы убедиться, что стандартные отклонения оценок параметров не меняются заметно при изменении размера . Поэтому я показываю результаты для двух крайностей, и , используя одинаковое количество данных ( ) в обоих случаях. Следует отметить, что число параметров, оцениваемых при , равном , намного превышает количество векторов ( ) и даже превышает отдельные числа ( ) во всем наборе данных.d = 2 d = 60 30 d = 60 1890 30 30 * 60 = 1800dd=2d=6030d=6018903030∗60=1800
Начнем с двух измерений: . Существует пять параметров: две дисперсии (со стандартными отклонениями и в этом моделировании), ковариация (SD = ) и два средних (SD = и ). При различных имитациях (которые можно получить путем изменения начального значения случайного начального числа) они будут немного отличаться, но они будут постоянно иметь сопоставимый размер, когда размер выборки равен . Например, в следующем моделировании значения SD составляют , , , и0,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соответственно: все они изменились, но имеют сравнимые порядки.
(Эти утверждения могут быть поддержаны теоретически, но суть здесь в том, чтобы предоставить чисто эмпирическую демонстрацию.)
Теперь мы переходим к , сохраняя размер выборки при . В частности, это означает, что каждый образец состоит из векторов, каждый из которых имеет компонентов. Вместо того чтобы перечислять все стандартные отклонения , давайте просто посмотрим на их изображения с использованием гистограмм, чтобы изобразить их диапазоны.n = 30 30 60 1890d=60n=3030601890
Диаграммы рассеяния в верхнем ряду сравнивают фактические параметры sigma
( ) и ( ) со средними оценками, сделанными в течение итераций в этом моделировании. Серые контрольные линии обозначают место идеального равенства: оценки явно работают так, как задумано, и являются непредвзятыми.μ 10 4σmu
μ104
Гистограммы отображаются в нижнем ряду, отдельно для всех записей в ковариационной матрице (слева) и для средних (справа). SD отдельных вариаций имеют тенденцию находиться между и то время как SD ковариаций между отдельными компонентами имеют тенденцию находиться между и : точно в диапазоне, достигнутом, когда . Аналогично, SD средних оценок имеют тенденцию находиться между и , что сравнимо с тем, что наблюдалось при . Конечно , нет никаких признаков того, что СД уже увеличился , как0,12 0,04 0,080.080.120.040.08d=20.080.13d=2dподнялся с до .260
Код следует.
#
# 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