Title: | Spatially Varying and Spatio-Temporal Dynamic Linear Models |
---|---|
Description: | Fits, spatially predicts, and temporally forecasts space-time data using Gaussian Process (GP): (1) spatially varying coefficient process models and (2) spatio-temporal dynamic linear models. Bakar et al., (2016). Bakar et al., (2015). |
Authors: | K. Shuvo Bakar [aut, cre] , Philip Kokic [ctb], Huidong Jin [ctb] |
Maintainer: | K. Shuvo Bakar <[email protected]> |
License: | GPL (>= 2) |
Version: | 2.0.3 |
Built: | 2024-12-09 06:50:43 UTC |
Source: | CRAN |
This package uses different hierarchical Bayesian spatio-temporal modelling strategies, namely:
(1) Spatially varying coefficient process models,
(2) Temporally varying coefficient process models, also known as the spatio-temporal dynamic linear models.
Package: | spTDyn |
Type: | Package |
The back-end code of this package is built under c language.
Main functions used: > GibbsDyn
> predict.spTD
K.S. Bakar
Maintainer: K.S. Bakar <[email protected]>
Bakar, K. S., Kokic, P. and Jin, H. (2015). A spatio-dynamic model for assessing frost risk in south-eastern Australia. Journal of the Royal Statistical Society, Series C. DOI: 10.1111/rssc.12103
Bakar, K. S., Kokic, P. and Jin, H. (2015). Hierarchical spatially varying coefficient and temporal dynamic process models using spTDyn. Journal of Statistical Computation and Simulation. DOI:10.1080/00949655.2015.1038267
Packages 'spTimer'; 'forecast'; 'spBayes'; 'maps'; 'MBA'; 'coda'; website: http://www.r-project.org/
.
.This function initialises the sampling method for the spatial decay parameter .
decay(distribution=Gamm(a=2,b=1), tuning=NULL, npoints=NULL, value=NULL)
decay(distribution=Gamm(a=2,b=1), tuning=NULL, npoints=NULL, value=NULL)
distribution |
Prior distribution for |
tuning |
If the Gamma prior distribution is used then we need to define the tuning parameter for sampling |
npoints |
If Unif distribution is used then need to define the number of segments for the range of limits by npoints. Default value is 5. |
value |
If distribution="FIXED" type is used then need to define the value for |
## # input for random-walk Metropolis within Gibbs # sampling for phi parameter spatial.decay<-decay(distribution=Gamm(2,1), tuning=0.08) # input for discrete sampling of phi parameter # with uniform prior distribution spatial.decay<-decay(distribution=Unif(0.01,0.02),npoints=5) # input for spatial decay if FIXED is used spatial.decay<-decay(distribution="FIXED", value=0.01) ##
## # input for random-walk Metropolis within Gibbs # sampling for phi parameter spatial.decay<-decay(distribution=Gamm(2,1), tuning=0.08) # input for discrete sampling of phi parameter # with uniform prior distribution spatial.decay<-decay(distribution=Unif(0.01,0.02),npoints=5) # input for spatial decay if FIXED is used spatial.decay<-decay(distribution="FIXED", value=0.01) ##
This function defines the time series in the spatio-temporal data.
def.time(t.series, segments=1)
def.time(t.series, segments=1)
t.series |
Number of times within each segment in each series. Can take only regular time-series. |
segments |
Number of segments in each time series. This should be a constant. |
## # regular time-series in each year time.data<-def.time(t.series=30,segments=2) ##
## # regular time-series in each year time.data<-def.time(t.series=30,segments=2) ##
This function is used to draw MCMC samples using the Gibbs sampler.
GibbsDyn(formula, data=parent.frame(), model="GP", time.data=NULL, coords, priors=NULL, initials=NULL, nItr=5000, nBurn=1000, report=1, tol.dist=0.05, distance.method="geodetic:km", cov.fnc="exponential", scale.transform="NONE", spatial.decay=decay(distribution="FIXED"),truncation.para=list(at=0,lambda=2))
GibbsDyn(formula, data=parent.frame(), model="GP", time.data=NULL, coords, priors=NULL, initials=NULL, nItr=5000, nBurn=1000, report=1, tol.dist=0.05, distance.method="geodetic:km", cov.fnc="exponential", scale.transform="NONE", spatial.decay=decay(distribution="FIXED"),truncation.para=list(at=0,lambda=2))
formula |
The symnbolic description of the model equation of the regression part of the space-time model. The terms sp and tp are used to define spatially and temporally varying parameters for the model. |
data |
An optional data frame containing the variables in the model. If omitted, the variables are taken from environment(formula), typically the environment from which spT.Gibbs is called. The data should be ordered first by the time and then by the sites specified by the |
model |
The spatio-temporal models to be fitted, current choices are: "GP", and "truncated", with the first one as the default. |
time.data |
Defining the segments of the time-series set up using the function |
coords |
The n by 2 matrix or data frame defining the locations (e.g., longitude/easting, latitude/northing) of the fitting sites, where n is the number of fitting sites. One can also supply coordinates through a formula argument such as ~Longitude+Latitude. |
priors |
The prior distributions for the parameters. Default distributions are specified if these are not provided. If priors=NULL a flat prior distribution will be used with large variance. See details in |
initials |
The preferred initial values for the parameters. If omitted, default values are provided automatically. Further details are provided in |
nItr |
Number of MCMC iterations. Default value is 5000. |
nBurn |
Number of burn-in samples. This number of samples will be discarded before making any inference. Default value is 1000. |
report |
Number of reports to display while running the Gibbs sampler. Defaults to number of iterations. |
distance.method |
The preferred method to calculate the distance between any two locations. The available options are "geodetic:km", "geodetic:mile", "euclidean", "maximum", "manhattan", and "canberra". See details in |
tol.dist |
Minimum separation distance between any two locations out of those specified by coords, knots.coords and pred.coords. The default is 0.005. The programme will exit if the minimum distance is less than the non-zero specified value. This will ensure non-singularity of the covariance matrices. |
cov.fnc |
Covariance function for the spatial effects. The available options are "exponential", "gaussian", "spherical" and "matern". If "matern" is used then by default the smooth parameter ( |
scale.transform |
The transformation method for the response variable. Currently implemented options are: "NONE", "SQRT", and "LOG" with "NONE" as the deault. |
spatial.decay |
Provides the prior distribution for the spatial decay parameter |
truncation.para |
Provides truncation parameter |
accept |
The acceptance rate for the |
phip |
MCMC samples for the parameter |
nup |
MCMC samples for the parameter |
sig2eps |
MCMC samples for the parameter |
sig2etap |
MCMC samples for the parameter |
sig2betap |
MCMC samples for the parameter |
sig2deltap |
MCMC samples for the parameter |
sig2op |
MCMC samples for the parameter |
betap |
MCMC samples for the parameter |
rhop |
MCMC samples for |
op |
MCMC samples for the true observations. |
fitted |
MCMC summary (mean and sd) for the fitted values. |
tol.dist |
Minimum tolerance distance limit between the locations. |
distance.method |
Name of the distance calculation method. |
cov.fnc |
Name of the covariance function used in model fitting. |
scale.transform |
Name of the scale.transformation method. |
sampling.sp.decay |
The method of sampling for the spatial decay parameter |
covariate.names |
Name of the covariates used in the model. |
Distance.matrix |
The distance matrix. |
coords |
The coordinate values. |
n |
Total number of sites. |
r |
Total number of segments in time, e.g., years. |
T |
Total points of time, e.g., days within each year. |
p |
Total number of model coefficients, i.e., |
initials |
The initial values used in the model. |
priors |
The prior distributions used in the model. |
PMCC |
The predictive model choice criteria obtained by minimising the expected value of a loss function, see Gelfand and Ghosh (1998). Results for both goodness of fit and penalty are given. |
iterations |
The number of samples for the MCMC chain, without burn-in. |
nBurn |
The number of burn-in period for the MCMC chain. |
computation.time |
The computation time required for the fitted model. |
Bakar, K. S., Kokic, P. and Jin, H. (2015). A spatio-dynamic model for assessing frost risk in south-eastern Australia. Journal of the Royal Statistical Society, Series C. Bakar, K. S., Kokic, P. and Jin, H. (2015). Hierarchical spatially varying coefficient and temporal dynamic process models using spTDyn. Journal of Statistical Computation and Simulation.
priors, initials, dist, sp, tp
.
## ########################### ## Attach library spTDyn ########################### library(spTDyn) ## Read Aus data ## data(AUSdata) # set a side data for validation library(spTimer) s<-c(1,4,10) AUSdataFit<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s, reverse=TRUE) AUSdataFit<-subset(AUSdataFit, with(AUSdataFit, !(year == 2009))) AUSdataPred<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataPred<-subset(AUSdataPred, with(AUSdataPred, !(year == 2009))) AUSdataFore<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataFore<-subset(AUSdataFore, with(AUSdataFore, (year == 2009))) ## Read NY data ## data(NYdata) # set a side data for validation s<-c(5,8,10,15,20,22,24,26) fday<-c(25:31) NYdataFit<-spT.subset(data=NYdata, var.name=c("s.index"), s=s, reverse=TRUE) NYdataFit<-subset(NYdataFit, with(NYdataFit, !(Day %in% fday & Month == 8))) NYdataPred<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataPred<-subset(NYdataPred, with(NYdataPred, !(Day %in% fday & Month == 8))) NYdataFore<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataFore<-subset(NYdataFore, with(NYdataFore, (Day %in% fday & Month == 8))) ## Code for analysing temperature data in Section: 4 ## ## Model: Spatially varying coefficient process models ## nItr<-13000 nBurn<-3000 # MCMC via Gibbs using defaults # Spatially varying coefficient process model library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.sp <- GibbsDyn(tmax ~ soi+sp(soi)+grid+sp(grid), data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06)) print(post.sp) ## Table: 3, Section: 4.1 ## post.sp$PMCC # parameter summary summary(post.sp) # without spatially varying coefficients summary(post.sp, coefficient="spatial") #plot(post.sp, density=FALSE) # without spatially varying coefficients #plot(post.sp, coefficient="spatial", density=FALSE) ## Code for Figures: 3(a), 3(b) Section: 4.1 ## Figure_3a<-function(){ boxplot(t(post.sp$betasp[1:9,]),pch=".",main="SOI", xlab="Sites",ylab="Values") } Figure_3b<-function(){ boxplot(t(post.sp$betasp[10:18,]),pch=".",main="Grid", xlab="Sites",ylab="Values") } Figure_3a() Figure_3b() ## spatial prediction set.seed(11) pred.sp <- predict(post.sp,newcoords=~lon+lat,newdata=AUSdataPred) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataPred$tmax,c(pred.sp$Mean)) plot(AUSdataPred$tmax,c(pred.sp$Mean)) ## temporal prediction set.seed(11) pred.sp.f <- predict(post.sp,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataFore$tmax,c(pred.sp.f$Mean)) plot(AUSdataFore$tmax,c(pred.sp.f$Mean)) ## Code for analysing Ozone data in Section: 4 ## ## Model: spatio-temporal DLM ## # MCMC via Gibbs using defaults # spatio-temporal DLM library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.tp <- GibbsDyn(o8hrmax ~ tp(cMAXTMP)-1, data=NYdataFit, nItr=nItr, nBurn=nBurn, coords=~Longitude+Latitude, initials=initials(rhotp=0), scale.transform="SQRT", spatial.decay=decay(distribution=Gamm(2,1),tuning=0.05)) print(post.tp) summary(post.tp) ## Table: 5, Section: 4.2 ## post.tp$PMCC ## Figure: 5, Section: 4.2 ## Figure_5<-function(){ stat<-apply(post.tp$betatp[1:55,],1,quantile,prob=c(0.025,0.5,0.975)) plot(stat[2,],type="p",lty=3,col=1,ylim=c(min(c(stat)),max(c(stat))), pch=19,ylab="",xlab="Days",axes=FALSE,main="cMAXTMP",cex=0.8) for(i in 1:55){ segments(i, stat[2,i], i, stat[3,i]) segments(i, stat[2,i], i, stat[1,i]) } axis(1,1:55,labels=1:55);axis(2) abline(v=31.5,lty=2) text(15,0.32,"July"); text(45,0.32,"August"); } Figure_5() ## spatial prediction set.seed(11) pred.tp <- predict(post.tp, newdata=NYdataPred, newcoords=~Longitude+Latitude) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataPred$o8hrmax,c(pred.tp$Mean)) ## temporal prediction set.seed(11) pred.tp.f <- predict(post.tp, newdata=NYdataFore, newcoords=~Longitude+Latitude, type="temporal", foreStep=7) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataFore$o8hrmax,c(pred.tp.f$Mean)) ###################################################### ## The Truncated/Censored models: ###################################################### ## Read Aus data ## data(AUSdata) # set the truncation point at tmax=30 AUSdata$tmax <- replace(AUSdata$tmax, AUSdata$tmax<=30, 30) # set a side data for validation library(spTimer) s<-c(1,4,10) AUSdataFit<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s, reverse=TRUE) AUSdataFit<-subset(AUSdataFit, with(AUSdataFit, !(year == 2009))) AUSdataPred<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataPred<-subset(AUSdataPred, with(AUSdataPred, !(year == 2009))) AUSdataFore<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataFore<-subset(AUSdataFore, with(AUSdataFore, (year == 2009))) # nItr <- 5000 # number of MCMC samples for each model nBurn <- 1000 # number of burn-in from the MCMC samples # Truncation at 30 # fit truncated spatially varying model ## The Truncated/Censored spatially varying models: library("spTDyn", warn.conflicts = FALSE) set.seed(11) out <- GibbsDyn(tmax ~ soi+sp(soi)+grid+sp(grid),model="truncated", data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06), truncation.para = list(at = 30,lambda = 2)) print(out) summary(out) head(fitted(out)) plot(out,density=FALSE) # head(cbind(AUSdataFit$tmax,fitted(out)[,1])) plot(AUSdataFit$tmax,fitted(out)[,1]) spT.validation(AUSdataFit$tmax,fitted(out)[,1]) ## spatial prediction set.seed(11) pred.sp <- predict(out,newcoords=~lon+lat,newdata=AUSdataPred) spT.validation(AUSdataPred$tmax,c(pred.sp$Mean)) plot(AUSdataPred$tmax,c(pred.sp$Mean)) ## temporal prediction set.seed(11) pred.sp.f <- predict(out,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) spT.validation(AUSdataFore$tmax,c(pred.sp.f$Mean)) plot(AUSdataFore$tmax,c(pred.sp.f$Mean)) ## The Truncated/Censored temporal dynamic DLM models: library("spTDyn", warn.conflicts = FALSE) set.seed(11) out <- GibbsDyn(tmax ~ soi+tp(soi)+grid,model="truncated", data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06), truncation.para = list(at = 30,lambda = 2)) print(out) summary(out) head(fitted(out)) plot(out,density=FALSE) # head(cbind(AUSdataFit$tmax,fitted(out)[,1])) plot(AUSdataFit$tmax,fitted(out)[,1]) spT.validation(AUSdataFit$tmax,fitted(out)[,1]) ## spatial prediction set.seed(11) pred.tp <- predict(out,newcoords=~lon+lat,newdata=AUSdataPred) spT.validation(AUSdataPred$tmax,c(pred.tp$Mean)) plot(AUSdataPred$tmax,c(pred.tp$Mean)) ## temporal prediction set.seed(11) pred.tp.f <- predict(out,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) spT.validation(AUSdataFore$tmax,c(pred.tp.f$Mean)) plot(AUSdataFore$tmax,c(pred.tp.f$Mean)) ##############################################################################
## ########################### ## Attach library spTDyn ########################### library(spTDyn) ## Read Aus data ## data(AUSdata) # set a side data for validation library(spTimer) s<-c(1,4,10) AUSdataFit<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s, reverse=TRUE) AUSdataFit<-subset(AUSdataFit, with(AUSdataFit, !(year == 2009))) AUSdataPred<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataPred<-subset(AUSdataPred, with(AUSdataPred, !(year == 2009))) AUSdataFore<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataFore<-subset(AUSdataFore, with(AUSdataFore, (year == 2009))) ## Read NY data ## data(NYdata) # set a side data for validation s<-c(5,8,10,15,20,22,24,26) fday<-c(25:31) NYdataFit<-spT.subset(data=NYdata, var.name=c("s.index"), s=s, reverse=TRUE) NYdataFit<-subset(NYdataFit, with(NYdataFit, !(Day %in% fday & Month == 8))) NYdataPred<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataPred<-subset(NYdataPred, with(NYdataPred, !(Day %in% fday & Month == 8))) NYdataFore<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataFore<-subset(NYdataFore, with(NYdataFore, (Day %in% fday & Month == 8))) ## Code for analysing temperature data in Section: 4 ## ## Model: Spatially varying coefficient process models ## nItr<-13000 nBurn<-3000 # MCMC via Gibbs using defaults # Spatially varying coefficient process model library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.sp <- GibbsDyn(tmax ~ soi+sp(soi)+grid+sp(grid), data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06)) print(post.sp) ## Table: 3, Section: 4.1 ## post.sp$PMCC # parameter summary summary(post.sp) # without spatially varying coefficients summary(post.sp, coefficient="spatial") #plot(post.sp, density=FALSE) # without spatially varying coefficients #plot(post.sp, coefficient="spatial", density=FALSE) ## Code for Figures: 3(a), 3(b) Section: 4.1 ## Figure_3a<-function(){ boxplot(t(post.sp$betasp[1:9,]),pch=".",main="SOI", xlab="Sites",ylab="Values") } Figure_3b<-function(){ boxplot(t(post.sp$betasp[10:18,]),pch=".",main="Grid", xlab="Sites",ylab="Values") } Figure_3a() Figure_3b() ## spatial prediction set.seed(11) pred.sp <- predict(post.sp,newcoords=~lon+lat,newdata=AUSdataPred) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataPred$tmax,c(pred.sp$Mean)) plot(AUSdataPred$tmax,c(pred.sp$Mean)) ## temporal prediction set.seed(11) pred.sp.f <- predict(post.sp,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataFore$tmax,c(pred.sp.f$Mean)) plot(AUSdataFore$tmax,c(pred.sp.f$Mean)) ## Code for analysing Ozone data in Section: 4 ## ## Model: spatio-temporal DLM ## # MCMC via Gibbs using defaults # spatio-temporal DLM library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.tp <- GibbsDyn(o8hrmax ~ tp(cMAXTMP)-1, data=NYdataFit, nItr=nItr, nBurn=nBurn, coords=~Longitude+Latitude, initials=initials(rhotp=0), scale.transform="SQRT", spatial.decay=decay(distribution=Gamm(2,1),tuning=0.05)) print(post.tp) summary(post.tp) ## Table: 5, Section: 4.2 ## post.tp$PMCC ## Figure: 5, Section: 4.2 ## Figure_5<-function(){ stat<-apply(post.tp$betatp[1:55,],1,quantile,prob=c(0.025,0.5,0.975)) plot(stat[2,],type="p",lty=3,col=1,ylim=c(min(c(stat)),max(c(stat))), pch=19,ylab="",xlab="Days",axes=FALSE,main="cMAXTMP",cex=0.8) for(i in 1:55){ segments(i, stat[2,i], i, stat[3,i]) segments(i, stat[2,i], i, stat[1,i]) } axis(1,1:55,labels=1:55);axis(2) abline(v=31.5,lty=2) text(15,0.32,"July"); text(45,0.32,"August"); } Figure_5() ## spatial prediction set.seed(11) pred.tp <- predict(post.tp, newdata=NYdataPred, newcoords=~Longitude+Latitude) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataPred$o8hrmax,c(pred.tp$Mean)) ## temporal prediction set.seed(11) pred.tp.f <- predict(post.tp, newdata=NYdataFore, newcoords=~Longitude+Latitude, type="temporal", foreStep=7) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataFore$o8hrmax,c(pred.tp.f$Mean)) ###################################################### ## The Truncated/Censored models: ###################################################### ## Read Aus data ## data(AUSdata) # set the truncation point at tmax=30 AUSdata$tmax <- replace(AUSdata$tmax, AUSdata$tmax<=30, 30) # set a side data for validation library(spTimer) s<-c(1,4,10) AUSdataFit<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s, reverse=TRUE) AUSdataFit<-subset(AUSdataFit, with(AUSdataFit, !(year == 2009))) AUSdataPred<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataPred<-subset(AUSdataPred, with(AUSdataPred, !(year == 2009))) AUSdataFore<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataFore<-subset(AUSdataFore, with(AUSdataFore, (year == 2009))) # nItr <- 5000 # number of MCMC samples for each model nBurn <- 1000 # number of burn-in from the MCMC samples # Truncation at 30 # fit truncated spatially varying model ## The Truncated/Censored spatially varying models: library("spTDyn", warn.conflicts = FALSE) set.seed(11) out <- GibbsDyn(tmax ~ soi+sp(soi)+grid+sp(grid),model="truncated", data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06), truncation.para = list(at = 30,lambda = 2)) print(out) summary(out) head(fitted(out)) plot(out,density=FALSE) # head(cbind(AUSdataFit$tmax,fitted(out)[,1])) plot(AUSdataFit$tmax,fitted(out)[,1]) spT.validation(AUSdataFit$tmax,fitted(out)[,1]) ## spatial prediction set.seed(11) pred.sp <- predict(out,newcoords=~lon+lat,newdata=AUSdataPred) spT.validation(AUSdataPred$tmax,c(pred.sp$Mean)) plot(AUSdataPred$tmax,c(pred.sp$Mean)) ## temporal prediction set.seed(11) pred.sp.f <- predict(out,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) spT.validation(AUSdataFore$tmax,c(pred.sp.f$Mean)) plot(AUSdataFore$tmax,c(pred.sp.f$Mean)) ## The Truncated/Censored temporal dynamic DLM models: library("spTDyn", warn.conflicts = FALSE) set.seed(11) out <- GibbsDyn(tmax ~ soi+tp(soi)+grid,model="truncated", data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06), truncation.para = list(at = 30,lambda = 2)) print(out) summary(out) head(fitted(out)) plot(out,density=FALSE) # head(cbind(AUSdataFit$tmax,fitted(out)[,1])) plot(AUSdataFit$tmax,fitted(out)[,1]) spT.validation(AUSdataFit$tmax,fitted(out)[,1]) ## spatial prediction set.seed(11) pred.tp <- predict(out,newcoords=~lon+lat,newdata=AUSdataPred) spT.validation(AUSdataPred$tmax,c(pred.tp$Mean)) plot(AUSdataPred$tmax,c(pred.tp$Mean)) ## temporal prediction set.seed(11) pred.tp.f <- predict(out,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) spT.validation(AUSdataFore$tmax,c(pred.tp.f$Mean)) plot(AUSdataFore$tmax,c(pred.tp.f$Mean)) ##############################################################################
This command is useful to assign the initial values of the hyper-parameters of the prior distributions.
initials(sig2eps=0.01, sig2eta=NULL, sig2beta=NULL, sig2delta=NULL, rhotp=NULL, rho=NULL, beta=NULL, phi=NULL)
initials(sig2eps=0.01, sig2eta=NULL, sig2beta=NULL, sig2delta=NULL, rhotp=NULL, rho=NULL, beta=NULL, phi=NULL)
sig2eps |
Initial value for the parameter |
sig2eta |
Initial value for the parameter |
sig2beta |
Initial value for the parameter |
sig2delta |
Initial value for the parameter |
rhotp |
Value for the parameter |
rho |
Initial value for the parameter |
beta |
Initial value for the parameter |
phi |
Initial value for the parameter |
Initial values are automatically given if the user does not provide these.
## initials<-initials(sig2eps=0.01, sig2eta=0.5, beta=NULL, phi=0.001) initials ##
## initials<-initials(sig2eps=0.01, sig2eta=0.5, beta=NULL, phi=0.001) initials ##
These commands combine observation and nearest grid locations, data.
ObsGridLoc(obsLoc, gridLoc, distance.method="geodetic:km", plot=FALSE) gridTodata(gridData, gridLoc=NULL, gridLon=NULL, gridLat=NULL) ObsGridData(obsData, gridData, obsLoc, gridLoc, distance.method="geodetic:km")
ObsGridLoc(obsLoc, gridLoc, distance.method="geodetic:km", plot=FALSE) gridTodata(gridData, gridLoc=NULL, gridLon=NULL, gridLat=NULL) ObsGridData(obsData, gridData, obsLoc, gridLoc, distance.method="geodetic:km")
obsLoc |
The observed/measurement locations, first column is longitude/easting/x-axis and second column is latitude/northing/y-axis. |
gridLoc |
Grid locations, first column is longitude/easting/x-axis and second column is latitude/northing/y-axis. |
distance.method |
The preferred method to calculate the distance between any two locations. The available options are "geodetic:km", "geodetic:mile", "euclidean", "maximum", "manhattan", and "canberra". See details in |
plot |
Logical argument, if TRUE then plot observed and nearest grid locations. |
gridData |
Gridded data, should be in array form with dimenstions as longitude/x-axis, latitude/y-axis, day/time1, year/time2. |
gridLon |
Longitude/easting/x-axis of grid locations. |
gridLat |
Latitude/northing/y-axis of grid locations. |
obsData |
Observation data in data frame. |
## library(spTimer) data(NYdata) data(NYgrid) obsLoc<-unique(cbind(NYdata$Longitude,NYdata$Latitude)) gridLoc<-unique(cbind(NYgrid$Longitude,NYgrid$Latitude)) # find closest observed and grid locations dat<-ObsGridLoc(obsLoc, gridLoc) head(dat) # with plots dat<-ObsGridLoc(obsLoc, gridLoc, plot=TRUE) head(dat) # convert array gridData to spTimer data format gridData<-array(1:(10*10*31*2),dim=c(10,10,31,2)) # lon, lat, day, year dat<-gridTodata(gridData, gridLoc) head(dat) # combine observed and grid data and locations obsData<-NYdata gridData<-array(1:(10*10*31*2),dim=c(10,10,31,2)) # lon, lat, day, year dat<-ObsGridData(obsData, gridData, obsLoc, gridLoc) head(dat) # combine observed and more than one grid datasets obsData<-NYdata gridData1<-array(1:(10*10*31*2),dim=c(10,10,31,2)) # lon, lat, day, year gridData2<-array(((10*10*31*2)+1):(2*(10*10*31*2)),dim=c(10,10,31,2)) # lon, lat, day, year gridLoc1<-unique(cbind(NYgrid$Longitude,NYgrid$Latitude)) gridLoc2<-unique(cbind(NYgrid$Longitude,NYgrid$Latitude)) dat<-ObsGridData(obsData, gridData=list(gridData1,gridData2), obsLoc, gridLoc=list(gridLoc1, gridLoc2)) head(dat) ##
## library(spTimer) data(NYdata) data(NYgrid) obsLoc<-unique(cbind(NYdata$Longitude,NYdata$Latitude)) gridLoc<-unique(cbind(NYgrid$Longitude,NYgrid$Latitude)) # find closest observed and grid locations dat<-ObsGridLoc(obsLoc, gridLoc) head(dat) # with plots dat<-ObsGridLoc(obsLoc, gridLoc, plot=TRUE) head(dat) # convert array gridData to spTimer data format gridData<-array(1:(10*10*31*2),dim=c(10,10,31,2)) # lon, lat, day, year dat<-gridTodata(gridData, gridLoc) head(dat) # combine observed and grid data and locations obsData<-NYdata gridData<-array(1:(10*10*31*2),dim=c(10,10,31,2)) # lon, lat, day, year dat<-ObsGridData(obsData, gridData, obsLoc, gridLoc) head(dat) # combine observed and more than one grid datasets obsData<-NYdata gridData1<-array(1:(10*10*31*2),dim=c(10,10,31,2)) # lon, lat, day, year gridData2<-array(((10*10*31*2)+1):(2*(10*10*31*2)),dim=c(10,10,31,2)) # lon, lat, day, year gridLoc1<-unique(cbind(NYgrid$Longitude,NYgrid$Latitude)) gridLoc2<-unique(cbind(NYgrid$Longitude,NYgrid$Latitude)) dat<-ObsGridData(obsData, gridData=list(gridData1,gridData2), obsLoc, gridLoc=list(gridLoc1, gridLoc2)) head(dat) ##
This function is used to obtain MCMC summary, residual and fitted surface plots.
## S3 method for class 'spTD' plot(x, residuals=FALSE, coefficient=NULL, ...) ##
## S3 method for class 'spTD' plot(x, residuals=FALSE, coefficient=NULL, ...) ##
x |
Object of class inheriting from "spTD". |
residuals |
If TRUE then plot residual vs. fitted and normal qqplot of the residuals. If FALSE then plot MCMC samples of the parameters using coda package. Defaults value is FALSE. |
coefficient |
Takes values: "spatial", "temporal" and "rho" for summary statistics of spatial, temporal and rho coefficients respectively. If NULL then provides parameter plots without spatial and temporal coefficients. |
... |
Other arguments. |
## Not run: ## plot(out) # where out is the output from spT class plot(out, residuals=TRUE) # where out is the output from spT class plot(out, coefficient="spatial") # for spatially varying coefficients ## ## End(Not run)
## Not run: ## plot(out) # where out is the output from spT class plot(out, residuals=TRUE) # where out is the output from spT class plot(out, coefficient="spatial") # for spatially varying coefficients ## ## End(Not run)
This function is used to obtain spatial predictions in the unknown locations and also to get the temporal forecasts using MCMC samples.
## S3 method for class 'spTD' predict(object, newdata, newcoords, foreStep=NULL, type="spatial", nBurn, tol.dist, Summary=TRUE, ...)
## S3 method for class 'spTD' predict(object, newdata, newcoords, foreStep=NULL, type="spatial", nBurn, tol.dist, Summary=TRUE, ...)
object |
Object of class inheriting from "spTD". |
newdata |
The data set providing the covariate values for spatial prediction or temporal forecasts. This data should have the same space-time structure as the original data frame. |
newcoords |
The coordinates for the prediction or forecast sites. The locations are in similar format to |
foreStep |
Number of K-step (time points) ahead forecast, K=1,2, ...; Only applicable if type="temporal". |
type |
If the value is "spatial" then only spatial prediction will be performed at the |
nBurn |
Number of burn-in. Initial MCMC samples to discard before making inference. |
tol.dist |
Minimum tolerance distance limit between fitted and predicted locations. |
Summary |
To obtain summary statistics for the posterior predicted MCMC samples. Default is TRUE. |
... |
Other arguments. |
pred.samples or fore.samples |
Prediction or forecast MCMC samples. |
pred.coords or fore.coords |
prediction or forecast coordinates. |
Mean |
Average of the MCMC predictions |
Median |
Median of the MCMC predictions |
SD |
Standard deviation of the MCMC predictions |
Low |
Lower limit for the 95 percent CI of the MCMC predictions |
Up |
Upper limit for the 95 percent CI of the MCMC predictions |
computation.time |
The computation time. |
model |
The model method used for prediction. |
type |
"spatial" or "temporal". |
... |
Other values "obsData", "fittedData" and "residuals" are provided only for temporal prediction. |
Bakar, K. S., Kokic, P. and Jin, H. (2015). A spatio-dynamic model for assessing frost risk in south-eastern Australia. Journal of the Royal Statistical Society, Series C. Bakar, K. S., Kokic, P. and Jin, H. (2015). Hierarchical spatially varying coefficient and temporal dynamic process models using spTDyn. Journal of Statistical Computation and Simulation.
## library(spTDyn) ## Read Aus data ## data(AUSdata) # set a side data for validation s<-c(1,4,10) AUSdataFit<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s, reverse=TRUE) AUSdataFit<-subset(AUSdataFit, with(AUSdataFit, !(year == 2009))) AUSdataPred<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataPred<-subset(AUSdataPred, with(AUSdataPred, !(year == 2009))) AUSdataFore<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataFore<-subset(AUSdataFore, with(AUSdataFore, (year == 2009))) ## Read NY data ## data(NYdata) # set a side data for validation s<-c(5,8,10,15,20,22,24,26) fday<-c(25:31) NYdataFit<-spT.subset(data=NYdata, var.name=c("s.index"), s=s, reverse=TRUE) NYdataFit<-subset(NYdataFit, with(NYdataFit, !(Day %in% fday & Month == 8))) NYdataPred<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataPred<-subset(NYdataPred, with(NYdataPred, !(Day %in% fday & Month == 8))) NYdataFore<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataFore<-subset(NYdataFore, with(NYdataFore, (Day %in% fday & Month == 8))) ## Code for analysing temperature data in Section: 4 ## ## Model: Spatially varying coefficient process models ## nItr<-13000 nBurn<-3000 # MCMC via Gibbs using defaults # Spatially varying coefficient process model library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.sp <- GibbsDyn(tmax ~ soi+sp(soi)+grid+sp(grid), data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06)) print(post.sp) ## Table: 3, Section: 4.1 ## post.sp$PMCC # parameter summary summary(post.sp) # without spatially varying coefficients summary(post.sp, coefficient="spatial") #plot(post.sp, density=FALSE) # without spatially varying coefficients #plot(post.sp, coefficient="spatial", density=FALSE) ## Code for Figures: 3(a), 3(b) Section: 4.1 ## Figure_3a<-function(){ boxplot(t(post.sp$betasp[1:9,]),pch=".",main="SOI", xlab="Sites",ylab="Values") } Figure_3b<-function(){ boxplot(t(post.sp$betasp[10:18,]),pch=".",main="Grid", xlab="Sites",ylab="Values") } Figure_3a() Figure_3b() ## spatial prediction set.seed(11) pred.sp <- predict(post.sp,newcoords=~lon+lat,newdata=AUSdataPred) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataPred$tmax,c(pred.sp$Mean)) plot(AUSdataPred$tmax,c(pred.sp$Mean)) ## temporal prediction set.seed(11) pred.sp.f <- predict(post.sp,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataFore$tmax,c(pred.sp.f$Mean)) plot(AUSdataFore$tmax,c(pred.sp.f$Mean)) ## Code for analysing Ozone data in Section: 4 ## ## Model: spatio-temporal DLM ## # MCMC via Gibbs using defaults # spatio-temporal DLM library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.tp <- GibbsDyn(o8hrmax ~ tp(cMAXTMP)-1, data=NYdataFit, nItr=nItr, nBurn=nBurn, coords=~Longitude+Latitude, initials=initials(rhotp=0), scale.transform="SQRT", spatial.decay=decay(distribution=Gamm(2,1),tuning=0.05)) print(post.tp) summary(post.tp) ## Table: 5, Section: 4.2 ## post.tp$PMCC ## Figure: 5, Section: 4.2 ## Figure_5<-function(){ stat<-apply(post.tp$betatp[1:55,],1,quantile,prob=c(0.025,0.5,0.975)) plot(stat[2,],type="p",lty=3,col=1,ylim=c(min(c(stat)),max(c(stat))), pch=19,ylab="",xlab="Days",axes=FALSE,main="cMAXTMP",cex=0.8) for(i in 1:55){ segments(i, stat[2,i], i, stat[3,i]) segments(i, stat[2,i], i, stat[1,i]) } axis(1,1:55,labels=1:55);axis(2) abline(v=31.5,lty=2) text(15,0.32,"July"); text(45,0.32,"August"); } Figure_5() ## spatial prediction set.seed(11) pred.tp <- predict(post.tp, newdata=NYdataPred, newcoords=~Longitude+Latitude) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataPred$o8hrmax,c(pred.tp$Mean)) ## temporal prediction set.seed(11) pred.tp.f <- predict(post.tp, newdata=NYdataFore, newcoords=~Longitude+Latitude, type="temporal", foreStep=7) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataFore$o8hrmax,c(pred.tp.f$Mean)) ##############################################################################
## library(spTDyn) ## Read Aus data ## data(AUSdata) # set a side data for validation s<-c(1,4,10) AUSdataFit<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s, reverse=TRUE) AUSdataFit<-subset(AUSdataFit, with(AUSdataFit, !(year == 2009))) AUSdataPred<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataPred<-subset(AUSdataPred, with(AUSdataPred, !(year == 2009))) AUSdataFore<-spT.subset(data=AUSdata, var.name=c("s.index"), s=s) AUSdataFore<-subset(AUSdataFore, with(AUSdataFore, (year == 2009))) ## Read NY data ## data(NYdata) # set a side data for validation s<-c(5,8,10,15,20,22,24,26) fday<-c(25:31) NYdataFit<-spT.subset(data=NYdata, var.name=c("s.index"), s=s, reverse=TRUE) NYdataFit<-subset(NYdataFit, with(NYdataFit, !(Day %in% fday & Month == 8))) NYdataPred<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataPred<-subset(NYdataPred, with(NYdataPred, !(Day %in% fday & Month == 8))) NYdataFore<-spT.subset(data=NYdata, var.name=c("s.index"), s=s) NYdataFore<-subset(NYdataFore, with(NYdataFore, (Day %in% fday & Month == 8))) ## Code for analysing temperature data in Section: 4 ## ## Model: Spatially varying coefficient process models ## nItr<-13000 nBurn<-3000 # MCMC via Gibbs using defaults # Spatially varying coefficient process model library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.sp <- GibbsDyn(tmax ~ soi+sp(soi)+grid+sp(grid), data=AUSdataFit, nItr=nItr, nBurn=nBurn, coords=~lon+lat, spatial.decay=decay(distribution=Gamm(2,1),tuning=0.06)) print(post.sp) ## Table: 3, Section: 4.1 ## post.sp$PMCC # parameter summary summary(post.sp) # without spatially varying coefficients summary(post.sp, coefficient="spatial") #plot(post.sp, density=FALSE) # without spatially varying coefficients #plot(post.sp, coefficient="spatial", density=FALSE) ## Code for Figures: 3(a), 3(b) Section: 4.1 ## Figure_3a<-function(){ boxplot(t(post.sp$betasp[1:9,]),pch=".",main="SOI", xlab="Sites",ylab="Values") } Figure_3b<-function(){ boxplot(t(post.sp$betasp[10:18,]),pch=".",main="Grid", xlab="Sites",ylab="Values") } Figure_3a() Figure_3b() ## spatial prediction set.seed(11) pred.sp <- predict(post.sp,newcoords=~lon+lat,newdata=AUSdataPred) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataPred$tmax,c(pred.sp$Mean)) plot(AUSdataPred$tmax,c(pred.sp$Mean)) ## temporal prediction set.seed(11) pred.sp.f <- predict(post.sp,type="temporal",foreStep=12, newcoords=~lon+lat, newdata=AUSdataFore) ## Table: 4, Section: 4.1, validations ## spT.validation(AUSdataFore$tmax,c(pred.sp.f$Mean)) plot(AUSdataFore$tmax,c(pred.sp.f$Mean)) ## Code for analysing Ozone data in Section: 4 ## ## Model: spatio-temporal DLM ## # MCMC via Gibbs using defaults # spatio-temporal DLM library("spTDyn", warn.conflicts = FALSE) set.seed(11) post.tp <- GibbsDyn(o8hrmax ~ tp(cMAXTMP)-1, data=NYdataFit, nItr=nItr, nBurn=nBurn, coords=~Longitude+Latitude, initials=initials(rhotp=0), scale.transform="SQRT", spatial.decay=decay(distribution=Gamm(2,1),tuning=0.05)) print(post.tp) summary(post.tp) ## Table: 5, Section: 4.2 ## post.tp$PMCC ## Figure: 5, Section: 4.2 ## Figure_5<-function(){ stat<-apply(post.tp$betatp[1:55,],1,quantile,prob=c(0.025,0.5,0.975)) plot(stat[2,],type="p",lty=3,col=1,ylim=c(min(c(stat)),max(c(stat))), pch=19,ylab="",xlab="Days",axes=FALSE,main="cMAXTMP",cex=0.8) for(i in 1:55){ segments(i, stat[2,i], i, stat[3,i]) segments(i, stat[2,i], i, stat[1,i]) } axis(1,1:55,labels=1:55);axis(2) abline(v=31.5,lty=2) text(15,0.32,"July"); text(45,0.32,"August"); } Figure_5() ## spatial prediction set.seed(11) pred.tp <- predict(post.tp, newdata=NYdataPred, newcoords=~Longitude+Latitude) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataPred$o8hrmax,c(pred.tp$Mean)) ## temporal prediction set.seed(11) pred.tp.f <- predict(post.tp, newdata=NYdataFore, newcoords=~Longitude+Latitude, type="temporal", foreStep=7) ## Table 6, Section: 4.2, validation ## spT.validation(NYdataFore$o8hrmax,c(pred.tp.f$Mean)) ##############################################################################
This command is useful to assign the hyper-parameters of the prior distributions.
priors(inv.var.prior=Gamm(a=2,b=1),beta.prior=Norm(0,10^10), rho.prior=Norm(0,10^10))
priors(inv.var.prior=Gamm(a=2,b=1),beta.prior=Norm(0,10^10), rho.prior=Norm(0,10^10))
inv.var.prior |
The hyper-parameter for the Gamma prior distribution (with mean = a/b) of the precision (inverse variance) model parameters (e.g., 1/ |
beta.prior |
The hyper-parameter for the Normal prior distribution of the |
rho.prior |
The hyper-parameter for the Normal prior distribution of the |
If no prior information are given (assigned as NULL), then it use flat prior values of the corresponding distributions. Gam
and Nor
refers to Gamma and Normal distributions respectively.
## library(spTimer) priors<-priors(inv.var.prior=Gamm(2,1), beta.prior=Norm(0,10^4)) priors ##
## library(spTimer) priors<-priors(inv.var.prior=Gamm(2,1), beta.prior=Norm(0,10^4)) priors ##
This function is used to define spatially varying coefficients within the formula for the Gaussian process spatio-dynamic and spatially varying coefficient process models.
sp(x)
sp(x)
x |
The variable/covariate for which spatially varying coefficient is defined. |
## ########################### ## Attach library spTimer ########################### library(spTDyn) ########################### ## The GP models: ########################### ## ## Model fitting ## # Read data data(NYdata); # Define the coordinates coords<-as.matrix(unique(cbind(NYdata[,2:3]))) # MCMC via Gibbs using default choices set.seed(11) post.gp <- GibbsDyn(formula=o8hrmax ~cMAXTMP+WDSP+sp(RH), data=NYdata, coords=coords, scale.transform="SQRT") print(post.gp)
## ########################### ## Attach library spTimer ########################### library(spTDyn) ########################### ## The GP models: ########################### ## ## Model fitting ## # Read data data(NYdata); # Define the coordinates coords<-as.matrix(unique(cbind(NYdata[,2:3]))) # MCMC via Gibbs using default choices set.seed(11) post.gp <- GibbsDyn(formula=o8hrmax ~cMAXTMP+WDSP+sp(RH), data=NYdata, coords=coords, scale.transform="SQRT") print(post.gp)
This function is used to obtain MCMC summary statistics.
## S3 method for class 'spTD' summary(object, digits=4, package="spTDyn", coefficient=NULL, ...) ##
## S3 method for class 'spTD' summary(object, digits=4, package="spTDyn", coefficient=NULL, ...) ##
object |
Object of class inheriting from "spTD". |
digits |
Rounds the specified number of decimal places (default 4). |
package |
If "coda" then summary statistics are given using coda package. Defaults value is "spTDyn". |
coefficient |
Takes values: "spatial", "temporal" and "rho" for summary statistics of spatial, temporal and rho coefficients respectively. If NULL then provides parameter summary without spatial and temporal coefficients. |
... |
Other arguments. |
sig2eps |
Summary statistics for |
sig2eta |
Summary statistics for |
phi |
Summary statistics for spatial decay parameter |
... |
Summary statistics for other parameters used in the models. |
## Not run: ## summary(out) # where out is the output from spT class summary(out, digit=2) # where out is the output from spT class summary(out, pack="coda") # where out is the output from spT class summary(out, coefficient="spatial") # for spatially varying coefficients summary(out, coefficient="temporal") # for temporally varying coefficients ## ## End(Not run)
## Not run: ## summary(out) # where out is the output from spT class summary(out, digit=2) # where out is the output from spT class summary(out, pack="coda") # where out is the output from spT class summary(out, coefficient="spatial") # for spatially varying coefficients summary(out, coefficient="temporal") # for temporally varying coefficients ## ## End(Not run)
This function is used to define dynamic time-series coefficients within the formula for the Gaussian process spatio-dynamic and spatio-temporal DLM.
tp(x)
tp(x)
x |
The variable/covariate for which time varying coefficient is defined. |
## ########################### ## Attach library spTimer ########################### library(spTDyn) ########################### ## The GP models: ########################### ## ## Model fitting ## # Read data data(NYdata); # Define the coordinates coords<-as.matrix(unique(cbind(NYdata[,2:3]))) # MCMC via Gibbs using default choices set.seed(11) post.gp <- GibbsDyn(formula=o8hrmax ~cMAXTMP+WDSP+tp(RH), data=NYdata, coords=coords, scale.transform="SQRT") print(post.gp) ##
## ########################### ## Attach library spTimer ########################### library(spTDyn) ########################### ## The GP models: ########################### ## ## Model fitting ## # Read data data(NYdata); # Define the coordinates coords<-as.matrix(unique(cbind(NYdata[,2:3]))) # MCMC via Gibbs using default choices set.seed(11) post.gp <- GibbsDyn(formula=o8hrmax ~cMAXTMP+WDSP+tp(RH), data=NYdata, coords=coords, scale.transform="SQRT") print(post.gp) ##