[R-sig-Geo] Spatio Temporal kriging in Gstat
Benedikt Graeler
benedikt.graeler at rub.de
Thu Jun 23 09:54:34 CEST 2016
Dear Dan,
the error occurs because your prior.stvgm is far from the structure of
your data. The following model provides better starting values:
prior.stvgm=vgmST(stModel="sumMetric",
space=vgm(0.1,"Exp",0.5,0.3),
time=vgm(0.1,"Exp",0.5,0.3),
joint=vgm(0.1,"Exp",0.5,0.3),
stAni=1)
To get a first "estimate", it is always useful to look at a plot of the
sample variogram (as in the spatial case):
plot(sample.stvgm, wireframe=T, scales=list(arrows=F))
From the plot, one can read spatial and temporal ranges, the magnitude
of variability and the ratios of nuggets and sills. Sometimes, one is
better of by starting with a simpler model (e.g. "pure" metric), as the
routines are more robust for less parameters, to get a first impression
of the range of parameters. Furthermore, the plot suggests that a much
smaller spatial upper boundary is sufficient, as the variogram surface
is mainly flat in the spatial dimension.
Spatio-temporal geostatistics remains tricky in terms of numerical
routines and model interpretation, we try to give some guidance
regarding gstat's functionalities in [1].
HTH,
Ben
[1] https://journal.r-project.org/archive/accepted/na-pebesma-heuvelink.pdf
On 21.06.2016 17:16, Dan Turenne wrote:
> Hello again,
>
>
> After some tinkering with my code last night I got the sample variogram to work however now I have encountered another issue. When attempting to use the fit.stVariogram function to fit the sample variogram I receive this error:
>
>
> Error in optim(extractPar(model), fitFun, ..., method = method, lower = lower, :
> non-finite value supplied by optim
>
>
> even if I specify the upper and lower arguments to be finite. Could this error be cause by the initial values that I set for the space, time and joint variograms? If so can anyone recommend a good paper/article about how to fit these three variograms? I have attached a link to my script and data below, if anyone has any insight as to why I am getting this error it would be appreciated. I tried to be as thorough as I could in my code commenting, please let me know if anything is unclear.
>
>
> https://www.dropbox.com/sh/7ccy5wu68gxf6sf/AACmk0AFxQvetunq4YPc9DXla?dl=0
>
>
> ________________________________
> From: R-sig-Geo <r-sig-geo-bounces at r-project.org> on behalf of Edzer Pebesma <edzer.pebesma at uni-muenster.de>
> Sent: June 21, 2016 1:52 AM
> To: r-sig-geo at r-project.org
> Subject: Re: [R-sig-Geo] Spatio Temporal kriging in Gstat
>
> This might be due to a bug (or feature) in the software caused by the
> sparseness in your data, which might be different from that used to test
> the software. Please make the data available (off-list), along with an R
> script, so we can try to reproduce the error message and look into it.
>
> On 21/06/16 04:11, Dan Turenne wrote:
>> My apologies, I accidentally sent an unfinished email, here is the complete version of my question
>>
>>
>> Hello R-Sig-Geo,
>>
>>
>> As part of my masters thesis I am attempting to use spatio-temporal regression kriging to make predictions with temperature data, and I was hoping that someone might be able to give some insight as to how the algorithms work in gstat. My data consists of daily temperature observations from April 1 to July 31, 2000. There are observations from 164 stations across these 122 days, however not all stations have observations on all days, making for a total of 19282 records.
>>
>>
>> I have tried to use an STSDF object but I have not had any success. I created an sp object of length 164 with the station locations:
>>
>>
>> sp = data.frame(long = stations$long, lat = stations$lat)
>>
>> coordinates(sp) = ~ long+lat
>>
>>
>> Then I created a vector of length 122 with the times the observations were recorded and a data vector of length 19282:
>>
>>
>> beginDate = as.Date(2000/04/01)
>>
>> endDate = as.Date(2000/07/31)
>>
>> times = as.POSIXct(seq(beginDate,endDate,by="days"))
>>
>>
>> data=data.frame(temps$residual)
>>
>>
>> And I also made an index detailing where observations are available, it looks like this with the first column representing spatial index and the second representing the time index
>>
>>
>> 1 1
>>
>> 2 1
>>
>> 3 1
>>
>> 4 1
>>
>>
>> st=STSDF(sp,time,data,index,endTime=delta(time))
>>
>>
>> however when I try to calculate the sample variogram I get the following error:
>>
>>
>> sample.stVariogram=variogramST(residual~1,data=st, tunit="days", tlags=1:7, progress=TRUE)
>>
>>
>>
>> Error in apply(do.call(cbind, lapply(ret, function(x) x$np)), 1, sum, :
>> dim(X) must have a positive length
>> In addition: There were 50 or more warnings (use warnings() to see the first 50)
>>
>>
>> All 50 of the errors are :
>>
>>
>> In is.na(data[[as.character(as.list(formula)[[2]])]]) :
>> is.na() applied to non-(list or vector) of type 'NULL'
>>
>>
>> Can anyone see what I am doing wrong or give me any pointers? This error is rather cryptic and I'm not quite sure what I'm doing wrong. Any help would be appreciated.
>>
>>
>> Many Thanks,
>>
>> Daniel Turenne
>>
>> University of Manitoba
>>
>>
>> [[alternative HTML version deleted]]
>>
>> _______________________________________________
>> R-sig-Geo mailing list
>> R-sig-Geo at r-project.org
>> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
> R-sig-Geo - R Special Interest Group on using Geographical ...<https://stat.ethz.ch/mailman/listinfo/r-sig-geo>
> stat.ethz.ch
> R-sig-Geo -- R Special Interest Group on using Geographical data and Mapping About R-sig-Geo
>
>
>
>>
>
> --
> Edzer Pebesma
> Institute for Geoinformatics (ifgi), University of M�nster
> Heisenbergstra�e 2, 48149 M�nster, Germany; +49 251 83 33081
> Journal of Statistical Software: http://www.jstatsoft.org/
> Computers & Geosciences: http://elsevier.com/locate/cageo/
> Spatial Statistics Society http://www.spatialstatistics.info
>
>
> [[alternative HTML version deleted]]
>
>
>
> _______________________________________________
> R-sig-Geo mailing list
> R-sig-Geo at r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-sig-geo
>
--
Dr. Benedikt Gräler
Institute of Hydrology
Ruhr University Bochum
Universitätsstraße 150
44801 Bochum
ben.graeler.org
+49 (0234) 32 - 27619
More information about the R-sig-Geo
mailing list