จำนวนข้อมูลที่ต้องใช้ในการประมาณค่าพารามิเตอร์ของการแจกแจงหลายตัวแปรปกติภายในความถูกต้องที่ระบุไว้กับความเชื่อมั่นที่กำหนดไม่แตกต่างกันไปตามมิติสิ่งอื่น ๆ ทั้งหมดก็เหมือนกัน ดังนั้นคุณอาจใช้กฎง่ายๆสำหรับสองมิติกับปัญหามิติที่สูงขึ้นโดยไม่มีการเปลี่ยนแปลงเลย
ทำไมจึงเป็นเช่นนั้น? มีพารามิเตอร์สามชนิดเท่านั้น: หมายถึงความแปรปรวนและความแปรปรวนร่วม n ดังนั้นเมื่อมีการแจกแจงปกติหลายตัวแปรและมีความแปรปรวนดังนั้นการประมาณของและขึ้นอยู่กับและเท่านั้น ดังนั้นเพื่อให้เกิดความถูกต้องเพียงพอในการประมาณทั้งหมด , เราจะต้องพิจารณาจำนวนของข้อมูลที่จำเป็นสำหรับการมีที่ใหญ่ที่สุดของ( 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
ข้อพิจารณาที่คล้ายกันนำไปใช้กับการประมาณค่าความแปรปรวนและ covariances : ถ้าจำนวนข้อมูลเพียงพอสำหรับการประมาณหนึ่งความแปรปรวนร่วม (หรือสัมประสิทธิ์สหสัมพันธ์) กับความถูกต้องที่ต้องการ ค่าพารามิเตอร์ - จำนวนเดียวกันของข้อมูลที่จะพอเพียงสำหรับการประเมินใด ๆแปรปรวนหรือค่าสัมประสิทธิ์สหสัมพันธ์ σ ฉันเจσ2iσij
เพื่อแสดงและให้การสนับสนุนเชิงประจักษ์สำหรับการโต้แย้งนี้มาศึกษาแบบจำลองบางอย่าง ต่อไปนี้สร้างพารามิเตอร์สำหรับการแจกแจงแบบพหุคูณของมิติข้อมูลที่ระบุดึงชุดเวกเตอร์ที่กระจายแบบอิสระจำนวนมากจากการแจกแจงนั้นประมาณค่าพารามิเตอร์จากตัวอย่างแต่ละตัวอย่างและสรุปผลลัพธ์ของการประมาณพารามิเตอร์เหล่านั้นในแง่ของ (1) ค่าเฉลี่ย - - เพื่อแสดงให้เห็นว่าพวกเขาไม่มีอคติ (และรหัสทำงานอย่างถูกต้อง - และ (2) ส่วนเบี่ยงเบนมาตรฐานของพวกเขาซึ่งวัดปริมาณความถูกต้องของการประมาณการ (อย่าสับสนระหว่างค่าเบี่ยงเบนมาตรฐานเหล่านี้ การวนซ้ำของการจำลองโดยใช้ค่าเบี่ยงเบนมาตรฐานเพื่อกำหนดการแจกแจงพหุคูณพื้นฐาน!ddการเปลี่ยนแปลงโดยมีเงื่อนไขว่าการเปลี่ยนแปลงเราไม่แนะนำความแปรปรวนขนาดใหญ่ในการแจกแจงพหุคูณพื้นฐานd
ขนาดของผลต่างของการกระจายต้นแบบจะถูกควบคุมในการจำลองนี้โดยการทำให้ค่าเฉพาะที่ใหญ่ที่สุดของความแปรปรวนเมทริกซ์เท่ากับ1สิ่งนี้จะช่วยรักษาความหนาแน่นของความน่าจะเป็น "เมฆ" ภายในขอบเขตเมื่อมิติเพิ่มขึ้นไม่ว่ารูปร่างของคลาวด์นี้จะเป็นอย่างไร การจำลองพฤติกรรมของระบบในแบบจำลองอื่น ๆ เมื่อขนาดเพิ่มขึ้นสามารถสร้างขึ้นได้ง่ายๆโดยการเปลี่ยนวิธีการสร้างค่าลักษณะเฉพาะ ตัวอย่างหนึ่ง (โดยใช้การแจกแจงแกมมา) จะแสดงความคิดเห็นในรหัสด้านล่าง1R
สิ่งที่เรากำลังมองหาคือการตรวจสอบว่าค่าเบี่ยงเบนมาตรฐานของการประมาณการพารามิเตอร์ไม่เปลี่ยนแปลงเมื่อประเมินมิติมีการเปลี่ยนแปลง ดังนั้นผมจึงแสดงผลสำหรับสองขั้ว,และ , ใช้จำนวนเงินเดียวกันของข้อมูล ( ) ในทั้งสองกรณี เป็นที่น่าสังเกตว่าจำนวนของพารามิเตอร์ที่ประเมินเมื่อเท่ากับนั้นสูงกว่าจำนวนของเวกเตอร์ ( ) และสูงกว่าแม้แต่ตัวเลขแต่ละตัว ( ) ในชุดข้อมูลทั้งหมดd = 2 d = 60 30 d = 60 1890 30 30 ∗ 60 = 1800dd=2d=6030d=6018903030∗60=1800
ขอเริ่มต้นด้วยสองมิติ, 2 มีห้าพารามิเตอร์: สองตัวแปร (พร้อมค่าเบี่ยงเบนมาตรฐานและในการจำลองนี้), ความแปรปรวนร่วม (SD = ) และสองวิธี (SD =และ ) ด้วยการจำลองสถานการณ์ที่แตกต่างกัน (หาได้โดยการเปลี่ยนค่าเริ่มต้นของเมล็ดสุ่ม) เหล่านี้จะแตกต่างกันเล็กน้อย แต่พวกเขาอย่างสม่ำเสมอจะมีขนาดใกล้เคียงเมื่อขนาดตัวอย่างnตัวอย่างเช่นในการจำลองครั้งถัดไป SDs มีค่า , , ,และ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โดยเฉพาะนี่หมายความว่าแต่ละตัวอย่างประกอบด้วยเวกเตอร์แต่ละอันมีส่วนประกอบตัว แทนที่จะแสดงค่าเบี่ยงเบนมาตรฐานทั้งหมดลองดูรูปของพวกมันโดยใช้ฮิสโตแกรมเพื่อแสดงช่วงของพวกมันn = 30 30 60 1890d=60n=3030601890
Scatterplots ในแถวบนสุดเปรียบเทียบพารามิเตอร์จริงsigma
( ) และ( ) กับค่าเฉลี่ยโดยประมาณในระหว่างการทำซ้ำในการจำลองนี้ เส้นอ้างอิงสีเทาทำเครื่องหมายตำแหน่งของความเท่าเทียมกันที่สมบูรณ์แบบ: การประมาณกำลังทำงานอย่างชัดเจนและเป็นกลางμ 10 4σmu
μ104
ฮิสโทแกรมปรากฏในแถวด้านล่างแยกต่างหากสำหรับรายการทั้งหมดในเมทริกซ์ความแปรปรวนร่วม (ซ้าย) และสำหรับวิธี (ขวา) เอกสารความปลอดภัยของบุคคลที่แปรปรวนมีแนวโน้มที่จะอยู่ระหว่างและในขณะที่ SDS ของcovariancesระหว่างแยกส่วนประกอบมีแนวโน้มที่จะอยู่ระหว่างและ : ว่าในช่วงที่ประสบความสำเร็จเมื่อ 2 ในทำนองเดียวกัน SDS ของประมาณการเฉลี่ยมีแนวโน้มที่จะอยู่ระหว่างและซึ่งเทียบได้กับสิ่งที่ถูกมองเมื่อ 2 แน่นอนไม่มีข้อบ่งชี้ว่า SDs เพิ่มขึ้นเป็น0.12 0.04 0.08 d = 2 0.08 0.13 d = 2 d 2 600.080.120.040.08d=20.080.13d=2dขึ้นไปจากที่จะ60260
รหัสดังต่อไปนี้
#
# 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