R gstat krige ()-위치 [5.88,47.4,0]에서 단일 공분산 행렬 : 건너 뛰기


10

kriging을 수행하려고 할 때 데이터 테이블에서 사용하는 값에 따라 때때로 작동합니다. krige 함수의 결과로 var1.pred: NA NA NA ...and 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],] 
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.