Кількість даних, необхідних для оцінки параметрів багатоваріантного нормального розподілу з заданою точністю до заданої достовірності, не змінюється залежно від розміру, всі інші речі однакові. Таким чином, ви можете застосувати будь-яке велике правило для двох вимірів для задач з вищими розмірами без будь-яких змін.
Навіщо це робити? Існує лише три види параметрів: засоби, дисперсії та коваріації. Похибка оцінки в середньому залежить лише від дисперсії та кількості даних, . Таким чином, коли має багатоваріантний нормальний розподіл і мають відхилення , то оцінки залежать лише від та . Звідси, для досягнення достатньої точності при оцінці всіх , нам потрібно тільки враховувати обсяг даних , необхідних для , що має найбільший з( X 1 , X 2 , … , X d ) X i σ 2 i E [ X i ] σ i n E [ X i ] X i σ i d σ iн( X1, X2, … , Xг)Хiσ2iЕ [ Xi]σiнЕ [ Xi]Хiσi. Тому, коли ми розглядаємо послідовність задач оцінки для збільшення розмірів , все, що нам потрібно врахувати, - це на скільки збільшиться найбільший . Коли ці параметри обмежуються вище, ми робимо висновок, що кількість необхідних даних не залежить від розмірності.гσi
Аналогічні міркування стосуються оцінки дисперсій та коваріацій : якщо певна кількість даних є достатньою для оцінки однієї коваріації (або коефіцієнта кореляції) до потрібної точності, то - за умови, що базовий нормальний розподіл має аналогічний значення параметрів - стільки ж даних буде достатньо для оцінки будь-якого коефіцієнта коваріації чи кореляції. σ i jσ2iσi j
Щоб проілюструвати та надати емпіричну підтримку цього аргументу, давайте вивчимо деякі симуляції. Далі створюються параметри для багатонармального розподілу заданих розмірів, витягується багато незалежних, однаково розподілених наборів векторів із цього розподілу, оцінюються параметри кожного такого зразка та підсумовуються результати оцінок цих параметрів у перерахунку на (1) їх середні значення - продемонструвати, що вони є неупередженими (і код працює правильно - і (2) їх стандартні відхилення, які кількісно оцінюють точність оцінок. (Не плутайте ці стандартні відхилення, які кількісно визначають величину варіації серед оцінок, отриманих за кратні ітерації моделювання із стандартними відхиленнями, які використовуються для визначення базового багатонармального розподілу!dг зміни, за умови, що в міру зміни, ми не вводимо більші відхилення в базовий багатонармальний розподіл.г
Розміри дисперсій базового розподілу регулюються в цьому моделюванні, зробивши найбільше власне значення матриці коваріації рівним . Це утримує щільність "хмари" ймовірностей у межах меж, коли розмірність збільшується, незалежно від форми цієї хмари. Моделювання інших моделей поведінки системи в міру збільшення розмірності може бути створене просто шляхом зміни способу генерування власних значень; один приклад (з використанням розподілу Gamma) показаний коментованим у коді нижче.1R
Що ми шукаємо, це перевірити, що стандартні відхилення оцінок параметрів помітно не змінюються при зміні розмірності . Тому я показую результати для двох крайнощів, і , використовуючи однаковий обсяг даних ( ) в обох випадках. Примітно, що кількість параметрів, оцінених при , що дорівнює , Значно перевищує кількість векторів ( ) і перевищує навіть окремі числа ( ) у всьому наборі даних.d = 2 d = 60 30 d = 60 1890 30 30 ∗ 60 = 1800гг= 2г= 6030г= 601890 рік3030 ∗ 60 = 1800
Почнемо з двох вимірів, . Існує п’ять параметрів: дві дисперсії (при стандартних відхиленнях і у цій симуляції), коваріація (SD = ) і два засоби (SD = і ). При різних моделюваннях (які можна отримати шляхом зміни початкового значення випадкового насіння) вони дещо відрізнятимуться, але вони постійно будуть порівнянними розмірами, коли розмір вибірки . Наприклад, у наступному моделюванні SD-файли - , , , і0,097 0,182 0,112 0,11 0,15 n = 30 0,014 0,263 0,043 0,04 0,18г= 20,0970,1820,1260,110,15n = 300,0140,2630,0430,040,18відповідно: всі вони змінилися, але мають порівнянні порядки.
(Ці твердження можна теоретично підтримати, але суть у цьому полягає в чисто емпіричній демонстрації.)
Тепер переходимо до , зберігаючи розмір вибірки на . Зокрема, це означає, що кожен зразок складається з векторів, кожен з яких має компонентів. Замість того, щоб перерахувати всі стандартних відхилень, давайте просто розглянемо їх зображення, використовуючи гістограми, щоб зобразити їхні діапазони.n = 30 30 60 1890г= 60n = 3030601890 рік
Розсіювачі у верхньому рядку порівнюють фактичні параметри sigma
( ) та ( ) із середніми оцінками, зробленими під час ітерацій у цьому моделюванні. Сірі опорні лінії позначають місце ідеальної рівності: чітко оцінки працюють за призначенням і неупередженими.μ 10 4σmu
мк104
Гістограми відображаються в нижньому рядку, окремо для всіх записів в матриці коваріації (зліва) та для засобів (праворуч). СД окремих варіацій, як правило, лежить між і тоді як SD коваріацій між окремими компонентами лежать між і : саме в діапазоні, досягнутому при . Аналогічно, середні оцінки середньої оцінки лежать в межах від до , що можна порівняти з показниками, коли . Звичайно, немає ніяких ознак того, що SD збільшилися як0,12 0,04 0,08 d = 2 0,08 0,13 d = 2 d 2 600,080,120,040,08г= 20,080,13г= 2гподорожчала з до .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