## Not run:
# rmvn <- function(n, mu=0, V = matrix(1)){
# p <- length(mu)
# if(any(is.na(match(dim(V),p))))
# stop("Dimension problem!")
# D <- chol(V)
# t(matrix(rnorm(n*p), ncol=p)%*%D + rep(mu,rep(n,p)))
# }
#
# set.seed(1)
#
# n <- 100
# coords <- cbind(runif(n,0,1), runif(n,0,1))
# X <- as.matrix(cbind(1, rnorm(n)))
#
# B <- as.matrix(c(1,5))
# p <- length(B)
#
# sigma.sq <- 2
# tau.sq <- 0.1
# phi <- 3/0.5
#
# D <- as.matrix(dist(coords))
# R <- exp(-phi*D)
# w <- rmvn(1, rep(0,n), sigma.sq*R)
# y <- rnorm(n, X%*%B + w, sqrt(tau.sq))
#
# n.samples <- 2000
#
# starting <- list("phi"=3/0.5, "sigma.sq"=50, "tau.sq"=1)
#
# tuning <- list("phi"=0.1, "sigma.sq"=0.1, "tau.sq"=0.1)
#
# priors.1 <- list("beta.Norm"=list(rep(0,p), diag(1000,p)),
# "phi.Unif"=c(3/1, 3/0.1), "sigma.sq.IG"=c(2, 2),
# "tau.sq.IG"=c(2, 0.1))
#
# priors.2 <- list("beta.Flat", "phi.Unif"=c(3/1, 3/0.1),
# "sigma.sq.IG"=c(2, 2), "tau.sq.IG"=c(2, 0.1))
#
# cov.model <- "exponential"
#
# n.report <- 500
# verbose <- TRUE
#
# m.1 <- spLM(y~X-1, coords=coords, starting=starting,
# tuning=tuning, priors=priors.1, cov.model=cov.model,
# n.samples=n.samples, verbose=verbose, n.report=n.report)
#
# m.2 <- spLM(y~X-1, coords=coords, starting=starting,
# tuning=tuning, priors=priors.2, cov.model=cov.model,
# n.samples=n.samples, verbose=verbose, n.report=n.report)
#
# burn.in <- 0.5*n.samples
#
# ##recover beta and spatial random effects
# m.1 <- spRecover(m.1, start=burn.in, verbose=FALSE)
# m.2 <- spRecover(m.2, start=burn.in, verbose=FALSE)
#
# round(summary(m.1$p.theta.recover.samples)$quantiles[,c(3,1,5)],2)
# round(summary(m.2$p.theta.recover.samples)$quantiles[,c(3,1,5)],2)
#
# round(summary(m.1$p.beta.recover.samples)$quantiles[,c(3,1,5)],2)
# round(summary(m.2$p.beta.recover.samples)$quantiles[,c(3,1,5)],2)
#
# m.1.w.summary <- summary(mcmc(t(m.1$p.w.recover.samples)))$quantiles[,c(3,1,5)]
# m.2.w.summary <- summary(mcmc(t(m.2$p.w.recover.samples)))$quantiles[,c(3,1,5)]
#
# plot(w, m.1.w.summary[,1], xlab="Observed w", ylab="Fitted w",
# xlim=range(w), ylim=range(m.1.w.summary), main="Spatial random effects")
# arrows(w, m.1.w.summary[,1], w, m.1.w.summary[,2], length=0.02, angle=90)
# arrows(w, m.1.w.summary[,1], w, m.1.w.summary[,3], length=0.02, angle=90)
# lines(range(w), range(w))
#
# points(w, m.2.w.summary[,1], col="blue", pch=19, cex=0.5)
# arrows(w, m.2.w.summary[,1], w, col="blue", m.2.w.summary[,2], length=0.02, angle=90)
# arrows(w, m.2.w.summary[,1], w, col="blue", m.2.w.summary[,3], length=0.02, angle=90)
#
# ###########################
# ##Predictive process model
# ###########################
# m.1 <- spLM(y~X-1, coords=coords, knots=c(6,6,0.1), starting=starting,
# tuning=tuning, priors=priors.1, cov.model=cov.model,
# n.samples=n.samples, verbose=verbose, n.report=n.report)
#
# m.2 <- spLM(y~X-1, coords=coords, knots=c(6,6,0.1), starting=starting,
# tuning=tuning, priors=priors.2, cov.model=cov.model,
# n.samples=n.samples, verbose=verbose, n.report=n.report)
#
# burn.in <- 0.5*n.samples
#
# round(summary(window(m.1$p.beta.samples, start=burn.in))$quantiles[,c(3,1,5)],2)
# round(summary(window(m.2$p.beta.samples, start=burn.in))$quantiles[,c(3,1,5)],2)
#
# round(summary(window(m.1$p.theta.samples, start=burn.in))$quantiles[,c(3,1,5)],2)
# round(summary(window(m.2$p.theta.samples, start=burn.in))$quantiles[,c(3,1,5)],2)
# ## End(Not run)
Run the code above in your browser using DataLab