R gstat krige () - स्थान पर सहसंयोजक मैट्रिक्स एकवचन [5.88,47.4,0]: फिसलन


10

जब मैं क्रैगिंग करना चाहता हूं तो यह कभी-कभी ही काम करता है, यह इस बात पर निर्भर करता है कि मैं अपने डेटाटेबल में किन मूल्यों का उपयोग करता हूं। क्रिगे फ़ंक्शन के परिणामस्वरूप मैं प्राप्त करता हूं var1.pred: NA NA NA ...और var1.var: NA NA NA ...(लेकिन केवल तभी जब मैं अपने डेटाटेबल में "गलत" मानों का उपयोग करता हूं।)

उदाहरण के लिए:

  • यह हमेशा (अब तक) काम करता है जब मैं केवल 10 मानों का उपयोग करता हूं
  • यह तब काम करता है जब मैं 50 मानों का उपयोग करता हूं, लेकिन केवल कुछ लोगों के साथ
  • यह तब काम करता है जब मैं 50 मूल्यों और "गलत" मूल्यों का उपयोग करता हूं
  • यह तब काम करता है जब मैं 25 मूल्यों और पहले उल्लेखित "गलत" मूल्यों का उपयोग करता हूं

मुझे नहीं लगता कि यह कभी-कभी काम कर रहा है और कभी-कभी नहीं। अजीब बात यह है कि जब मैं Zwiesel;49.02999878;13.22999954;2.2काम करने योग्य में जोड़ता हूं तो यह तब काम करता है जब मैं कम उपयोग करता हूं ~ 20 मान, लेकिन जब मैं अधिक उपयोग करता हूं तो यह काम नहीं करता है तब 50 मान ...

मेरी गलती कहाँ है?

myWeatherTable.csv:

Place;Latitude;Longitude;Temperature
Aachen;50.77999878;6.09999990;3
Abbikenhausen;53.52999878;8.00000000;7.9
Adelbach;49.04000092;9.76000023;3.1
Adendorf;51.61999893;11.69999981;1.9
Alberzell;48.45999908;11.34000015;4.6
...
...

मेरा कोड क्रिपिंग प्रक्षेप करने के लिए

WeatherData <- read.csv(file="myWeatherTable", header = TRUE, sep ";")

coordinates(WeatherData) = ~Longitude + Latitude

vario <-  variogram(log(Temperature) ~1, WeatherData)
vario.fit <- fit.variogram(vario, vgm("Sph"))

min_lon <- min(WeatherData$Longitude)
max_lon <- max(WeatherData$Longitude)
min_lat <- min(WeatherData$Latitude)
max_lat <- max(WeatherData$Latitude)
Longitude.range <- as.numeric(c(min_lon,max_lon))
Latitude.range <- as.numeric(c(min_lat,max_lat))
grd <- expand.grid(Longitude = seq(from = Longitude.range[1], to = Longitude.range[2], by = 0.1),
  Latitude = seq(from = Latitude.range[1],to = Latitude.range[2], by = 0.1))
coordinates(grd) <- ~Longitude + Latitude
gridded(grd) <- TRUE

plot1 <- WU_data_spatial %>% as.data.frame %>%
  ggplot(aes(Longitude, Latitude)) + geom_point(size=1) + coord_equal() + 
  ggtitle("Points with measurements")

plot2 <- grd %>% as.data.frame %>%
  ggplot(aes(Longitude, Latitude)) + geom_point(size=1) + coord_equal() + 
  ggtitle("Points at which to estimate")

grid.arrange(plot1, plot2, ncol = 2)

kriged <- krige(Temperature~ 1, WeatherData, grd, model=variogram_fit)

चेतावनी :

1: In predict.gstat(g, newdata = newdata, block = block,  ... :
Covariance matrix singular at location [5.88,47.4,0]: skipping...
2: In predict.gstat(g, newdata = newdata, block = block,  ... :
Covariance matrix singular at location [5.98,47.4,0]: skipping...
3: In predict.gstat(g, newdata = newdata, block = block,  ... :
Covariance matrix singular at location [6.08,47.4,0]: skipping...
4: In predict.gstat(g, newdata = newdata, block = block,  ... :
Covariance matrix singular at location [6.18,47.4,0]: skipping...
...
...

जवाबों:


16

यह त्रुटि आमतौर पर वापस आ जाती है क्योंकि आपके पास डुप्लिकेट स्थान हैं। आप sp::zerodistफ़ंक्शन का उपयोग करके इसे देख सकते हैं ।

डुप्लिकेट स्थानों को हटाने के लिए आप sp::zerodistएक ब्रैकेट इंडेक्स में कॉल करते हैं।

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