Jumlah data yang diperlukan untuk memperkirakan parameter dari distribusi Normal multivariat ke dalam akurasi yang ditentukan untuk kepercayaan yang diberikan tidak berbeda dengan dimensi, semua hal lainnya sama. Karenanya, Anda dapat menerapkan aturan praktis apa pun untuk dua dimensi pada masalah dimensi yang lebih tinggi tanpa perubahan apa pun.
Kenapa harus begitu? Hanya ada tiga jenis parameter: mean, varians, dan covariances. Kesalahan estimasi dalam rata-rata hanya bergantung pada varians dan jumlah data, . Jadi, ketika memiliki distribusi Normal multivariat dan memiliki varian , maka perkiraan hanya bergantung pada dan . Dari mana, untuk mencapai akurasi yang memadai dalam memperkirakan semua yang , kita hanya perlu mempertimbangkan jumlah data yang dibutuhkan untuk memiliki terbesar dari( 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. Karena itu, ketika kita merenungkan suksesi masalah estimasi untuk meningkatkan dimensi , yang perlu kita perhatikan adalah berapa banyak terbesar akan meningkat. Ketika parameter ini dibatasi di atas, kami menyimpulkan bahwa jumlah data yang dibutuhkan tidak tergantung pada dimensi.dσi
Pertimbangan serupa berlaku untuk memperkirakan varians dan covariances : jika sejumlah data cukup untuk memperkirakan satu kovarians (atau koefisien korelasi) dengan akurasi yang diinginkan, maka - asalkan distribusi normal yang mendasarinya memiliki kesamaan nilai parameter - jumlah data yang sama akan cukup untuk memperkirakan setiap kovarian atau koefisien korelasi. σ i jσ2iσij
Untuk mengilustrasikan, dan memberikan dukungan empiris untuk argumen ini, mari kita pelajari beberapa simulasi. Berikut ini menciptakan parameter untuk distribusi multinormal dimensi tertentu, menarik banyak set vektor independen, terdistribusi secara identik dari distribusi itu, memperkirakan parameter dari masing-masing sampel tersebut, dan merangkum hasil estimasi parameter tersebut dalam hal (1) rata-rata- -untuk menunjukkan bahwa mereka tidak bias (dan kodenya bekerja dengan benar - dan (2) standar deviasi mereka, yang mengukur keakuratan estimasi. iterasi simulasi, dengan standar deviasi yang digunakan untuk menentukan distribusi multinormal yang mendasarinya!dd perubahan, asalkan sebagai perubahan, kita tidak memperkenalkan lebih besar varians ke dalam distribusi multinormal mendasari itu sendiri.d
Ukuran varian distribusi yang mendasarinya dikendalikan dalam simulasi ini dengan membuat nilai eigen terbesar dari matriks kovarians sama dengan . Ini menjaga kerapatan probabilitas "awan" dalam batas seiring dengan meningkatnya dimensi, tidak peduli apa pun bentuk awan ini. Simulasi model perilaku sistem lainnya ketika dimensi meningkat dapat dibuat hanya dengan mengubah cara nilai eigen dihasilkan; satu contoh (menggunakan distribusi Gamma) ditunjukkan dikomentari dalam kode di bawah ini.1R
Yang kami cari adalah memverifikasi bahwa standar deviasi estimasi parameter tidak berubah ketika dimensi berubah. Karena itu saya menunjukkan hasil untuk dua ekstrem, dan , menggunakan jumlah data yang sama ( ) dalam kedua kasus. Perlu dicatat bahwa jumlah parameter diperkirakan ketika , sama dengan , jauh melebihi jumlah vektor ( ) dan bahkan melebihi angka individu ( ) di seluruh dataset.d = 2 d = 60 30 d = 60 1890 30 30 ∗ 60 = 1800dd=2d=6030d=6018903030∗60=1800
Mari kita mulai dengan dua dimensi, . Ada lima parameter: dua varians (dengan standar deviasi dan dalam simulasi ini), sebuah kovarians (SD = ), dan dua rata-rata (SD = dan ). Dengan simulasi yang berbeda (dapat diperoleh dengan mengubah nilai awal dari benih acak) ini akan sedikit bervariasi, tetapi mereka akan secara konsisten memiliki ukuran yang sebanding ketika ukuran sampel . Misalnya, dalam simulasi berikutnya SD adalah , , , , dan0,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, masing-masing: mereka semua berubah tetapi urutan besarnya sebanding.
(Pernyataan-pernyataan ini dapat didukung secara teoritis tetapi intinya di sini adalah untuk memberikan demonstrasi yang murni empiris.)
Sekarang kita beralih ke , menjaga ukuran sampel pada . Secara khusus, ini berarti setiap sampel terdiri dari vektor, masing-masing memiliki komponen. Daripada mendaftar semua standar deviasi, mari kita lihat gambar mereka menggunakan histogram untuk menggambarkan rentang mereka.n = 30 30 60 1890d=60n=3030601890
Plot sebar di baris atas membandingkan parameter aktual sigma
( ) dan ( ) dengan perkiraan rata-rata yang dibuat selama iterasi dalam simulasi ini. Garis referensi abu-abu menandai lokus kesetaraan sempurna: jelas perkiraan berfungsi sebagaimana dimaksud dan tidak bias.μ 10 4σmu
μ104
Histogram muncul di baris bawah, secara terpisah untuk semua entri dalam matriks kovarians (kiri) dan untuk sarana (kanan). SD dari masing-masing varian cenderung terletak antara dan sedangkan SD kovarian antara komponen yang terpisah cenderung berada di antara dan : tepat dalam kisaran yang dicapai ketika . Demikian pula, SD dari estimasi rata-rata cenderung terletak antara dan , yang sebanding dengan apa yang terlihat ketika . Tentu saja tidak ada indikasi bahwa SD telah meningkat sebagai0.080.120.040.08d=20.080.13d=2dnaik dari menjadi .260
Kode berikut.
#
# 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