मानचित्रों पर स्थानिक और लौकिक सहसंबंध दिखाना


16

मेरे पास संयुक्त राज्य भर के मौसम स्टेशनों के नेटवर्क के लिए डेटा है। यह मुझे एक डेटा फ्रेम देता है जिसमें दिनांक, अक्षांश, देशांतर और कुछ मापा गया मान होता है। मान लें कि डेटा प्रति दिन एक बार एकत्र किया जाता है और क्षेत्रीय पैमाने के मौसम से संचालित होता है (नहीं, हम उस चर्चा में नहीं जा सकते हैं)।

मैं ग्राफिक रूप से यह दिखाना चाहता हूं कि समय और स्थान के बीच एक साथ मापा गया मान कैसे परस्पर संबंधित है। मेरा लक्ष्य उस मूल्य की क्षेत्रीय समरूपता (या उसके अभाव) को दिखाना है जिसकी जांच की जा रही है।

डेटा सेट

शुरू करने के लिए, मैंने मैसाचुसेट्स और मेन के क्षेत्र में स्टेशनों का एक समूह लिया। मैंने एक अनुक्रमणिका फ़ाइल से अक्षांश और देशांतर द्वारा साइटें चुनीं जो NOAA की FTP साइट पर उपलब्ध हैं।

यहाँ छवि विवरण दर्ज करें

सीधे आपको एक समस्या दिखाई देती है: बहुत सारी साइटें हैं जिनकी समान पहचानकर्ता हैं या वे बहुत करीब हैं। FWIW, मैं उन्हें USAF और WBAN कोड दोनों का उपयोग करके पहचानता हूं। मेटाडेटा में गहराई से देखने पर मैंने देखा कि उनके अलग-अलग निर्देशांक और ऊंचाई हैं, और एक साइट पर डेटा बंद हो जाता है और फिर दूसरे पर शुरू होता है। इसलिए, क्योंकि मुझे कोई बेहतर जानकारी नहीं है, मुझे उन्हें अलग स्टेशनों के रूप में मानना ​​होगा। इसका मतलब यह है कि डेटा में स्टेशनों के जोड़े शामिल हैं जो एक दूसरे के बहुत करीब हैं।

प्रारंभिक विश्लेषण

मैंने कैलेंडर माह द्वारा डेटा को समूहीकृत करने की कोशिश की और फिर विभिन्न जोड़े डेटा के बीच साधारण न्यूनतम वर्गों प्रतिगमन की गणना की। मैं तब स्टेशनों को जोड़ने वाली एक पंक्ति के रूप में (नीचे) सभी जोड़ों के बीच सहसंबंध की साजिश रचता हूं। लाइन रंग OLS फिट से R2 का मान दिखाता है। इसके बाद यह आंकड़ा दिखाता है कि जनवरी, फरवरी, आदि के 30+ डेटा पॉइंट किस तरह ब्याज के क्षेत्र में विभिन्न स्टेशनों के बीच परस्पर संबंधित हैं।

प्रत्येक कैलेंडर माह के दौरान दैनिक डेटा के बीच संबंध

मैंने अंतर्निहित कोड लिखे हैं ताकि दैनिक मतलब केवल गणना की जाए यदि हर 6 घंटे की अवधि में डेटा बिंदु हैं, इसलिए डेटा को साइटों पर तुलनीय होना चाहिए।

समस्या

दुर्भाग्य से, एक भूखंड पर समझ बनाने के लिए बहुत अधिक डेटा है। यह लाइनों के आकार को कम करके तय नहीं किया जा सकता है।

मैंने इस क्षेत्र में निकटतम पड़ोसियों के बीच सहसंबंधों की साजिश रचने की कोशिश की है, लेकिन यह बहुत जल्दी गड़बड़ हो जाता है। नीचे दिए गए पहलू उपयोग से सहसंबंध मूल्यों के बिना नेटवर्क दिखाते हैं स्टेशनों के उपसमूह से पड़ोसियों निकटतम। यह आंकड़ा सिर्फ अवधारणा का परीक्षण करने के लिए था। यहाँ छवि विवरण दर्ज करें

नेटवर्क बहुत जटिल प्रतीत होता है, इसलिए मुझे लगता है कि मुझे जटिलता को कम करने के लिए एक तरीका निकालने की जरूरत है, या किसी प्रकार का स्थानिक कर्नेल लागू करना चाहिए।

मुझे यह भी पता नहीं है कि सहसंबंध दिखाने के लिए सबसे उपयुक्त मीट्रिक क्या है, लेकिन इरादा (गैर-तकनीकी) दर्शकों के लिए, ओएलएस से सहसंबंध गुणांक केवल समझाने के लिए सबसे सरल हो सकता है। मुझे कुछ अन्य जानकारी जैसे ढाल या मानक त्रुटि भी प्रस्तुत करने की आवश्यकता हो सकती है।

प्रशन

मैं एक ही समय में इस क्षेत्र और आर में अपना रास्ता सीख रहा हूं, और इस पर सुझाव की सराहना करूंगा:

  1. मैं जो करने की कोशिश कर रहा हूं, उसके लिए और अधिक औपचारिक नाम क्या है? क्या कुछ सहायक शब्द हैं जो मुझे अधिक साहित्य खोजने देंगे? मेरी खोजें एक सामान्य अनुप्रयोग होने के लिए रिक्त स्थान खींच रही हैं।
  2. क्या अंतरिक्ष में अलग-अलग कई डेटा सेटों के बीच सहसंबंध दिखाने के लिए अधिक उपयुक्त तरीके हैं?
  3. ... विशेष रूप से, ऐसे तरीके जो नेत्रहीन से परिणाम दिखाना आसान है?
  4. क्या इनमें से कोई आर में लागू किया गया है?
  5. क्या इनमें से कोई भी दृष्टिकोण स्वचालन के लिए खुद को उधार देता है?

[टेम्पोरल सहसंबंध को एक दृश्य विश्लेषिकी वातावरण में स्थानिक रूप से वर्णन करते हुए, "Abish Malik et al।] [1] [१]: google.com/…
pat

2
yडब्ल्यूy

यदि आप प्लॉटिंग दहलीज (0.5) को बढ़ाने और 4 से अधिक रंग चरणों का उपयोग करने की कोशिश करते हैं तो क्या होगा? या रंगों के बजाय पतली-मोटी रेखाओं का उपयोग करने के लिए।
नाद्या

nगण((n2)/2)

1
मुझे इस बात का अहसास है कि मेरे द्वारा उल्लिखित विश्लेषण शुरू करने से पहले डेटा को प्री-प्रोसेसिंग करने के लिए मेरे पास बहुत काम है। @Nadya से प्रतिक्रिया को पढ़कर मुझे लगता है कि यह स्पष्ट है कि मुझे किसी प्रकार के स्थानिक एकत्रीकरण को देखने की आवश्यकता है, लेकिन यह चुनौतीपूर्ण होगा क्योंकि यह भूमि और महासागर डेटा को एकत्र करना गलत है। फिर मुझे अंतर-भरने की रणनीतियों को देखने की जरूरत है। तब (और केवल तब) मैं मैपिंग / विज़ुअलाइज़ेशन के काम को देखना शुरू कर सकता हूं।
एंडी क्लिफ्टन

जवाबों:


10

मुझे लगता है कि इस प्रकार के डेटा को दिखाने के लिए कुछ विकल्प हैं:

पहला विकल्प "एम्पिरिकल ऑर्थोगोनल फंक्शंस एनालिसिस" (EOF) का संचालन करना होगा (गैर-जलवायु क्षेत्रों में "प्रधान घटक विश्लेषण" (PCA) के रूप में भी जाना जाता है)। आपके मामले के लिए, यह आपके डेटा स्थानों के सहसंबंध मैट्रिक्स पर आयोजित किया जाना चाहिए। उदाहरण के लिए, आपका डेटा मैट्रिक्स datकॉलम आयाम में आपके स्थानिक स्थान और पंक्तियों में मापा पैरामीटर होगा; तो, आपके डेटा मैट्रिक्स में प्रत्येक स्थान के लिए समय श्रृंखला शामिल होगी। prcomp()समारोह, आप प्रमुख घटक है, या सह-संबंध का प्रमुख मोड प्राप्त करने के लिए अनुमति देगा इस क्षेत्र से संबंधित:

res <- prcomp(dat, retx = TRUE, center = TRUE, scale = TRUE) # center and scale should be "TRUE" for an analysis of dominant correlation modes)
#res$x and res$rotation will contain the PC modes in the temporal and spatial dimension, respectively.

दूसरा विकल्प उन मानचित्रों को बनाना होगा जो किसी व्यक्तिगत स्थान के सापेक्ष सहसंबंध दिखाते हैं:

C <- cor(dat)
#C[,n] would be the correlation values between the nth location (e.g. dat[,n]) and all other locations. 

संपादित करें: अतिरिक्त उदाहरण

हालांकि निम्न उदाहरण गप्पी डेटा का उपयोग नहीं करता है, आप DINEOF ( http://menugget.blogspot.de/2012/10/dineof-data-interpolating-empicalical.html ) के साथ प्रक्षेप के बाद डेटा फ़ील्ड में एक ही विश्लेषण लागू कर सकते हैं । नीचे दिए गए उदाहरण में निम्न डेटा सेट ( http://www.esrl.noaa.gov/psd/gcos_wgsp/Gridded/data.hadslp2.html ) से मासिक विसंगति समुद्र स्तर दबाव डेटा के सबसेट का उपयोग किया गया है :

library(sinkr) # https://github.com/marchtaylor/sinkr

# load data
data(slp)

grd <- slp$grid
time <- slp$date
field <- slp$field

# make anomaly dataset
slp.anom <- fieldAnomaly(field, time)

# EOF/PCA of SLP anom
P <- prcomp(slp.anom, center = TRUE, scale. = TRUE)

expl.var <- P$sdev^2 / sum(P$sdev^2) # explained variance
cum.expl.var <- cumsum(expl.var) # cumulative explained variance
plot(cum.expl.var)

प्रमुख ईओएफ मोड को मैप करें

# make interpolation
require(akima)
require(maps)

eof.num <- 1
F1 <- interp(x=grd$lon, y=grd$lat, z=P$rotation[,eof.num]) # interpolated spatial EOF mode


png(paste0("EOF_mode", eof.num, ".png"), width=7, height=6, units="in", res=400)
op <- par(ps=10) #settings before layout
layout(matrix(c(1,2), nrow=2, ncol=1, byrow=TRUE), heights=c(4,2), widths=7)
#layout.show(2) # run to see layout; comment out to prevent plotting during .pdf
par(cex=1) # layout has the tendency change par()$cex, so this step is important for control

par(mar=c(4,4,1,1)) # I usually set my margins before each plot
pal <- jetPal
image(F1, col=pal(100))
map("world", add=TRUE, lwd=2)
contour(F1, add=TRUE, col="white")
box()

par(mar=c(4,4,1,1)) # I usually set my margins before each plot
plot(time, P$x[,eof.num], t="l", lwd=1, ylab="", xlab="")
plotRegionCol()
abline(h=0, lwd=2, col=8)
abline(h=seq(par()$yaxp[1], par()$yaxp[2], len=par()$yaxp[3]+1), col="white", lty=3)
abline(v=seq.Date(as.Date("1800-01-01"), as.Date("2100-01-01"), by="10 years"), col="white", lty=3)
box()
lines(time, P$x[,eof.num])
mtext(paste0("EOF ", eof.num, " [expl.var = ", round(expl.var[eof.num]*100), "%]"), side=3, line=1) 

par(op)
dev.off() # closes device

यहाँ छवि विवरण दर्ज करें

सहसंबंध मानचित्र बनाएँ

loc <- c(-90, 0)
target <- which(grd$lon==loc[1] & grd$lat==loc[2])
COR <- cor(slp.anom)
F1 <- interp(x=grd$lon, y=grd$lat, z=COR[,target]) # interpolated spatial EOF mode


png(paste0("Correlation_map", "_lon", loc[1], "_lat", loc[2], ".png"), width=7, height=5, units="in", res=400)

op <- par(ps=10) #settings before layout
layout(matrix(c(1,2), nrow=2, ncol=1, byrow=TRUE), heights=c(4,1), widths=7)
#layout.show(2) # run to see layout; comment out to prevent plotting during .pdf
par(cex=1) # layout has the tendency change par()$cex, so this step is important for control

par(mar=c(4,4,1,1)) # I usually set my margins before each plot
pal <- colorRampPalette(c("blue", "cyan", "yellow", "red", "yellow", "cyan", "blue"))
ncolors <- 100
breaks <- seq(-1,1,,ncolors+1)
image(F1, col=pal(ncolors), breaks=breaks)
map("world", add=TRUE, lwd=2)
contour(F1, add=TRUE, col="white")
box()

par(mar=c(4,4,0,1)) # I usually set my margins before each plot
imageScale(F1, col=pal(ncolors), breaks=breaks, axis.pos = 1)
mtext("Correlation [R]", side=1, line=2.5)
box()

par(op)

dev.off() # closes device

यहाँ छवि विवरण दर्ज करें


लापता डेटा के साथ ये कार्य कितनी अच्छी तरह से करते हैं? मैं अक्सर समय श्रृंखला में अंतराल रखता हूं।
एंडी क्लिफ्टन

2
ईओएफ विधियां हैं जो "गैपी डेटा" के विशेष मामले के लिए डिज़ाइन की गई हैं जो आप वर्णन करते हैं। यहां एक पेपर का लिंक दिया गया है जो इन तरीकों की समीक्षा करता है: dx.doi.org/10.6084/m9.figshare.732650 । आप देखेंगे कि GSEy डेटा सेटों से EOF प्राप्त करने के लिए RSEOF और DINEOF विधियाँ सबसे सटीक हैं। DINEOF प्रक्षेप एल्गोरिथ्म यहां पाया जा सकता है: menugget.blogspot.de/2012/10/…
बॉक्स में मार्क

1
मुझे लगता है कि यह सबसे अच्छा जवाब है जो एक भयानक सवाल है।
एंडी क्लिफ्टन

3

मुझे लाइनों के पीछे स्पष्ट रूप से दिखाई नहीं देता है लेकिन यह मुझे लगता है कि बहुत अधिक डेटा पॉइंट हैं।

चूंकि आप क्षेत्रीय समरूपता दिखाना चाहते हैं और बिल्कुल स्टेशन नहीं, इसलिए मैं सबसे पहले आपको सुझाव दूंगा कि उन्हें स्थानिक रूप से समूहित करें। उदाहरण के लिए, एक "फिशनेट" द्वारा ओवरले और प्रत्येक सेल में (हर समय पल में) औसत मापा मूल्य की गणना करें। यदि आप इन औसत मानों को सेल केंद्रों में रखते हैं, तो आप डेटा को रिस्ट्रिक्ट करते हैं (या आप गणना कर सकते हैं कि हर सेल में अक्षांश और देशांतर का अर्थ है यदि आप लाइनों को ओवरले करना नहीं चाहते हैं)। या प्रशासनिक इकाइयों के अंदर औसतन, जो भी हो। फिर इन नए औसत "स्टेशनों" के लिए आप सहसंबंधों की गणना कर सकते हैं और छोटी संख्या में लाइनों के साथ एक नक्शा तैयार कर सकते हैं।

यहाँ छवि विवरण दर्ज करें

यह उन यादृच्छिक एकल उच्च-सहसंबंध लाइनों को भी हटा सकता है जो सभी क्षेत्र से गुजर रही हैं।


एक्स×एक्सएक्स

हां, निर्देशांक को प्रोजेक्ट करना एक अच्छा विचार है। सौभाग्य!
नाद्या
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.