Why OrdinaryKriging predict the same value for different points? #204
-
I have some air quality data, which have latitude and longitude and a quality value.
And my problem is that, for different points, why the predict values are very close or even the same? I have tried different variogram_function and it seems the 'spherical' is the best but just like: Any help will be appreciated :) |
Beta Was this translation helpful? Give feedback.
Replies: 10 comments 1 reply
-
Dear @lzeee, |
Beta Was this translation helpful? Give feedback.
-
thx for your reply :) |
Beta Was this translation helpful? Give feedback.
-
Dear @mjziebarth I just tried to project the lat/lon to UTM first using the python lib pyproj and turn to the 'euclidean' OrdinaryKriging. But the result seems to be the same :( However, the results are not always a same value for different points. I have many data of different time. Some data will get different values for different points. But the 'same' circumstance appears quite frequently. I wonder if I should do some preprocess to my data or something else before using the kriging or the results are just the correct ones? |
Beta Was this translation helpful? Give feedback.
-
same thing happened to me. I trained the OK with 90 points in an area of 2000 km^2 and the subtraction of extreme lons and lats are all less than 1 degree. All the predicting values are same. |
Beta Was this translation helpful? Give feedback.
-
I have the same problem,did you find the solution to this problem? |
Beta Was this translation helpful? Give feedback.
-
I finally adopted Inverse Distance Weighted (IDW) interpolation in my work. If you insist in using Kriging method in python, then you may try the related module in ArcGis, which can be transplant into python (I heard it). |
Beta Was this translation helpful? Give feedback.
-
|
Beta Was this translation helpful? Give feedback.
-
I had this issue too. I came up with a crude fix with these assumptions for the variogram: k_model: OrdinaryKriging = OrdinaryKriging(np.array(x), np.array(y), np.array(z),
variogram_model="gaussian",
variogram_parameters={'sill': (max(z)-min(z))*0.9,
'range': 0.8*((max(x)-min(x))**2 + (max(y)-min(y))**2)**0.5,
'nugget': (max(z)-min(z))*0.05},
exact_values=False) Note my import utm
utm.from_latlon() It's not the best, but better than the current. |
Beta Was this translation helpful? Give feedback.
-
@MuellerSeb Have you thought about this? Did my fix give you any clues? |
Beta Was this translation helpful? Give feedback.
-
This is most likely related to the estimated variogram parameters. When a single value is estimated everywhere, this is a sign, that a pure nugget model was estimated and that the standard variogram estimating routine could find any spatial correlation in the data. You could either use predefined variogram parameters as suggested above, or you could use GSTools to futher analyze the estimated variogram and try find a better setup to estimated the empirical variogram, so the fitting afterwards leads to more useful parameters. See here for interfacing with GSTools: |
Beta Was this translation helpful? Give feedback.
This is most likely related to the estimated variogram parameters. When a single value is estimated everywhere, this is a sign, that a pure nugget model was estimated and that the standard variogram estimating routine could find any spatial correlation in the data.
You could either use predefined variogram parameters as suggested above, or you could use GSTools to futher analyze the estimated variogram and try find a better setup to estimated the empirical variogram, so the fitting afterwards leads to more useful parameters.
See here for interfacing with GSTools: