if (FALSE) {
## Load the included uranium datasets for use in this example
data(NURE)
## Geostatistical analysis of areal measurements
NURE.ctrl1 <- ramps.control(
iter = 25,
beta = param(0, "flat"),
sigma2.e = param(1, "invgamma", shape = 2.0, scale = 0.1, tuning = 0.75),
phi = param(10, "uniform", min = 0, max = 35, tuning = 0.50),
sigma2.z = param(1, "invgamma", shape = 2.0, scale = 0.1)
)
NURE.fit1 <- georamps(log(ppm) ~ 1,
correlation = corRExp(form = ~ lon + lat, metric = "haversine"),
weights = area,
data = NURE,
subset = (measurement == 1),
aggregate = list(grid = NURE.grid, blockid = "id"),
control = NURE.ctrl1
)
print(NURE.fit1)
summary(NURE.fit1)
## Analysis of point-source measurements
NURE.ctrl2 <- ramps.control(
iter = 25,
beta = param(0, "flat"),
sigma2.e = param(1, "invgamma", shape = 2.0, scale = 0.1, tuning = 0.75),
phi = param(10, "uniform", min = 0, max = 35, tuning = 0.5),
sigma2.z = param(1, "invgamma", shape = 2.0, scale = 0.1)
)
NURE.fit2 <- georamps(log(ppm) ~ 1,
correlation = corRExp(form = ~ lon + lat, metric = "haversine"),
data = NURE,
subset = (measurement == 2),
control = NURE.ctrl2
)
print(NURE.fit2)
summary(NURE.fit2)
## Joint analysis of areal and point-source measurements with
## prediction only at grid sites
NURE.ctrl <- ramps.control(
iter = 25,
beta = param(rep(0, 2), "flat"),
sigma2.e = param(rep(1, 2), "invgamma", shape = 2.0, scale = 0.1, tuning = 0.75),
phi = param(10, "uniform", min = 0, max = 35, tuning = 0.5),
sigma2.z = param(1, "invgamma", shape = 2.0, scale = 0.1),
z.monitor = NURE.grid
)
NURE.fit <- georamps(log(ppm) ~ factor(measurement) - 1,
correlation = corRExp(form = ~ lon + lat, metric = "haversine"),
variance = list(fixed = ~ measurement),
weights = area * (measurement == 1) + (measurement == 2),
data = NURE,
aggregate = list(grid = NURE.grid, blockid = "id"),
control = NURE.ctrl
)
print(NURE.fit)
summary(NURE.fit)
## Discard initial 5 MCMC samples as a burn-in sequence
fit <- window(NURE.fit, iter = 6:25)
print(fit)
summary(fit)
## Deviance Information Criterion
DIC(fit)
## Prediction at unmeasured sites
ct <- map("state", "connecticut", plot = FALSE)
lon <- seq(min(ct$x, na.rm = TRUE), max(ct$x, na.rm = TRUE), length = 20)
lat <- seq(min(ct$y, na.rm = TRUE), max(ct$y, na.rm = TRUE), length = 15)
grid <- expand.grid(lon, lat)
newsites <- data.frame(lon = grid[,1], lat = grid[,2],
measurement = 1)
pred <- predict(fit, newsites)
plot(pred, func = function(x) exp(mean(x)),
database = "state", regions = "connecticut",
resolution = c(200, 150), bw = 5,
main = "Posterior Mean",
legend.args = list(text = "ppm", side = 3, line = 1))
plot(pred, func = function(x) exp(sd(x)),
database = "state", regions = "connecticut",
resolution = c(200, 150), bw = 5,
main = "Posterior Standard Deviation",
legend.args = list(text = "ppm", side = 3, line = 1))
}
Run the code above in your browser using DataLab