ฉันสนใจที่จะกำหนดจำนวนของรูปแบบที่สำคัญที่มาจากการวิเคราะห์องค์ประกอบหลัก (PCA) หรือการวิเคราะห์เชิงประจักษ์ฟังก์ชันมุมฉาก (EOF) ฉันสนใจเป็นพิเศษในการใช้วิธีนี้กับข้อมูลสภาพภูมิอากาศ เขตข้อมูลเป็นเมทริกซ์ MxN โดยที่ M เป็นมิติเวลา (เช่นวัน) และ N เป็นมิติข้อมูลเชิงพื้นที่ (เช่นตำแหน่งโลน / ละติจูด) ฉันได้อ่านวิธีบูตสแตรปที่เป็นไปได้เพื่อกำหนดพีซีที่สำคัญ แต่ไม่สามารถหาคำอธิบายโดยละเอียดเพิ่มเติมได้ จนถึงตอนนี้ฉันได้ใช้ Rule of Thumb (North et al ., 1982) ของนอร์ทเพื่อกำหนดทางลัดนี้ แต่ฉันสงสัยว่ามีวิธีการที่แข็งแกร่งกว่านี้หรือไม่
ตัวอย่างเช่น:
###Generate data
x <- -10:10
y <- -10:10
grd <- expand.grid(x=x, y=y)
#3 spatial patterns
sp1 <- grd$x^3+grd$y^2
tmp1 <- matrix(sp1, length(x), length(y))
image(x,y,tmp1)
sp2 <- grd$x^2+grd$y^2
tmp2 <- matrix(sp2, length(x), length(y))
image(x,y,tmp2)
sp3 <- 10*grd$y
tmp3 <- matrix(sp3, length(x), length(y))
image(x,y,tmp3)
#3 respective temporal patterns
T <- 1:1000
tp1 <- scale(sin(seq(0,5*pi,,length(T))))
plot(tp1, t="l")
tp2 <- scale(sin(seq(0,3*pi,,length(T))) + cos(seq(1,6*pi,,length(T))))
plot(tp2, t="l")
tp3 <- scale(sin(seq(0,pi,,length(T))) - 0.2*cos(seq(1,10*pi,,length(T))))
plot(tp3, t="l")
#make data field - time series for each spatial grid (spatial pattern multiplied by temporal pattern plus error)
set.seed(1)
F <- as.matrix(tp1) %*% t(as.matrix(sp1)) +
as.matrix(tp2) %*% t(as.matrix(sp2)) +
as.matrix(tp3) %*% t(as.matrix(sp3)) +
matrix(rnorm(length(T)*dim(grd)[1], mean=0, sd=200), nrow=length(T), ncol=dim(grd)[1]) # error term
dim(F)
image(F)
###Empirical Orthogonal Function (EOF) Analysis
#scale field
Fsc <- scale(F, center=TRUE, scale=FALSE)
#make covariance matrix
C <- cov(Fsc)
image(C)
#Eigen decomposition
E <- eigen(C)
#EOFs (U) and associated Lambda (L)
U <- E$vectors
L <- E$values
#projection of data onto EOFs (U) to derive principle components (A)
A <- Fsc %*% U
dim(U)
dim(A)
#plot of top 10 Lambda
plot(L[1:10], log="y")
#plot of explained variance (explvar, %) by each EOF
explvar <- L/sum(L) * 100
plot(explvar[1:20], log="y")
#plot original patterns versus those identified by EOF
layout(matrix(1:12, nrow=4, ncol=3, byrow=TRUE), widths=c(1,1,1), heights=c(1,0.5,1,0.5))
layout.show(12)
par(mar=c(4,4,3,1))
image(tmp1, main="pattern 1")
image(tmp2, main="pattern 2")
image(tmp3, main="pattern 3")
par(mar=c(4,4,0,1))
plot(T, tp1, t="l", xlab="", ylab="")
plot(T, tp2, t="l", xlab="", ylab="")
plot(T, tp3, t="l", xlab="", ylab="")
par(mar=c(4,4,3,1))
image(matrix(U[,1], length(x), length(y)), main="eof 1")
image(matrix(U[,2], length(x), length(y)), main="eof 2")
image(matrix(U[,3], length(x), length(y)), main="eof 3")
par(mar=c(4,4,0,1))
plot(T, A[,1], t="l", xlab="", ylab="")
plot(T, A[,2], t="l", xlab="", ylab="")
plot(T, A[,3], t="l", xlab="", ylab="")
และนี่คือวิธีที่ฉันใช้เพื่อกำหนดนัยสำคัญของพีซี โดยทั่วไปกฎของหัวแม่มือคือความแตกต่างระหว่าง Lambdas เพื่อนบ้านจะต้องมากกว่าข้อผิดพลาดที่เกี่ยวข้อง
###Determine significant EOFs
#North's Rule of Thumb
Lambda_err <- sqrt(2/dim(F)[2])*L
upper.lim <- L+Lambda_err
lower.lim <- L-Lambda_err
NORTHok=0*L
for(i in seq(L)){
Lambdas <- L
Lambdas[i] <- NaN
nearest <- which.min(abs(L[i]-Lambdas))
if(nearest > i){
if(lower.lim[i] > upper.lim[nearest]) NORTHok[i] <- 1
}
if(nearest < i){
if(upper.lim[i] < lower.lim[nearest]) NORTHok[i] <- 1
}
}
n_sig <- min(which(NORTHok==0))-1
plot(L[1:10],log="y", ylab="Lambda (dots) and error (vertical lines)", xlab="EOF")
segments(x0=seq(L), y0=L-Lambda_err, x1=seq(L), y1=L+Lambda_err)
abline(v=n_sig+0.5, col=2, lty=2)
text(x=n_sig, y=mean(L[1:10]), labels="North's Rule of Thumb", srt=90, col=2)
ฉันพบส่วนของบทโดยBjörnssonและ Venegas ( 1997 ) เกี่ยวกับการทดสอบที่สำคัญที่จะเป็นประโยชน์ - พวกเขาอ้างถึงการทดสอบสามประเภทซึ่งความแปรปรวนที่โดดเด่น - ประเภทอาจเป็นสิ่งที่ฉันหวังว่าจะใช้ การอ้างถึงประเภทของวิธีมอนติคาร์โลในการสับมิติเวลาและคำนวณแลมบ์ดาใหม่ในหลายวิธีเรียงสับเปลี่ยน von Storch และ Zweiers (1999) ยังอ้างถึงการทดสอบที่เปรียบเทียบสเปกตรัมแลมบ์ดากับสเปกตรัม "สัญญาณรบกวน" อ้างอิง ในทั้งสองกรณีฉันไม่แน่ใจว่าจะทำเช่นนี้ได้อย่างไรและการทดสอบที่สำคัญนั้นทำอย่างไรเมื่อได้รับช่วงความเชื่อมั่นที่ระบุโดยการเปลี่ยนลำดับ
ขอบคุณสำหรับความช่วยเหลือของคุณ.
ข้อมูลอ้างอิง: Björnsson, H. และ Venegas, SA (1997) "คู่มือสำหรับการวิเคราะห์ข้อมูลสภาพอากาศของ EOF และ SVD", มหาวิทยาลัย McGill, รายงาน CCGCR หมายเลข 97-1, Montréal, Québec, 52pp http://andvari.vedur.is/%7Efolk/halldor/PICKUP/eof.pdf
GR North, TL Bell, RF Cahalan และ FJ Moeng (1982) ข้อผิดพลาดในการสุ่มตัวอย่างในการประมาณฟังก์ชันเชิงประจักษ์เชิงประจักษ์ จันทร์ Wea รายได้, 110: 699–706
von Storch, H, Zwiers, FW (1999) การวิเคราะห์เชิงสถิติในการวิจัยสภาพภูมิอากาศ สำนักพิมพ์มหาวิทยาลัยเคมบริดจ์