Lorsque je veux effectuer le krigeage, cela ne fonctionne que parfois, selon les valeurs que j'utilise dans ma table de données. En raison de la fonction krige que j'obtiens pour var1.pred: NA NA NA ...
et var1.var: NA NA NA ...
(mais uniquement lorsque j'utilise les "mauvaises" valeurs dans ma table de données.)
Par exemple:
- ça marche toujours (jusqu'à présent) quand je n'utilise que 10 valeurs
- ça marche quand j'utilise 50 valeurs, mais seulement avec certaines
- cela ne fonctionne pas lorsque j'utilise 50 valeurs et les «mauvaises» valeurs
- cela fonctionne lorsque j'utilise 25 valeurs et les «mauvaises» valeurs mentionnées ci-dessus
Je ne comprends pas pourquoi cela fonctionne parfois et parfois non. Ce qui est étrange, c'est que lorsque j'ajoute Zwiesel;49.02999878;13.22999954;2.2
à la table de données, cela fonctionne lorsque j'utilise moins de ~ 20 valeurs, mais cela ne fonctionne pas lorsque j'utilise plus de 50 valeurs ...
Où est mon erreur?
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
...
...
Mon code pour effectuer une interpolation de krigeage
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)
Avertissements :
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...
...
...
la source