मैं आर्कगिस, पायथन और एसपीएसएस / आर का उपयोग करके भौगोलिक रूप से भारित प्रधान घटक विश्लेषण कैसे कर सकता हूं?


32

मैं भौगोलिक रूप से भारित प्रधान घटक विश्लेषण (GWPCA) के संचालन के लिए विवरण / पद्धति के बाद हूं । मैं इसके किसी भी हिस्से के लिए पायथन का उपयोग करके खुश हूं और मैं कल्पना करता हूं कि एसपीएसएस या आर का उपयोग भौगोलिक रूप से भारित चर पर पीसीए चलाने के लिए किया जाता है।

मेरा डेटासेट लगभग 30 स्वतंत्र चरों से बना है, जिन्हें ~ 550 जनगणना ट्रैक्ट (वेक्टर ज्यामिति) में मापा जाता है।

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


नीचे दिए गए टिप्पणियों के कारण मैं इस संपादन के साथ पहले भाग का विस्तार करना चाहूंगा।

पॉल को संबोधित करने के लिए ...

मैं निम्नलिखित पेपर से GWPCA में अपनी रुचि को आधार बना रहा हूं:

लॉयड, सीडी, (2010)। भौगोलिक रूप से भारित प्रमुख घटक विश्लेषण का उपयोग करके जनसंख्या विशेषताओं का विश्लेषण करना: 2001 में उत्तरी आयरलैंड का एक केस अध्ययन। कंप्यूटर, पर्यावरण और शहरी सिस्टम, 34 (5), p.389-399।

उन लोगों के लिए, जिनके पास साहित्य तक पहुंच नहीं है, मैंने विशेष खंडों के स्क्रीनशॉट संलग्न किए हैं जो नीचे दिए गए गणित की व्याख्या करते हैं:

लेख

और पता करने के लिए whuber ...

विस्तार (गोपनीयता) के बिना, हम 30 वैरिएबल्स को कम करने का प्रयास कर रहे हैं, जो हम मानते हैं कि सभी बहुत अच्छे संकेतक हैं (विश्व स्तर पर), 1 से अधिक eigenvalues ​​के साथ घटकों के सेट पर 1. भौगोलिक दृष्टि से महत्वपूर्ण घटकों की गणना करके, हम प्रयास करते हैं इन घटकों द्वारा समझाया गया स्थानीय रूपांतरों को समझने के लिए।

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

हम प्रत्येक घटक (अलग से) के हिसाब से विचरण के प्रतिशत को मैप करने की उम्मीद करते हैं, प्रश्न में घटक द्वारा समझाया गया पड़ोस की सीमा को समझने के लिए (हमारे घटकों की स्थानीय स्थानिकता को समझने में हमारी सहायता करें)। शायद कुछ अन्य मानचित्रण उदाहरण हैं, लेकिन इस समय कोई भी ध्यान में नहीं आता है।

इसके अतिरिक्त:

GWPCA के पीछे का गणित भौगोलिक विश्लेषण और सामाजिक आँकड़ों में मेरी पृष्ठभूमि को समझने से परे है। गणित का अनुप्रयोग सबसे महत्वपूर्ण है, अर्थात, मैं इन चर / सूत्रों में क्या प्लग करता हूं।


1
मुझे पता नहीं है कि R में बॉक्स समाधान नहीं है, लेकिन यह बहुत मुश्किल नहीं होना चाहिए। कृपया प्रासंगिक गणित पोस्ट करें यदि आप इससे अधिक प्रतिक्रिया चाहते हैं: "आर शायद यह कर सकता है"।
पॉल हीमस्ट्रा

2
आप किस प्रकार के परिणामों की तलाश कर रहे हैं? सबसे बड़ा स्वदेशी? प्रमुख घटकों की अनुमानित संख्या? प्रमुख चरण पर्याप्त रूप से स्पष्ट होने चाहिए - एक बिंदु पर, भार उठाएं, भारित सहसंयोजक (या सहसंबंध) मैट्रिक्स की गणना करें, उस मैट्रिक्स के एसवीडी से पीसीए प्राप्त करें। बिंदुओं के एक समूह के लिए दोहराएं। क्या आप इनमें से किसी भी चरण का विवरण देख रहे हैं?
whuber

मेरी खुशी, खुशी है। मेरी बात को समझाने के लिए। n.rows = 20 n.cols = 30 sq = seq (1,600) rast = raster (मैट्रिक्स (sq, nrow = n.rows, byrow = T)) rast2 = raster (मैट्रिक्स (sq, nrow = ncol)) rast2 फ़्लिप किया गया है। यदि आप अपने मानचित्रों को देखते हैं, तो आप देखेंगे कि वास्तव में आपके पास 30 के बजाय 20 कॉलम हैं (एक्स-एक्सिस पर विस्तृत सेल, उनमें से केवल 20)। बस मदद करना चाहता था।

आपको यह जानने में रुचि हो सकती है कि GW PCA सहित R के लिए GW विधियों का एक नया उन्नत पैकेज है, जो जल्द ही समाप्त हो गया - इसे पिछले महीने GISRUK 2013 में प्रस्तुत किया गया था।
ऐसरगिस

वांछित विश्लेषण के ओपी के विस्तृत विवरण के आधार पर, मैं "पड़ोसी मैट्रिस के प्रिंसिपल निर्देशांक" (AKA, मोरन के आइजनवेक्टर) पर साहित्य की जांच करने की जोरदार सिफारिश करूंगा। इस विधि को मूल रूप से 'बोरकार्ड डी।, और पी। लीजेंड्रे (2002) में प्रस्तावित किया गया था, जो कि पड़ोसी मैट्रिसेस के प्रमुख निर्देशांक द्वारा पारिस्थितिक डेटा के सभी पैमाने पर स्थानिक विश्लेषण है। पारिस्थितिक मॉडलिंग 153: 51-68 'और कई स्थानिक पैमाने के डोमेन पर डेटा के मूल्यांकन के लिए एक बहुत शक्तिशाली है जो कुछ ऐसा है जो GWPCA नहीं करेगा। यह विधि स्पेसमेकर और पीसीएनएम आर लाइब्रेरी में लागू है।
जेफरी इवांस

जवाबों:


29

"भौगोलिक रूप से भारित पीसीए" बहुत वर्णनात्मक है: में R, कार्यक्रम व्यावहारिक रूप से खुद को लिखता है। (इसे कोड की वास्तविक लाइनों की तुलना में अधिक टिप्पणी लाइनों की आवश्यकता है।)

चलो वजन के साथ शुरू करते हैं, क्योंकि यह वह जगह है जहां पीसीए से भौगोलिक रूप से भारित पीसीए पार्ट्स कंपनी है। "भौगोलिक" शब्द का अर्थ है कि वजन एक आधार बिंदु और डेटा स्थानों के बीच की दूरी पर निर्भर करता है। मानक - लेकिन केवल किसी भी तरह से - भार एक गाऊसी कार्य है; अर्थात्, वर्ग दूरी के साथ घातीय क्षय। उपयोगकर्ता को क्षय दर या अधिक सहज ज्ञान युक्त निर्दिष्ट करने की आवश्यकता है - एक विशेषता दूरी जिस पर एक निश्चित मात्रा में क्षय होता है।

distance.weight <- function(x, xy, tau) {
  # x is a vector location
  # xy is an array of locations, one per row
  # tau is the bandwidth
  # Returns a vector of weights
  apply(xy, 1, function(z) exp(-(z-x) %*% (z-x) / (2 * tau^2)))
}

पीसीए या तो एक सहसंयोजक या सहसंबंध मैट्रिक्स (जो एक सहसंयोजक से प्राप्त होता है) पर लागू होता है। यहाँ, फिर, एक संख्यात्मक रूप से स्थिर तरीके से भारित सहसंयोजकों की गणना करने का एक कार्य है।

covariance <- function(y, weights) {
  # y is an m by n matrix
  # weights is length m
  # Returns the weighted covariance matrix of y (by columns).
  if (missing(weights)) return (cov(y))
  w <- zapsmall(weights / sum(weights)) # Standardize the weights
  y.bar <- apply(y * w, 2, sum)         # Compute column means
  z <- t(y) - y.bar                     # Remove the means
  z %*% (w * t(z))  
}

सहसंबंध सामान्य रूप से व्युत्पन्न होता है, प्रत्येक चर के माप की इकाइयों के लिए मानक विचलन का उपयोग करके:

correlation <- function(y, weights) {
  z <- covariance(y, weights)
  sigma <- sqrt(diag(z))       # Standard deviations
  z / (sigma %o% sigma)
}

अब हम PCA कर सकते हैं:

gw.pca <- function(x, xy, y, tau) {
  # x is a vector denoting a location
  # xy is a set of locations as row vectors
  # y is an array of attributes, also as rows
  # tau is a bandwidth
  # Returns a `princomp` object for the geographically weighted PCA
  # ..of y relative to the point x.
  w <- distance.weight(x, xy, tau)
  princomp(covmat=correlation(y, w))
}

(यह अब तक निष्पादन योग्य कोड की शुद्ध 10 पंक्तियाँ हैं। केवल एक और आवश्यकता होगी, नीचे, हम एक ग्रिड का वर्णन करते हैं, जिस पर विश्लेषण करना है।)


आइए प्रश्न में वर्णित उन लोगों के लिए कुछ यादृच्छिक नमूना डेटा के साथ उदाहरण दें: 550 स्थानों पर 30 चर।

set.seed(17)
n.data <- 550
n.vars <- 30
xy <- matrix(rnorm(n.data * 2), ncol=2)
y <- matrix(rnorm(n.data * n.vars), ncol=n.vars)

भौगोलिक रूप से भारित गणना अक्सर स्थानों के चयनित सेट पर की जाती है, जैसे कि एक पारगमन के साथ या एक नियमित ग्रिड के बिंदुओं पर। चलो परिणामों पर कुछ परिप्रेक्ष्य प्राप्त करने के लिए एक मोटे ग्रिड का उपयोग करें; बाद में - एक बार जब हमें विश्वास हो जाता है कि सब कुछ काम कर रहा है और हमें वही मिल रहा है जो हम चाहते हैं - हम ग्रिड को परिष्कृत कर सकते हैं।

# Create a grid for the GWPCA, sweeping in rows
# from top to bottom.
xmin <- min(xy[,1]); xmax <- max(xy[,1]); n.cols <- 30
ymin <- min(xy[,2]); ymax <- max(xy[,2]); n.rows <- 20
dx <- seq(from=xmin, to=xmax, length.out=n.cols)
dy <- seq(from=ymin, to=ymax, length.out=n.rows)
points <- cbind(rep(dx, length(dy)),
                as.vector(sapply(rev(dy), function(u) rep(u, length(dx)))))

एक सवाल है कि हम प्रत्येक पीसीए से किस जानकारी को बनाए रखना चाहते हैं। आमतौर पर, n वेरिएबल्स के लिए एक PCA, n eigenvalues की सॉर्ट की गई सूची और - विभिन्न रूपों में - n vectors की एक संबंधित सूची , प्रत्येक की लंबाई n । कि नक्शे के लिए n * (n + 1) संख्या है! सवाल से कुछ संकेत लेते हुए आइए आइजनवेल्यूज़ को मैप करते हैं। इन्हें विशेषता के gw.pcaमाध्यम से आउटपुट से निकाला जाता है $sdev, जो कि घटते मूल्य से आईजेनवेल्यूज़ की सूची है।

# Illustrate GWPCA by obtaining all eigenvalues at each grid point.
system.time(z <- apply(points, 1, function(x) gw.pca(x, xy, y, 1)$sdev))

यह इस मशीन पर 5 सेकंड से भी कम समय में पूरा हो जाता है। ध्यान दें कि 1 की एक विशेषता दूरी (या "बैंडविड्थ") का उपयोग कॉल में किया गया था gw.pca


बाकी सब खत्म करने की बात है। rasterलायब्रेरी का उपयोग करके परिणामों को मैप करते हैं । (इसके बजाय, कोई व्यक्ति जीआईएस के साथ पोस्ट-प्रोसेसिंग के लिए एक ग्रिड प्रारूप में परिणाम लिख सकता है।)

library("raster")
to.raster <- function(u) raster(matrix(u, nrow=n.cols), 
                                xmn=xmin, xmx=xmax, ymn=ymin, ymx=ymax)
maps <- apply(z, 1, to.raster)
par(mfrow=c(2,2))
tmp <- lapply(maps, function(m) {plot(m); points(xy, pch=19)})

मैप्स

ये 30 मानचित्रों में से पहले चार हैं, जो चार सबसे बड़े प्रतिध्वनि दर्शाते हैं। (उनके आकार से बहुत अधिक उत्साहित न हों, जो हर स्थान पर 1 से अधिक हो। यह याद रखें कि ये डेटा पूरी तरह से यादृच्छिक रूप से उत्पन्न हुए थे और इसलिए, यदि उनके पास कोई सहसंबंध संरचना है - जो इन मानचित्रों में लघ्वान्त्र eigenvalues ​​इंगित करते हैं - यह पूरी तरह से मौका के कारण होता है और यह "वास्तविक" कुछ भी प्रतिबिंबित नहीं करता है जो डेटा निर्माण प्रक्रिया को समझाता है।)

यह बैंडविड्थ को बदलने का निर्देश है। यदि यह बहुत छोटा है, तो सॉफ्टवेयर विलक्षणताओं के बारे में शिकायत करेगा। (मैंने इस नंगे हड्डियों के कार्यान्वयन में किसी भी त्रुटि की जाँच में निर्माण नहीं किया है।) लेकिन इसे 1 से 1/4 तक कम करना (और पहले जैसा ही डेटा का उपयोग करना) दिलचस्प परिणाम देता है:

मैप्स 2

सीमा के चारों ओर के बिंदुओं के लिए असामान्य रूप से बड़े प्रिंसिपल eigenvalues ​​(ऊपरी बाएं हाथ के नक्शे के हरे स्थानों में दिखाया गया है) देने की प्रवृत्ति पर ध्यान दें, जबकि अन्य सभी eigenvalues ​​को क्षतिपूर्ति करने के लिए उदास हैं (अन्य तीन मानचित्रों में हल्के गुलाबी द्वारा दिखाए गए) । यह घटना, और पीसीए और भौगोलिक भार के कई अन्य सूक्ष्मताएं, पीसीए की भौगोलिक रूप से भारित संस्करण की व्याख्या करने के लिए मज़बूती से उम्मीद कर सकती हैं, इससे पहले समझने की आवश्यकता होगी। और फिर विचार करने के लिए अन्य 30 * 30 = 900 eigenvectors (या "लोडिंग") हैं ...।


1
हमेशा की तरह उल्लेखनीय @whuber, बहुत बहुत धन्यवाद!
माइकल मार्किटा

1
बस आपको यह अवगत कराना चाहता था कि in.raster फ़ंक्शन में, आपको मैट्रिक्स (u, nrow = n.col) के बजाय मैट्रिक्स (u, nrow = n.rows, byrow = TRUE) की आवश्यकता होगी।

1
@ cqh इस कोड को इतनी सावधानी से देखने के लिए धन्यवाद! आप एक वैध चिंता की ओर इशारा करते हैं; मुझे याद है कि इस मुद्दे से निपटने के लिए। हालाँकि, मुझे लगता है कि कोड सही है क्योंकि यह खड़ा है। यदि मैंने पंक्ति / स्तंभ क्रम को मिलाया था, तो चित्र पूरी तरह से (और जाहिर है) खराब हो जाएंगे। (यही कारण है कि मैंने अलग-अलग पंक्ति और स्तंभ की गणना के साथ परीक्षण किया।) मैं दुर्भाग्यपूर्ण अभिव्यक्ति के लिए माफी मांगता हूं nrow=n.cols, लेकिन यह है कि यह कैसे काम करता है (कैसे pointsबनाया गया था इसके आधार पर ) और मैं वापस नहीं जाना चाहता था और सब कुछ बदल दिया।
whuber

14

अद्यतन करें:

अब CRAN - GWmodel पर एक विशेष R पैकेज उपलब्ध है जिसमें अन्य उपकरणों के बीच भौगोलिक रूप से भारित PCA शामिल है। लेखक की वेबसाइट से :

भौगोलिक रूप से भारित मॉडलिंग, GWmodel के लिए हमारा नया आर पैकेज, हाल ही में CRAN में अपलोड किया गया था। GWmodel भौगोलिक रूप से भारित डेटा विश्लेषण दृष्टिकोण की सीमा को एक पैकेज के भीतर प्रदान करता है, इनमें वर्णनात्मक आँकड़े, सहसंबंध, प्रतिगमन, सामान्य रैखिक मॉडल और प्रमुख घटक विश्लेषण शामिल हैं। प्रतिगमन मॉडल में गॉसियन, लॉजिस्टिक और पॉइसन संरचनाओं के साथ डेटा के लिए विभिन्न शामिल हैं, साथ ही साथ सहसंबंधित भविष्यवक्ताओं से निपटने के लिए रिज प्रतिगमन भी शामिल है। इस पैकेज की एक नई विशेषता प्रत्येक तकनीक के मजबूत संस्करणों का प्रावधान है - ये आउटलेर्स के प्रभावों के लिए प्रतिरोधी हैं।

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

उदाहरण डेटासेट भी प्रदान किए जाते हैं, और उनका उपयोग विभिन्न तकनीकों के उपयोग के चित्रण में दस्तावेज के साथ किया जाता है।

अधिक विवरण आने वाले पेपर के आईएनए पूर्वावलोकन ।


मुझे संदेह है कि यदि कोई 'उपयोग करने के लिए तैयार है, तो आपके डेटा में प्लग' समाधान मौजूद है। लेकिन मैं बहुत गलत होने की उम्मीद कर रहा हूं क्योंकि मैं अपने कुछ डेटा के साथ इस पद्धति का परीक्षण करना पसंद करूंगा।

विचार करने के लिए कुछ विकल्प:


Marí-Dell'Olmo और सहयोगियों ने स्पेन में छोटे क्षेत्रों के लिए अभाव सूचकांक की गणना करने के लिए बायेसियन कारक विश्लेषण का उपयोग किया:

बायिसियन कारक विश्लेषण एक वंचन सूचकांक और इसकी अनिश्चितता की गणना करने के लिए। Marí-Dell'Olmo M, Martínez-Beneito MA, Borrell C, Zurriaga O, Nolasco A, Domínguez-Berjón MF। महामारी विज्ञान । 2011 मई; 22 (3): 356-64।

लेख में वे R से निष्पादित WinBUGS मॉडल के लिए विनिर्देश प्रदान करते हैं जो आपको आरंभ कर सकता है।


adegenet R पैकेज इम्प्लीमेंटspca फंक्शन। यद्यपि यह आनुवांशिक डेटा पर केंद्रित है, लेकिन यह आपकी समस्या के समाधान के करीब भी हो सकता है जितना कि आप प्राप्त कर सकते हैं। या तो सीधे इस पैकेज / फ़ंक्शन का उपयोग करके, या इसके कोड को संशोधित करके। समस्या परएक शब्दचित्र है जो आपको उठना और चलना चाहिए।


में शोधकर्ताओं ने सामरिक अनुसंधान क्लस्टर सक्रिय रूप से विषय पर काम कर रहा है। विशेष रूप से पॉल हैरिस और क्रिस ब्रंसडन (यहाँ प्रस्तुति मैं पर ठोकर खाई)। पॉल और उर्सका का हालिया प्रकाशन ( पूर्ण पाठ ) भी उपयोगी संसाधन हो सकता है:

डेमेसर यू, हैरिस पी, ब्रूनसन सी, फ़ॉरसिंघम एएस, मैकलोन एस (2012) स्थानिक डेटा पर प्रमुख घटक विश्लेषण: एक सिंहावलोकन। अमेरिकी भूगोल की एसोसिएशन का वर्णक्रम से लिखा हुआ इतिहास

आप उनसे संपर्क करने की कोशिश क्यों नहीं करते और इस बारे में पूछते हैं कि वे वास्तव में क्या उपयोग कर रहे हैं? वे अपने काम को साझा करने या एक अच्छी दिशा में बात करने के लिए तैयार हो सकते हैं।


चेंग, Q. (2006) स्थानिक और स्थानिक रूप से भारित प्राचार्य घटक विश्लेषण इमेज प्रोसेसिंग के लिए। IGARSS 2006: 972-975

कागज में जियोदा जीआईएस प्रणाली का उपयोग करने का उल्लेख है। एक और लीड हो सकता है।


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

ऐसा लगता है कि एक विकल्प कर्नेल पीसीए होगा। tribesandclimatechange.org/docs/tribes_450.pdf
जेफरी इवांस

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