मैं एक प्रिंसिपल कंपोनेंट एनालिसिस (PCA) या एम्पिरिकल ऑर्थोगोनल फंक्शन (EOF) एनालिसिस से निकलने वाले महत्वपूर्ण पैटर्न की संख्या निर्धारित करने में दिलचस्पी रखता हूँ। मुझे इस पद्धति को जलवायु डेटा पर लागू करने में विशेष रुचि है। डेटा फ़ील्ड MxN मैट्रिक्स है जिसमें M समय आयाम (जैसे दिन) और N स्थानिक आयाम (उदाहरण lon / lat स्थान) है। मैंने महत्वपूर्ण पीसी को निर्धारित करने के लिए एक संभावित बूटस्ट्रैप विधि के बारे में पढ़ा है, लेकिन अधिक विस्तृत विवरण खोजने में असमर्थ रहा है। अब तक, मैं इस कटऑफ को निर्धारित करने के लिए नॉर्थ के नियम ऑफ थम्ब (नॉर्थ एट अल ।, 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="")
और, यहां वह विधि है जिसका उपयोग मैं पीसी के महत्व को निर्धारित करने के लिए कर रहा हूं। मूल रूप से, अंगूठे का नियम यह है कि पड़ोसी लैम्ब्डा के बीच का अंतर उनकी संबंधित त्रुटि से अधिक होना चाहिए।
###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)
मैंने ब्योर्सनसन और वेनेगास ( 1997 ) द्वारा अध्याय अनुभाग को महत्वपूर्ण परीक्षणों पर मददगार होने के लिए पाया है - वे तीन श्रेणियों के परीक्षणों का उल्लेख करते हैं, जिनमें से प्रमुख प्रसरण- प्रकार संभवतः वह है जिसका मैं उपयोग करने की उम्मीद कर रहा हूं। समय के फेरबदल और कई क्रमपरिवर्तन पर लम्बदा को फिर से शामिल करने के लिए मोंटे कार्लो दृष्टिकोण का एक प्रकार का संदर्भ। वॉन स्टॉर्च और ज़्वियर्स (1999) भी एक परीक्षण का उल्लेख करते हैं जो लैम्बडा स्पेक्ट्रम की तुलना "शोर" स्पेक्ट्रम से करता है। दोनों ही मामलों में, मैं थोड़ा अनिश्चित हूं कि यह कैसे किया जा सकता है, और यह भी कि कैसे महत्व परीक्षण किया जाता है, क्रमपरिवर्तन द्वारा पहचाने गए आत्मविश्वास के अंतराल।
आपकी सहायता के लिए धन्यवाद।
संदर्भ: ब्योर्नसन, एच। और वेनेगैस, एसए (1997)। "ईओएफ और एसवीडी के लिए एक मैनुअल जलवायु डेटा का विश्लेषण", मैकगिल विश्वविद्यालय, सीसीजीसीआर रिपोर्ट नंबर 97-1, मॉन्ट्रियल, क्यूबेक, 52pp। http://andvari.vedur.is/%7Efolk/halldor/PICKUP/eof.pdf
जीआर नॉर्थ, टीएल बेल, आरएफ केलन, और एफजे मूंग। (1982)। अनुभवजन्य ऑर्थोगोनल कार्यों के आकलन में नमूनाकरण त्रुटियां। सोम Wea। Rev., 110: 699–706।
वॉन स्टॉर्च, एच, ज़्वियर्स, एफडब्ल्यू (1999)। जलवायु अनुसंधान में सांख्यिकीय विश्लेषण। कैम्ब्रिज यूनिवर्सिटी प्रेस।