आर में स्थानिक डेटा क्लस्टरिंग? [बन्द है]


34

मेरे पास अक्षांश और देशांतर के साथ डेटा बिंदुओं का गुच्छा है। मैं उनकी दूरी के आधार पर उन्हें क्लस्टर करने के लिए R का उपयोग करना चाहता हूं।

मैंने पहले ही इस पृष्ठ पर एक नज़र डाल ली है और क्लस्टर पैकेज की कोशिश की है। लेकिन मुझे यकीन नहीं है कि अगर क्लस्टर में क्लस्टर फंक्शन डेटा पॉइंट्स (lat, lon) को स्थानिक डेटा मानता है और उनके बीच की दूरी की गणना करने के लिए उपयुक्त फॉर्मूला का उपयोग करता है।

मेरा मतलब है कि मैं यह नहीं देख सकता कि वे स्थानिक डेटा और क्रमिक डेटा के बीच अंतर कैसे करते हैं। मेरा मानना ​​है कि मानचित्र (स्थानिक) पर दो बिंदुओं और दो सामान्य संख्याओं के बीच की दूरी की गणना अलग है। (क्या ऐसा नहीं है?)

इसके अलावा क्या होगा अगर मैं अपने क्लस्टरिंग में तीसरे पैरामीटर पर विचार करना चाहता हूं?

जैसे कि अगर मेरे पास (लेट, लोन) और एक अन्य पैरामीटर है।

दूरी की गणना कैसे की जाती है?

क्लस्टटूल के साथ दूसरी समस्या यह है कि इसे जीयूआई को ध्यान में रखकर बनाया गया है। मुझे नहीं पता कि मैं लाइब्रेरी में GUI ओवरहेड को कैसे छोड़ सकता हूं क्योंकि मुझे इसकी आवश्यकता नहीं है।

स्थानिक डेटा के क्लस्टर विश्लेषण के लिए मेरे पास आर में क्या विकल्प हैं?



tnx व्हीबर मेरा एक सवाल है। आर में स्थानिक क्लस्टरिंग के लिए एक विशिष्ट पैकेज है? मेरा मतलब है, जहां तक ​​मैं समझता हूं कि स्थानिक डेटा के लिए दूरी की गणना अलग से की जानी चाहिए। क्या ये सही है?
कप्तान

लगभग हर सामान्य-उद्देश्य वाले क्लस्टरिंग पैकेज जो मैंने आर सहित, का सामना किया है, जो इनपुट के रूप में असमानता या दूरी मैट्रिसेस को Clusterस्वीकार करेंगे। यह उन्हें पूरी तरह से सामान्य बनाता है और क्षेत्र पर क्लस्टरिंग के लिए लागू होता है, बशर्ते आप खुद दूरी की गणना कर सकते हैं, जो सीधा है।
whuber

मैं लंबे समय से एक समान समस्या का सामना कर रहा हूं, लेकिन एक अच्छा समाधान नहीं मिल रहा है, आप स्टैक-एक्सचेंज में मेरी पोस्ट पर एक नज़र डाल सकते हैं । मेरे पास मासिक समुद्री सतह तापमान डेटा (लोन, लाट, एसटीएस) का एक सेट है। क्या आपने ऐसे स्थानिक डेटा के लिए क्लस्टर खोजने का तरीका पाया है? मुझे उचित R पैकेज / फ़ंक्शन नहीं मिल रहा है। अग्रिम धन्यवाद
पचो

क्या आपने SatScan का उपयोग करने पर विचार किया है?

जवाबों:


13

यहाँ बिंदुओं के आधार पर दूरी नियम का पता लगाएं के आधार पर एक समाधान है , लेकिन पैकेज distmसे फ़ंक्शन का उपयोग कर रहा है geosphere:

library(sp)
library(rgdal)
library(geosphere)

# example data from the thread
x <- c(-1.482156, -1.482318, -1.482129, -1.482880, -1.485735, -1.485770, -1.485913, -1.484275, -1.485866)
y <- c(54.90083, 54.90078, 54.90077, 54.90011, 54.89936, 54.89935, 54.89935, 54.89879, 54.89902)

# convert data to a SpatialPointsDataFrame object
xy <- SpatialPointsDataFrame(
      matrix(c(x,y), ncol=2), data.frame(ID=seq(1:length(x))),
      proj4string=CRS("+proj=longlat +ellps=WGS84 +datum=WGS84"))

# use the distm function to generate a geodesic distance matrix in meters
mdist <- distm(xy)

# cluster all points using a hierarchical clustering approach
hc <- hclust(as.dist(mdist), method="complete")

# define the distance threshold, in this case 40 m
d=40

# define clusters based on a tree "height" cutoff "d" and add them to the SpDataFrame
xy$clust <- cutree(hc, h=d)

आपको कुछ इस तरह मिलना चाहिए:

        coordinates ID clust
1 (-1.482156, 54.90083)  1     1
2 (-1.482318, 54.90078)  2     1
3 (-1.482129, 54.90077)  3     1
4  (-1.48288, 54.90011)  4     2
5 (-1.485735, 54.89936)  5     3
6  (-1.48577, 54.89935)  6     3
7 (-1.485913, 54.89935)  7     3
8 (-1.484275, 54.89879)  8     4
9 (-1.485866, 54.89902)  9     3

ये अगले चरण केवल दृश्य के लिए हैं:

library(dismo)
library(rgeos)

# expand the extent of plotting frame
xy@bbox[] <- as.matrix(extend(extent(xy),0.001))

# get the centroid coords for each cluster
cent <- matrix(ncol=2, nrow=max(xy$clust))
for (i in 1:max(xy$clust))
    # gCentroid from the rgeos package
    cent[i,] <- gCentroid(subset(xy, clust == i))@coords

# compute circles around the centroid coords using a 40m radius
# from the dismo package
ci <- circles(cent, d=d, lonlat=T)

# plot
plot(ci@polygons, axes=T)
plot(xy, col=rainbow(4)[factor(xy$clust)], add=T)

भूखंड


मेरे पास इस मुद्दे हैं: मेरे पास दूरी मैट्रिक्स है और मैं प्रत्येक आइटम के लिए सबसे बड़ी दूरी पाता हूं: for (i in 1:186) { print(paste(i,min(distance[i,c(1:(i-1),(i+1):187)]))) } यह लेता है 4लेकिन जब मैं x <- cutree(hc, h=5)इसे लागू करता हूं तो मुझे 187 में से 101 क्लस्टर देता है। तार्किक रूप से, 1. गलत होना चाहिए?
पीटर। जेक

हाय, मुझे यकीन नहीं है कि आप यहाँ कैसे मदद करेंगे। मैंने एक छोटा सा उदाहरण दिया, और यह ठीक काम करता है x = as.dist(matrix(runif(100), ncol=10)); hc = hclust(x, method="complete"); cutree(hc, h=max(x)):। जैसा कि आप उम्मीद करेंगे, यह आपको एक ही क्लस्टर देता है। अपने क्लस्टरिंग मॉडल के साथ साजिश रचने का प्रयास करें: plot(hc)और देखें कि उच्चतम मूल्य क्या है।
sansch

11

आर में एक गोलाकार पृथ्वी पर सच्ची दूरी की गणना के लिए कार्य हैं, इसलिए हो सकता है कि आप उन का उपयोग कर सकते हैं और निर्देशांक के बजाय एक दूरी मैट्रिक्स के साथ क्लस्टरिंग फ़ंक्शन को कॉल कर सकते हैं। मैं नाम या प्रासंगिक पैकेज को कभी याद नहीं रख सकता। सुराग के लिए आर-स्थानिक टास्क देखें देखें।

अन्य विकल्प के लिए एक संदर्भ प्रणाली ताकि दूरी के लिए अपने अंक को बदलने के लिए है रहे हैं इयूक्लिडियन। यूके में मैं OSGrid संदर्भ प्रणाली का उपयोग कर सकता हूं:

 data = spTransform(data,CRS("+epsg:27700"))

पैकेज 'rgdal' (या शायद maptools) से स्पट्रांसफॉर्म का उपयोग करना। अपने डेटा के लिए एक ग्रिड सिस्टम ढूंढें (प्रासंगिक UTM ज़ोन संभवतः करेगा) और आप मीटर में कोई समस्या नहीं होने पर दूरी की गणना करेंगे।

यह केवल तभी अच्छा है जब आपका डेटा एक छोटा-ईश क्षेत्र है - यदि आपके पास वैश्विक डेटा है, तो आपको वास्तव में गोलाकार दूरी की गणना करने की आवश्यकता है, और यह आर स्पेसल टास्क व्यू में चर्चा किए गए पैकेजों में से एक (या अधिक) में कहीं है:

http://cran.r-project.org/web/views/Spatial.html

लगता है कि आप पैकेज "जियोस्फीयर" चाहते हैं, लेकिन स्थानिक कार्य दृश्य पढ़ें!


7

मैं Spatstat पैकेज पर एक नज़र डालूँगा । संपूर्ण पैकेज स्थानिक बिंदु पैटर्न (एसआईसी) का विश्लेषण करने के लिए समर्पित है। सीएसआईआरओ में प्रो। एड्रियन बैडले द्वारा लिखित एक उत्कृष्ट ई-पुस्तक है जिसमें विस्तृत प्रलेखन, कैसे-कैसे और पूरे पैकेज के लिए उदाहरण हैं। "बिंदु पैटर्न के लिए दूरी के तरीकों" के लिए अध्याय 19 पर एक नज़र डालें।

उस ने कहा, मुझे यकीन नहीं है कि स्पैटियल और ऑर्डिनल डेटा के बीच स्पेसटैट भी अंतर करता है, इसलिए आप अपने बिंदुओं को लगातार एक्स और वाई मूल्यों के साथ किसी चीज में फिर से डालना चाहते हैं - संभवतः rgdal (GDAL और OGR के लिए एक आर लाइब्रेरी) का उपयोग करने का प्रयास करें ।


tnx। यह एक महान ebook है। लेकिन मुझे यकीन नहीं है कि इस स्पॅास्टेट का उपयोग करके क्लस्टरिंग कैसे किया जा सकता है क्योंकि मुझे क्लस्टरिंग के लिए कोई विशिष्ट कार्य नहीं दिखता है। क्या आप थोड़ा समझा सकते हैं?
कप्तान

2
वास्तव में, निष्पक्ष होने के लिए, इसे फिर से देखने के बाद मैं DCluster पैकेज को देखूंगा - एक पैकेज भी Bivand द्वारा क्लस्टर क्लस्टर का विश्लेषण करने पर। इसके अलावा, उत्तर पर प्रतीक्षा के लिए माफी!
om_henners

6

शायद यह जवाब 2 साल बहुत देर से आता है, लेकिन वैसे भी।

मेरी जानकारी के लिए, स्थानिक क्लस्टरिंग को एक परिभाषित पड़ोस की आवश्यकता होती है जिसमें क्लस्टरिंग विवश होती है, कम से कम शुरुआत में। Kulldorf में समारोह SpatialEpi पैकेज एकत्रित किया पड़ोस के आधार पर स्थानिक क्लस्टरिंग के लिए अनुमति देता है।

आगे FPG पैकेज से उपलब्ध DBSCAN आँकड़ा उपयोगी हो सकता है।

इसी तरह की चर्चा के लिए यहां भी देखें: https://stats.stackexchange.com/questions/9739/clustering-spatial-data-in-r

और हाल ही में क्लस्टर एल्गोरिदम के बारे में एक दिलचस्प पेपर के लिए, जैसे कि CHAMAELEON: http://www.cs.uiuc.edu/homes/hanj/pdf/gkdbk01.pdf


हान एट अल। "डेटा खनन में स्थानिक क्लस्टरिंग तरीके: एक सर्वेक्षण" द्वारा अब यह पाया जा सकता है: hanj.cs.illipedia.edu/pdf/gkdbk01.pdf
knb

5

एक Rपैकेज नहीं है, जबकि जियोदा एक दिलचस्प कार्यक्रम हो सकता है , क्योंकि यह ल्यूक एंसलिन द्वारा लिखा गया है, जिसने स्थानिक क्लस्टरिंग सिद्धांत में योगदान दिया है, और मेरा मानना ​​है कि यह कुछ क्लस्टरिंग को सक्षम करता है (हालांकि यह कुछ समय हो गया है क्योंकि मैंने इसकी खोज की है)।

spdep एक बेहतरीन Rपैकेज है। इसमें ट्री एज रिमूवल द्वारा स्थानिक 'K'luster विश्लेषण केskater लिए फ़ंक्शन शामिल है । यह स्थानिक विश्लेषण के लिए अन्य कार्य भी लाता है, जिसमें स्थानिक ऑटो-सहसंबंध और स्थानीय मोरन और अन्य स्थानिक आंकड़ों का उपयोग करके स्थानीय क्लस्टर का पता लगाना शामिल है। यह इस प्रकार वर्णित है:

बहुभुज संदर्भों से स्थानिक भार मैट्रिक्स वस्तुओं को बनाने के लिए कार्यों का एक संग्रह, दूरी और tesselations द्वारा बिंदु पैटर्न से, इन वस्तुओं को संक्षेप में प्रस्तुत करने के लिए, और न्यूनतम फैले हुए पेड़ के साथ क्षेत्रीय एकत्रीकरण सहित स्थानिक डेटा विश्लेषण में उनके उपयोग की अनुमति के लिए; वैश्विक मोरन I, APLE, गिरी सी, ह्यूबर्ट / मेंटल जनरल क्रॉस प्रोडक्ट स्टेटिस्टिक, एम्पिरिकल बेयस अनुमान और असुनकाओ / रीस इंडेक्स, गेटिस / ऑर्ड जी और बहुरंगी सहित गिनती के आँकड़ों में स्थानीय मोरन I और गेटिस शामिल हैं। / ऑर्ड जी, काठी सन्निकटन और सटीक परीक्षण वैश्विक और स्थानीय मोरन के I के लिए; और स्थानिक ऑटोरैसिविव (SAR) अंतराल और त्रुटि मॉडल, अंतराल मॉडल के लिए प्रभाव उपायों का आकलन करने के लिए कार्य

आप कम से कम परीक्षण कर सकते हैं यदि आपके बिंदुओं को बेतरतीब ढंग से स्थानिक रूप से वितरित किया जाता है (संभवतः स्थानिक दूरी पर विचार करते समय एक उपयोगी परीक्षण पूर्व-क्लस्टरिंग), लेकिन यह अन्य उपयोगी उपाय भी उत्पन्न कर सकता है जो आप अपने क्लस्टरिंग एल्गोरिथ्म में इनपुट कर सकते हैं। अंत में, शायद आपको https://stats.stackexchange.com/ पर स्थानिक क्लस्टरिंग मुद्दों (हालांकि, सैद्धांतिक दृष्टिकोण से अधिक) से निपटने पर उपयोगी प्रश्न मिल सकते हैं ।


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

2

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


-2

जियोस्फीयर पैकेज डिस्टेंस फंक्शन या फॉसिल डीएलडिस्ट फंक्शन की जाँच करें। आपके पास डिग्री में डेटा है और क्लस्टरिंग करने से पहले इसे मीटर या पैरों में अनुवाद करना होगा।

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