Spatial Point Patterns: Methodology and Applications with R
by Adrian Baddeley, Ege Rubak and Rolf Turner


R code for chapter 13

Below is the R code used to generate results and figures in chapter 13. The code is in a rather raw format extracted from the book manuscript files – please read the instructions for use if you haven’t done so yet. You can download the script here.

### R code from vignette source '13gibbs'
## Copyright (C) Adrian Baddeley, Ege Rubak and Rolf Turner

###################################################
### code chunk number 1: 13gibbs.Rnw:9-11
###################################################
source("R/startup.R")
requireversion(spatstat, "1.41-1.073")


###################################################
### code chunk number 2: HybridSvensk
###################################################
set.seed(191711)
fitH <- ppm(swedishpines~polynom(x,y,2), 
            Hybrid(DiggleGatesStibbard(10), AreaInter(8)))
simH <- simulate(fitH, nsim=1)[[1]]


###################################################
### code chunk number 3: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 4: 13gibbs.Rnw:135-138
###################################################
plot(solist(swedishpines, simH),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1, pch=16)


###################################################
### code chunk number 5: Xhard
###################################################
## generate realisation of hard core process here
## so we can use it for various diagrams
set.seed(424242)
Xhard <- rHardcore(100, 0.1)


###################################################
### code chunk number 6: XhardDemo
###################################################
## Make a diagram showing the simulated pattern (left panel)
##   and the corresponding non-overlapping discs (right panel)
XhardX <- layered(Xhard, plotargs=list(pch=16))
XhardDiscs <- layered(Xhard %mark% 0.1, 
                      plotargs=list(markscale=1, legend=FALSE))
XhardDemo <- solist(XhardX, XhardDiscs)


###################################################
### code chunk number 7: BirthDeathDemos
###################################################
## make illustrations for birth-death transitions
## using previous simulated pattern
XX <- Xhard
WW <- Window(XX)
CC <- as.ppp(centroid.owin(WW), WW)
II <- which.min(crossdist(XX, CC))
YY <- XX[-II]
ZZ <- XX[II]
hh <- 0.1
WW <- intersect.owin(Window(XX), 
                     shift(shift(square(0.6), origin="midpoint"), XX[II]))
Window(XX) <- Window(YY) <- Window(ZZ) <- WW
XXr <- intersect.owin(dilation(XX, hh), WW)
YYr <- intersect.owin(dilation(YY, hh), WW)
Less <- layered(YYr, WW, YY, ZZ)
More <- layered(XXr, WW, YY, ZZ)
layerplotargs(Less) <- 
    list(list(border="grey", hatch=TRUE, hatchargs=list(col=grey(0.3))),
         list(),
         list(pch=16),
         list(pch=1, cex=1.5, col=grey(0.3)))
layerplotargs(More) <-
    list(list(border="grey", hatch=TRUE, hatchargs=list(col=grey(0.3))),
         list(),
         list(pch=16),
         list(pch=16))
M <- matrix(c(4,1,1,4)/5, 2, 2)
xx <- M %*% (WW$xrange)
yy <- M %*% (WW$yrange)
Right <- ppp(x=xx, y=rep(yy[2],2), window=WW)
Left  <- ppp(x=rev(xx), y=rep(yy[1],2), window=WW)
Arrows <- layered(WW, 
                  onearrow(Right, txt="birth"), 
                  onearrow(Left, txt="death"),
                  plotargs=list(list(type="n"), list(), list()))


###################################################
### code chunk number 8: 13gibbs.Rnw:211-225
###################################################
## make figure demonstrating 'forbidden zone' for hard core
# First make a yardstick, positioned so that it can be compared with the discs
xr <- WW$xrange
yr <- WW$yrange
xleft <- xr[1] - diff(xr)/6
ytarget <- mean(yr) + hh/2
ybest <- XX$y[which.min(abs(XX$y - ytarget))]
ys.h <- yardstick(xleft, ybest, 
                 xleft, ybest - hh, expression(italic(h)))
# make figure
L3 <- Less[-4]
layerplotargs(L3) <- list(list(col="grey"), list(), list(pch=3))
HardForbid <- layered(L3, ys.h, 
                      plotargs=list(list(), list(angle=90)))


###################################################
### code chunk number 9: StraussDemo
###################################################
Z <- YY[WW]
rr <- 0.11
ZS <- scanmeasure(Z, rr, dimyx=512)[WW]
m <- max(ZS)
ZS <- m - ZS
ZF <- eval.im(factor(as.integer(ZS), levels=0:m))
levels(ZF) <- LZF <- rev(c("beta", paste0("beta/", 2^(1:m))))
EZF <- parse(text=LZF)
xr <- WW$xrange
yr <- WW$yrange
xleft <- xr[1] - diff(xr)/6
ytarget <- mean(yr) + rr/2
ybest <- Z$y[which.min(abs(Z$y - ytarget))]
ys2 <- yardstick(xleft, ybest, 
                 xleft, ybest - rr, expression(italic(R)))
Str <- layered(ZF, Z, ys2,
               plotargs=list(
                   list(col=grey(sqrt((0:m)/m)), 
                        ribargs=list(las=1, labels=EZF),
                        box=TRUE),
                   list(pch=3),
                   list(angle=90, pos=2)))


###################################################
### code chunk number 10: 13gibbs.Rnw:281-288
###################################################
set.seed(424242)
halfnpix <- 10
npix <- 2 * halfnpix + 1
A <- quadrats(owin(), npix, npix)
U <- tiles(A)[[halfnpix * npix + halfnpix + 1]]
Uplus <- grow.rectangle(U, 1/npix)
X <- runifpoint(20, setminus.owin(owin(), Uplus))


###################################################
### code chunk number 11: Unit.Rnw:3-5
###################################################
newplot(6, 0.7)
setmargins(0)


###################################################
### code chunk number 12: 13gibbs.Rnw:293-294
###################################################
zeromargins()


###################################################
### code chunk number 13: 13gibbs.Rnw:298-301
###################################################
plot(Window(A), main="")
plot(X, add=TRUE, pch=16)
plot(U, add=TRUE, lwd=3)


###################################################
### code chunk number 14: Unit2LR.Rnw:3-5
###################################################
newplot(13, 0.9)
setmargins(0,2,0,2)


###################################################
### code chunk number 15: 13gibbs.Rnw:359-362
###################################################
plot(solist(HardForbid,Str),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1)


###################################################
### code chunk number 16: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 17: 13gibbs.Rnw:510-511
###################################################
zeromargins()


###################################################
### code chunk number 18: 13gibbs.Rnw:515-518
###################################################
plot(XhardDemo,
     main="", main.panel="", equal.scales=TRUE, 
     mar.panel=0, hsep=1.5)


###################################################
### code chunk number 19: Plist
###################################################
set.seed(191710)
Hlist <- Plist <- rpoispp(8, nsim=12)
Rinter <- 0.1
naughty <- (sapply(Hlist, minnndist) <= Rinter)
crossout <- psp(c(0,0), c(0,1), c(1,1), c(1,0), window=square(1), check=FALSE)
Hlist[naughty] <- lapply(Hlist[naughty],
                         function(z) layered(crossout, z,
                                             plotargs=list(
                                                 list(lwd=4, col="grey"),
                                                 list(pch=16, cex=0.75))))
Hlist[!naughty] <- lapply(Hlist[!naughty], 
                          function(z) layered(z, 
                                              plotargs=list(pch=16, cex=0.75)))
## add yardstick to first panel
ysv <- yardstick(-0.1, 0.5-Rinter/2, -0.1, 0.5+Rinter/2, expression(italic(h)))
Hlist[[1]] <- layered(Hlist[[1]], ysv, 
                      plotargs=list(list(), list(pos=2, angle=90)))


###################################################
### code chunk number 20: Unit3x4y.Rnw:4-5
###################################################
setmargins(0)


###################################################
### code chunk number 21: 13gibbs.Rnw:596-600
###################################################
plot(Hlist, main="", main.panel="", 
     equal.scales=TRUE, halign=TRUE,
     pch=16, cex=0.75, 
     nrows=3, mar.panel=0.1, hsep=1, vsep=1)


###################################################
### code chunk number 22: 13gibbs.Rnw:626-633
###################################################
intensityStrauss <- function(beta, gamma, R=0.1) {
  G <- (1-gamma) * pi * R^2
  lam <- LambertW(beta * G)/G
  round(lam, 1)
}
lam8 <- intensityStrauss(8, 0)
lam100 <- intensityStrauss(100, 0)


###################################################
### code chunk number 23: birthdeathseq
###################################################
## generate spatial birth-death sequence
Hc <- 0.07
Beta <- 200
mod <- list(cif="hardcore",par=list(beta=Beta,hc=Hc), w=square(1))
X <- rmh(model=mod,
         start=list(n.start=0),
         control=list(p=0, q=0.35, nrep=1e4, nsave=10, nburn=0, track=TRUE))
Y <- attr(X, "saved")
ntran <- cumsum(attr(X, "history")$accepted)
Z <- list()
Z[[1]] <- ppp(, window=Window(Y[[1]]))
for(i in 1:9) 
  Z[[i+1]] <- Y[[min(which(ntran == (i * 50)))  %/% 10]]
names(Z) <- (0:9) * 50
Z <- as.solist(Z)


###################################################
### code chunk number 24: Unit2x5t.Rnw:4-5
###################################################
zeromargins()


###################################################
### code chunk number 25: 13gibbs.Rnw:872-876
###################################################
plot(Z, main="", 
     pch=16, cex=0.6, cex.main=0.9, font.main=1, 
     nrows=2, 
     equal.scales=TRUE, mar.panel=c(0,0,1,0), hsep=1, vsep=0.75)


###################################################
### code chunk number 26: Unit3.Rnw:3-5
###################################################
newplot(19,0.9)
zeromargins()


###################################################
### code chunk number 27: 13gibbs.Rnw:930-931
###################################################
zeromargins()


###################################################
### code chunk number 28: 13gibbs.Rnw:935-938
###################################################
plot(solist(Less[-1], Arrows, More[-1]),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=0.1)


###################################################
### code chunk number 29: 13gibbs.Rnw:1018-1026
###################################################
set.seed(1917)
modIH <- rmhmodel(cif="hardcore", 
                  par=list(beta=1, hc=0.05),
                  trend = function(x,y) { 500 * exp(-2*(x + y)) },
                  w=square(1))
XIH <- rmh(modIH, nrep=1e6)
DIH <- density(XIH, bw.scott)
YIH <- layered(XIH, plotargs=list(pch=16))


###################################################
### code chunk number 30: Unit2r.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0,0,0,1)


###################################################
### code chunk number 31: 13gibbs.Rnw:1033-1035
###################################################
plot(solist(YIH, DIH), main="", main.panel="", 
     equal.scales=TRUE, mar.panel=0, hsep=1)


###################################################
### code chunk number 32: 13gibbs.Rnw:1110-1112
###################################################
set.seed(424242)
SS <- rStrauss(100, 0.5, 0.1)


###################################################
### code chunk number 33: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 34: 13gibbs.Rnw:1117-1118
###################################################
zeromargins()


###################################################
### code chunk number 35: 13gibbs.Rnw:1122-1127
###################################################
SSS <- layered(SS, plotargs=list(pch=16))
SSM <- layered(SS %mark% 0.1, plotargs=list(markscale=1, legend=FALSE))
plot(solist(SSS, SSM), 
     main="", main.panel="", equal.scales=TRUE, 
     mar.panel=0, hsep=1.5)


###################################################
### code chunk number 36: 13gibbs.Rnw:1176-1198
###################################################
sx <- sapply(Plist, function(z, R=Rinter) { d <- pairdist(z)
                                            sum(d[row(d) > col(d)] <= R) })
gamma <- 0.5
accept <- (runif(length(Plist)) < gamma^sx)
Slist <- Plist
Slist[!accept] <- lapply(Slist[!accept],
                         function(z) layered(owin(),
                                             crossout, z,
                                             plotargs=list(
                                                 list(),
                                                 list(lwd=4, col="grey"),
                                                 list(pch=16, cex=0.75))))
Slist[accept] <- lapply(Slist[accept], 
                          function(z) layered(z, 
                                              plotargs=list(pch=16, cex=0.75)))
## add yardstick to first panel
ysvR <- yardstick(-0.1, 0.5-Rinter/2, -0.1, 0.5+Rinter/2, expression(italic(R)))
Slist[[1]] <- layered(Slist[[1]], ysvR, 
                      plotargs=list(list(), list(pos=2, angle=90)))
## main titles
px <- ifelse(sx == 0, "1", paste0("1/", 2^sx))
mains <- parse(text=paste("list(italic(s) == ", sx, ", italic(p) == ", px, ")"))


###################################################
### code chunk number 37: Unit3x4uy.Rnw:5-6
###################################################
setmargins(0, 1, 0, 0)


###################################################
### code chunk number 38: 13gibbs.Rnw:1205-1209
###################################################
plot(Slist, main="", main.panel=mains, 
     equal.scales=TRUE, halign=TRUE, 
     pch=16, cex=0.75,  panel.args=function(...) list(cex.main=0.9),
     nrows=3, mar.panel=0.1 + c(0, 1.5, 0, 0), hsep=1, vsep=1.5)


###################################################
### code chunk number 39: 13gibbs.Rnw:1231-1233
###################################################
lam8s <- intensityStrauss(8, 0.5)
lam100s <- intensityStrauss(100, 0.5)


###################################################
### code chunk number 40: 13gibbs.Rnw:1243-1257
###################################################
set.seed(111222)
rr <- 0.08
lambda <- 50
gamma <- (0:3)/3
beta <- lambda * exp(lambda * pi * rr^2 * (1 - gamma))
HSP <- list()
for(i in seq_along(gamma)) HSP[[i]] <- rStrauss(beta[i], gamma[i], rr)
HSP <- as.solist(HSP)
#ys <- yardstick(0.5-rr/2, -0.1, 0.5+rr/2, -0.1, expression(italic(h)))
HSP[[1]] <- layered(HSP[[1]], #ys, 
                    plotargs=list(list(pch=16, cex=0.5)#,
#                                  list(angle=90, pos=1)))
                                  ))
blurb <- parse(text=paste("gamma ==", sapply(gamma, simplenumber)))


###################################################
### code chunk number 41: Unit4u.Rnw:3-5
###################################################
newplot(25, 1)
zeromargins()


###################################################
### code chunk number 42: 13gibbs.Rnw:1269-1272
###################################################
plot(HSP, main="", main.panel=blurb, 
     equal.scales=TRUE, mar.panel=c(1,0,1,0), hsep=1, nrows=1, valign=TRUE,
     pch=16, size=0.5)


###################################################
### code chunk number 43: 13gibbs.Rnw:1541-1595
###################################################
set.seed(67812)
HC <- 0.15
Beta <- 50
mod <- rmhmodel(cif='hardcore', par=list(beta=Beta, hc=HC), w=square(1))
u <- data.frame(x=0.5, y=0.5)
emp <- ppp(window=square(1))
Xu <- rmh(mod, x.cond=u, start=list(x.start=emp), expand=1, nrep=1e6)
CondDemo1 <- layered(owin(),
                     Xu[1],
                     Xu[-1],
                     disc(HC, Xu[1]),
                     textstring(0.55, 0.55, "u"),
                     plotargs=list(list(lwd=2),
                                   list(pch=3, cex=1.5),
                                   list(pch=16),
                                   list(lty=2),
                                   list(font=3)))
B <- owin(c(0,1/3), c(0,1))
set.seed(424242)
zz <- rHardcore(Beta, HC, B)
Xz <- rmh(mod, x.cond=zz, start=list(x.start=emp), expand=1, nrep=1e6)
Yz <- Xz[-(1:npoints(zz))]
CondDemo2 <- layered(owin(),
                     B,
                     zz,
                     Yz,
                     dilation(zz, HC),
                     textstring(0.1, 0.5, "B"),
                     textstring(0.75, 0.15, "A"),
                     plotargs=list(list(lwd=2),
                                   list(lwd=2, lty=3),
                                   list(pch=3),
                                   list(pch=16),
                                   list(lty=2),
                                   list(font=3), list(font=3)))
CW <- owin(c(1/3, 1/3 + HC), c(0,1))
set.seed(999)
cz <- rHardcore(Beta, HC, CW)
Xc <- rmh(mod, x.cond=cz, start=list(x.start=emp), expand=1, nrep=1e6)
Yc <- Xc[-(1:npoints(cz))]
MarkovDemo <- layered(owin(),
                     CW,
                     cz,
                     Yc,
                     dilation(cz, HC),
                     textstring(0.1, 0.5, "B"),
                     textstring(0.4, 0.12, "C"),
                     textstring(0.75, 0.15, "A"),
                     plotargs=list(list(lwd=2),
                                   list(lwd=2, lty=3),
                                   list(pch=3),
                                   list(pch=16),
                                   list(lty=2),
                                   list(font=3), list(font=3), list(font=3)))


###################################################
### code chunk number 44: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 45: 13gibbs.Rnw:1600-1603
###################################################
plot(solist(CondDemo1, CondDemo2),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1, valign=TRUE)


###################################################
### code chunk number 46: Unit.Rnw:3-5
###################################################
newplot(6, 0.7)
setmargins(0)


###################################################
### code chunk number 47: 13gibbs.Rnw:1667-1668
###################################################
plot(MarkovDemo, main="")


###################################################
### code chunk number 48: 13gibbs.Rnw:1729-1734
###################################################
## set digits to 4 for narrower output
Digits <- 4
dopt <- options(digits=Digits)
Terse <- 3
spatstat.options(terse=Terse)


###################################################
### code chunk number 49: fitStrauss-swedishpines5
###################################################
fithom <- ppm(swedishpines~1, Strauss(r=5))
co <- round(exp(coef(fithom)), 3)


###################################################
### code chunk number 50: 13gibbs.Rnw:1767-1768
###################################################
ppm(swedishpines ~ 1, Strauss(r=5))


###################################################
### code chunk number 51: 13gibbs.Rnw:1803-1804
###################################################
ppm(swedishpines ~ polynom(x,y,2), Strauss(5))


###################################################
### code chunk number 52: 13gibbs.Rnw:1833-1835
###################################################
fit0 <- ppm(swedishpines ~ 1, Strauss(5))
coef(fit0)


###################################################
### code chunk number 53: 13gibbs.Rnw:1845-1846
###################################################
unlist(parameters(fit0))


###################################################
### code chunk number 54: fitStrauss2swp
###################################################
fit2 <- ppm(swedishpines ~ polynom(x,y,2), Strauss(5))


###################################################
### code chunk number 55: 13gibbs.Rnw:1880-1882
###################################################
Dactive <- distfun(vesicles.extra$activezone)
ppm(vesicles ~ Dactive, Strauss(40))


###################################################
### code chunk number 56: 13gibbs.Rnw:2048-2049
###################################################
ppm(redwood ~ 1, Strauss(0.1))


###################################################
### code chunk number 57: 13gibbs.Rnw:2055-2056
###################################################
ppm(redwood ~ 1, Strauss(0.1), project=TRUE)


###################################################
### code chunk number 58: 13gibbs.Rnw:2075-2076
###################################################
ppm(cells ~ 1, Strauss(0.00001))


###################################################
### code chunk number 59: 13gibbs.Rnw:2164-2168
###################################################
fit0 <- ppm(swedishpines ~ 1, Strauss(r=5))
fit2  <- update(fit0, . ~ polynom(x,y,2))
fit9 <- update(fit0, Strauss(9))
fit0fine <- update(fit0, nd=256)


###################################################
### code chunk number 60: 13gibbs.Rnw:2184-2186
###################################################
sqrt(diag(vcov(fit0)))
confint(fit0)


###################################################
### code chunk number 61: 13gibbs.Rnw:2189-2190
###################################################
coef(summary(fit0))


###################################################
### code chunk number 62: 13gibbs.Rnw:2198-2199
###################################################
vcov(fit0)


###################################################
### code chunk number 63: 13gibbs.Rnw:2240-2245
###################################################
fit2 <- ppm(swedishpines ~ polynom(x,y,2), Strauss(5))
Z <- solist(predict(fit2, type="trend"),
            predict(fit2, type="cif"),
            predict(fit2, type="intensity"))
ZZ <- as.anylist(lapply(Z, transect.im))


###################################################
### code chunk number 64: Unit3r.Rnw:3-5
###################################################
newplot(22,0.9)
setmargins(0)


###################################################
### code chunk number 65: 13gibbs.Rnw:2251-2252
###################################################
plot(Z, equal.ribbon=TRUE, main="", main.panel="", mar.panel=0, hsep=1)


###################################################
### code chunk number 66: fv3.Rnw:3-5
###################################################
newplot(12.5, 1.0)
setmargins(0.5+c(3,3,0,1))


###################################################
### code chunk number 67: 13gibbs.Rnw:2283-2284
###################################################
setmargins(0.5+c(2,2,0,0))


###################################################
### code chunk number 68: 13gibbs.Rnw:2288-2289
###################################################
plot(ZZ, equal.scales=TRUE, main="", main.panel="")


###################################################
### code chunk number 69: 13gibbs.Rnw:2301-2303
###################################################
scrambled <- runifpoint(ex=swedishpines)
ll <- predict(fit2, type="cif", X=scrambled)


###################################################
### code chunk number 70: 13gibbs.Rnw:2314-2315
###################################################
inten <- intensity(fit0)


###################################################
### code chunk number 71: 13gibbs.Rnw:2325-2326
###################################################
intensity(fit0)


###################################################
### code chunk number 72: 13gibbs.Rnw:2353-2354
###################################################
fitin(fit2)


###################################################
### code chunk number 73: 13gibbs.Rnw:2368-2369
###################################################
as.interact(fit2)


###################################################
### code chunk number 74: simStrauss2
###################################################
s <- simulate(fit2, nsim=100)


###################################################
### code chunk number 75: Unit4.Rnw:3-5
###################################################
newplot(25, 1)
zeromargins()


###################################################
### code chunk number 76: 13gibbs.Rnw:2392-2394
###################################################
plot(s[1:4], nrows=1, equal.scales=TRUE,
     main = "", main.panel="", pch=16, hsep=1, mar.panel=0)


###################################################
### code chunk number 77: 13gibbs.Rnw:2419-2423
###################################################
npoints(swedishpines)
np <- sapply(s, npoints)
mean(np)
sd(np)


###################################################
### code chunk number 78: 13gibbs.Rnw:2442-2443 (eval = FALSE)
###################################################
## E0 <- envelope(fit0, Lest, nsim=39)


###################################################
### code chunk number 79: 13gibbs.Rnw:2485-2486
###################################################
step(fit2, trace=0)


###################################################
### code chunk number 80: 13gibbs.Rnw:2517-2519
###################################################
fit2P <- update(fit2, Poisson())
anova(fit2P, fit2, test="LR")


###################################################
### code chunk number 81: 13gibbs.Rnw:2522-2523
###################################################
anova(fit0, fit2, test="LR")


###################################################
### code chunk number 82: fv4x2.Rnw:3-5
###################################################
newplot(5, 1)
setmargins(0.5+c(3,3,2,1))


###################################################
### code chunk number 83: 13gibbs.Rnw:2637-2638
###################################################
setmargins(0.5+c(2,2,1,0))


###################################################
### code chunk number 84: 13gibbs.Rnw:2642-2714
###################################################
doit <- function(nama, expr, ...) {
    height <- 1.3
    width <- 1
    plot(c(-0.25, width), c(-0.15,height), type="n", main="",
         xlab="", ylab="", axes=FALSE)
    title(main=nama, cex=1.1, font=2, line=0.5)
    AXEX <- 1.2
    text(0.9*width, 0.15, expression(bolditalic(d)), cex=AXEX)
    ## remember to reconcile the next line with \pairpot
    text(-0.15, height, expression(bolditalic(c(d))), cex=AXEX)
    plot(onearrow(ppp(c(0,0), c(0, height), window=square(height))), 
         retract=0, headfraction=0.15, col.head=1, add=TRUE)
    axis(2, at=c(0,1), tick=TRUE, pos=0, las=1, cex.axis=AXEX)
    plot(onearrow(ppp(c(0,width), c(0, 0), window=square(width))), 
         retract=0, headfraction=0.15, col.head=1, add=TRUE)
    axis(1, ..., tick=TRUE, pos=0, cex.axis=AXEX)
    segments(0,1,1,1, lty=3, lwd=2)
    eval(substitute(curve(E, lwd=3, col=1, add=TRUE, n=513, from=0),
                    list(E=substitute(expr))))
}
par(mfrow=c(2, 4))
doit("Hard Core",
     as.integer(x > 0.5),
     at=c(0, 0.5), labels=expression(0, italic(h)))
doit("Strauss",
     ifelse(x > 0.5, 1, 0.5),
     at=c(0, 0.5), labels=expression(0, italic(R)))
# strauss-hardcore
doit("Strauss-Hard Core",
     ifelse(x <= 0.3, 0, ifelse(x <= 0.6, 0.5, 1)),
     at=c(0, 0.3, 0.6), labels=expression(0, italic(h), italic(R)))
# pairpiece
doit("Piecewise constant",
     c(0.15, 0.4, 0.2, 0.6, 1)[findInterval(x, (0:5)/5, TRUE, TRUE)],
     at=(0:4)/5,
     labels=expression(0, italic(r[1]), italic(r[2]), italic(r[3]),
                       italic(r[4])))
# diggle-gratton
delta <- 0.3
rho <- 0.7
kappa <- 1.8
doit("Diggle-Gratton",
     ifelse(x <= delta, 0,
            ifelse(x >= rho, 1,
                   ((x-delta)/(rho-delta))^kappa)),
     at=c(0, delta, rho),
     labels=expression(0, delta, rho))
# diggle-gates-stibbard
rho <- 0.7
doit("Diggle-Gates-Stibbard",
     ifelse(x >= rho, 1,
            sin((pi/2) * x/rho)^2),
     at=c(0, rho),
     labels=expression(0, rho))
# softcore
sigma <- 0.3
kappa <- 0.5
doit("Soft Core",
     exp(-(sigma/x)^(2/kappa)),
     at=c(0, sigma),
     labels=expression(0, sigma))
# Fiksel
aa <- -3
kappa <- 4
h <- 0.25
r <- 0.75
doit("Fiksel",
     ifelse(x <= h, 0,
            ifelse(x >= r, 1,
                   exp( aa * exp(-kappa * x)))),
     at=c(0, h, r),
     labels=expression(0, h, r))


###################################################
### code chunk number 85: 13gibbs.Rnw:2724-2732
###################################################
set.seed(1000)
Xdgs <- rStraussHard(200, 0.5, 0.08, 0.04)
fakefit <- ppm(Xdgs ~ 1, StraussHard(0.08, 0.04))
cifdgs <- predict(fakefit, type="cif", ngrid=1024,
                  new.coef=log(c(200, 0.5)))
Xdgs <- layered(Xdgs, plotargs=list(list(pch=16)))
cifXdgs <- layered(cifdgs, plotargs=list(list(col=grey(seq(0.2,1,length=128)))))
Zdgs <- solist(Xdgs, cifXdgs)


###################################################
### code chunk number 86: Unit2r.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0,0,0,1)


###################################################
### code chunk number 87: 13gibbs.Rnw:2738-2739
###################################################
plot(Zdgs, main="", main.panel="", mar.panel=0, hsep=1, equal.scales=TRUE)


###################################################
### code chunk number 88: 13gibbs.Rnw:2983-2985
###################################################
mod <- ppm(swedishpines ~ polynom(x,y,2), PairPiece(1:15))
f <- fitin(mod)


###################################################
### code chunk number 89: 13gibbs.Rnw:3014-3016
###################################################
rr <- data.frame(r=seq(3,14,by=0.05))
p <- profilepl(rr, Strauss, swedishpines~polynom(x,y,2), aic=TRUE)


###################################################
### code chunk number 90: 13gibbs.Rnw:3018-3019
###################################################
p


###################################################
### code chunk number 91: fv2.Rnw:3-5
###################################################
newplot(12, 0.95)
setmargins(0.5+c(3,3,0,1))


###################################################
### code chunk number 92: 13gibbs.Rnw:3032-3034
###################################################
plot(anylist(f, p), main="", main.panel="", 
     mar.panel=0.2+c(4,4,0,1))


###################################################
### code chunk number 93: 13gibbs.Rnw:3053-3054
###################################################
as.ppm(p)


###################################################
### code chunk number 94: 13gibbs.Rnw:3124-3129
###################################################
set.seed(191919)
ai <- function(beta, eta, r=0.07) 
  rmhmodel(cif='areaint', par=list(beta=beta, eta=eta, r=r), w=square(1))
XA.02 <- rmh(ai(250, 0.02))
XA50  <- rmh(ai(5, 50))


###################################################
### code chunk number 95: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 96: 13gibbs.Rnw:3135-3139
###################################################
plot(solist(XA.02, XA50), 
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1,
     pch=16)


###################################################
### code chunk number 97: 13gibbs.Rnw:3184-3207
###################################################
## Make synthetic example for explaining Area Interaction 
W <- as.owin(swedishpines)
x <- c(28,29,55,60,66)
y <- c(70,38,32,72,59)
X <- ppp(x=x,y=y, window = W)
u <- list(x=48,y=50)
u <- as.ppp(u, W)
rad <- 14
Xplusr <- dilation(X, rad)
uplusr <- disc(rad, u)
ovlap <- intersect.owin(uplusr, Xplusr)
AIdemo <- layered(W, 
                  ovlap,
                  Xplusr,
                  uplusr,
                  X,
                  u)
layerplotargs(AIdemo) <- list(list(),
                              list(col="darkgrey", border=NA),
                              list(lwd=2),
                              list(lwd=2, lty=2),
                              list(pch=16),
                              list(pch=3))


###################################################
### code chunk number 98: Unit.Rnw:3-5
###################################################
newplot(6, 0.7)
setmargins(0)


###################################################
### code chunk number 99: 13gibbs.Rnw:3214-3215
###################################################
plot(AIdemo, main="")


###################################################
### code chunk number 100: 13gibbs.Rnw:3275-3277 (eval = FALSE)
###################################################
## fitSA <- ppm(swedishpines ~ polynom(x,y,2), AreaInter(4))
## cifSA <- predict(fitSA, type = "cif", ngrid=512)


###################################################
### code chunk number 101: cifSA
###################################################
fitSA <- ppm(swedishpines~polynom(x,y,2), AreaInter(4))
cifSA <- predict(fitSA, type = "cif", ngrid=if(draftversion) 128 else 512)
cifSAdemo <- layered(cifSA, swedishpines,
                     plotargs=list(list(log=TRUE, ribargs=list(las=1)), 
                       list(col="white", pch=3)))
intSA <- fitin(fitSA)


###################################################
### code chunk number 102: 13gibbs.Rnw:3287-3288
###################################################
fitSA


###################################################
### code chunk number 103: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 104: 13gibbs.Rnw:3306-3307
###################################################
plot(intSA, main="", legend=FALSE)


###################################################
### code chunk number 105: UnitR.Rnw:3-6
###################################################
newplot(9, 0.7)
zeromargins() # strip all margins
setmargins(0.1 + c(0,0,0,2)) # back off


###################################################
### code chunk number 106: 13gibbs.Rnw:3311-3312
###################################################
setmargins(0,0,0,3)


###################################################
### code chunk number 107: 13gibbs.Rnw:3314-3315
###################################################
plot(cifSAdemo, main="")


###################################################
### code chunk number 108: 13gibbs.Rnw:3377-3384
###################################################
set.seed(422442)
gs <- function(beta, gamma, r=0.07, sat=2) {
  rmhmodel(cif='geyer', par=list(beta=beta, gamma=gamma, sat=sat, r=r), 
           w=square(1))
}
XG.5 <- rmh(gs(300, 0.5))
XG2  <- rmh(gs(20, 2))


###################################################
### code chunk number 109: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 110: 13gibbs.Rnw:3391-3395
###################################################
plot(solist(XG.5, XG2), 
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1,
     pch=16)


###################################################
### code chunk number 111: 13gibbs.Rnw:3436-3437
###################################################
ppm(redwood ~ 1, Geyer(r=0.05, sat=2))


###################################################
### code chunk number 112: 13gibbs.Rnw:3441-3444
###################################################
df <- expand.grid(r=seq(0.02, 0.1, by=0.001), sat=c(1,2))
pG <- profilepl(df, Geyer, redwood ~ 1, correction="translate", 
                aic=TRUE)


###################################################
### code chunk number 113: 13gibbs.Rnw:3446-3447
###################################################
as.ppm(pG)


###################################################
### code chunk number 114: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 115: 13gibbs.Rnw:3453-3458
###################################################
plot(pG, main="", 
     lwd=2, 
     lty=ifelse(sat == 2, 1, 2), ## undocumented feature of plot.profilepl
     pos=2, # text to left of peaks
     lwd.opt=2, col.opt=1, tag=FALSE)


###################################################
### code chunk number 116: TripletsCalc
###################################################
set.seed(19501973)
tripmod <- function(gamma) {
  rmhmodel(cif="triplets",par=list(beta=200,gamma=gamma,r=0.1), w=square(1))
}
X0 <- rmh(tripmod(0))
X.5 <- rmh(tripmod(0.5))
fitT0 <- ppm(X0 ~ 1, Triplets(0.1))
cifT0 <- predict(fitT0, type="cif", ngrid=256, new.coef=log(c(200, 1e-16)))
facT0 <- eval.im(factor(cifT0 > 100))
faclab <- expression(0, beta)
CifT0 <- layered(facT0, plotargs=list(list(col=grey(c(0.2, 0.9)),
                                           box=TRUE,
                                           ribargs=list(las=1, labels=faclab))))


###################################################
### code chunk number 117: Unit3.Rnw:3-5
###################################################
newplot(19,0.9)
zeromargins()


###################################################
### code chunk number 118: 13gibbs.Rnw:3551-3552
###################################################
setmargins(0,0,0,1.5)


###################################################
### code chunk number 119: 13gibbs.Rnw:3556-3559
###################################################
plot(solist(X0, X.5, CifT0), 
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1)


###################################################
### code chunk number 120: 13gibbs.Rnw:3588-3590
###################################################
clo <- closepairs(redwoodfull, 0.1)
crx <- with(clo, psp(xi, yi, xj, yj, window=Window(redwoodfull)))


###################################################
### code chunk number 121: 13gibbs.Rnw:3596-3597
###################################################
redcon <- connected(redwoodfull, 0.1)


###################################################
### code chunk number 122: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 123: 13gibbs.Rnw:3604-3609
###################################################
redcross <- layered(redwoodfull, crx)
layerplotargs(redcon) <- list(legend=FALSE)
plot(solist(redcross, redcon),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=0, hsep=1)


###################################################
### code chunk number 124: 13gibbs.Rnw:3646-3647
###################################################
hcg <- hclust(dist(coords(gordon)), "single")


###################################################
### code chunk number 125: Unit2.Rnw:3-5
###################################################
newplot(12.5, 0.9)
setmargins(0)


###################################################
### code chunk number 126: 13gibbs.Rnw:3652-3653
###################################################
setmargins(0.2,3,0,0)


###################################################
### code chunk number 127: 13gibbs.Rnw:3657-3658
###################################################
plot(hcg, main="", xlab="", sub="", labels=FALSE)


###################################################
### code chunk number 128: 13gibbs.Rnw:3667-3672
###################################################
set.seed(191919)
f <- function(X) { coef(ppm(X ~ 1, Concom(2), rbord=0))[["Interaction"]] }
Xsims <- rpoispp(intensity(gordon), win=Window(gordon), nsim=99)
fXsims <- sapply(Xsims, f)
pv <- (1+sum(f(gordon) <= fXsims))/100


###################################################
### code chunk number 129: 13gibbs.Rnw:3685-3686 (eval = FALSE)
###################################################
## plot(hclust(dist(coords(gordon)), "single"))


###################################################
### code chunk number 130: 13gibbs.Rnw:3699-3700
###################################################
ppm(gordon ~ 1, Concom(2), rbord=0)


###################################################
### code chunk number 131: 13gibbs.Rnw:3706-3711
###################################################
etahat <- function(X) { 
  mod <- ppm(X ~ 1, Concom(2), rbord=0)
  return(parameters(mod)$eta)
}
(etaobs <- etahat(gordon))


###################################################
### code chunk number 132: 13gibbs.Rnw:3713-3714
###################################################
set.seed(898292)


###################################################
### code chunk number 133: ConcomMCtest
###################################################
Xsims <- rpoispp(ex=gordon, nsim=99)
etasim <- sapply(Xsims, etahat)


###################################################
### code chunk number 134: 13gibbs.Rnw:3720-3721
###################################################
(pval <- mean(etaobs <= c(etaobs, etasim)))


###################################################
### code chunk number 135: 13gibbs.Rnw:3871-3872 (eval = FALSE)
###################################################
## Hybrid(Strauss(0.1), Geyer(0.2, 3))


###################################################
### code chunk number 136: 13gibbs.Rnw:3883-3886
###################################################
M <- Hybrid(H=Hardcore(), G=Geyer(0.2, 3))
fit <- ppm(redwood ~ 1, M, correction="translate")
fit 


###################################################
### code chunk number 137: 13gibbs.Rnw:3927-3929
###################################################
Mplus <- Hybrid(fit, g=Geyer(0.1,1))
update(fit, Mplus)


###################################################
### code chunk number 138: 13gibbs.Rnw:3935-3939 (eval = FALSE)
###################################################
## fit2 <- ppm(swedishpines ~ 1, 
##             Hybrid(DG=DiggleGratton(2,10), S=Strauss(5)))
## plot(fitin(fit2))
## plot(fitin(fit2), separate=TRUE, mar.panel=rep(4,4))


###################################################
### code chunk number 139: 13gibbs.Rnw:4029-4031
###################################################
fit <- ppm(swedishpines ~ 1, Strauss(8))
Y   <- rmh(fit)


###################################################
### code chunk number 140: 13gibbs.Rnw:4072-4076
###################################################
mo <- list(cif="strauss", 
           par=list(beta=2,gamma=0.2,r=0.7), w=square(10))
X <- rmh(model=mo, 
         start=list(n.start=42), control=list(nrep=1e6))


###################################################
### code chunk number 141: 13gibbs.Rnw:4096-4098 (eval = FALSE)
###################################################
## mo <- rmhmodel(cif="strauss", 
##                par=list(beta=2,gamma=0.2,r=0.7), w=square(10))


###################################################
### code chunk number 142: 13gibbs.Rnw:4112-4116 (eval = FALSE)
###################################################
## rmhmodel(cif = c('hardcore', 'strauss'),
##          par = list(list(beta = 10, hc = 0.03), 
##                     list(beta = 1, gamma = 0.5, r = 0.07)),
##          w   = square(1))


###################################################
### code chunk number 143: 13gibbs.Rnw:4164-4165
###################################################
X4 <- rmh(model=mo, nrep=1e4)


###################################################
### code chunk number 144: 13gibbs.Rnw:4269-4272
###################################################
fit <- ppm(swedishpines ~ 1, Strauss(8))
Y <- rmh(fit, track=TRUE)
h <- attr(Y, "history")


###################################################
### code chunk number 145: 13gibbs.Rnw:4274-4276
###################################################
with(h, mean(accepted))
with(h, prop.table(table(proposaltype, accepted), 1))


###################################################
### code chunk number 146: CopperFitS
###################################################
dlin <- distfun(copper$SouthLines)
copfit <- ppm(copper$SouthPoints ~ dlin, Geyer(1, 1))


###################################################
### code chunk number 147: cdftestMCMC
###################################################
coptest <- cdf.test(copfit, dlin, nsim=39)


###################################################
### code chunk number 148: 13gibbs.Rnw:4608-4609
###################################################
coptest


###################################################
### code chunk number 149: SwedFit
###################################################
swedfit <- ppm(swedishpines ~ polynom(x,y,2), Strauss(9))


###################################################
### code chunk number 150: SwedEnv
###################################################
swedenv <- envelope(swedfit, Lest, nsim=39, global=TRUE, 
                    savepatterns=TRUE)


###################################################
### code chunk number 151: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 152: 13gibbs.Rnw:4645-4646
###################################################
plot(swedenv, . - r ~ r, main="", legend=FALSE)


###################################################
### code chunk number 153: 13gibbs.Rnw:4763-4764
###################################################
swedR <- residuals(swedfit)


###################################################
### code chunk number 154: Unit2LRboth.Rnw:4-6
###################################################
newplot(13, 1)
setmargins(0,2,0,2)


###################################################
### code chunk number 155: 13gibbs.Rnw:4774-4777
###################################################
plot(solist(swedR, Smooth(swedR)),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=c(0,1,0,1), hsep=1)


###################################################
### code chunk number 156: 13gibbs.Rnw:4852-4853
###################################################
swedI <- residuals(swedfit, type="inverse")


###################################################
### code chunk number 157: 13gibbs.Rnw:4863-4864
###################################################
swedE <- eem(swedfit)


###################################################
### code chunk number 158: 13gibbs.Rnw:4872-4873
###################################################
swedP <- residuals(swedfit, type="pearson")


###################################################
### code chunk number 159: Unit2LRboth.Rnw:4-6
###################################################
newplot(13, 1)
setmargins(0,2,0,2)


###################################################
### code chunk number 160: 13gibbs.Rnw:4878-4881
###################################################
plot(solist(swedI, swedP),
     main="", main.panel="", nrows=1, 
     equal.scales=TRUE, mar.panel=c(0,1,0,1), hsep=1)


###################################################
### code chunk number 161: 13gibbs.Rnw:4981-4982 (eval = FALSE)
###################################################
## diagnose.ppm(swedfit, type="Pearson", envelope=TRUE, nsim=39)


###################################################
### code chunk number 162: 13gibbs.Rnw:4985-4986 (eval = FALSE)
###################################################
## diagnose.ppm(swedfit, type="Pearson", envelope=swedenv, nsim=39)


###################################################
### code chunk number 163: 13gibbs.Rnw:4989-4991
###################################################
DS <- diagnose.ppm(swedfit, type="Pearson", 
                   plot.it=FALSE, envelope=swedenv, nsim=39)


###################################################
### code chunk number 164: Unit.Rnw:3-5
###################################################
newplot(6, 0.7)
setmargins(0)


###################################################
### code chunk number 165: 13gibbs.Rnw:4996-4997
###################################################
setmargins(1)


###################################################
### code chunk number 166: 13gibbs.Rnw:5001-5002
###################################################
plot(DS, main="")


###################################################
### code chunk number 167: 13gibbs.Rnw:5037-5039
###################################################
SWP <- Smooth(residuals(swedfit, type="Pearson"))
2/(2 * sqrt(pi) * attr(SWP, "sigma"))


###################################################
### code chunk number 168: 13gibbs.Rnw:5052-5053
###################################################
coppar <- parres(copfit, dlin)


###################################################
### code chunk number 169: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 170: 13gibbs.Rnw:5075-5076
###################################################
plot(coppar, main="", legend=FALSE)


###################################################
### code chunk number 171: 13gibbs.Rnw:5131-5133
###################################################
set.seed(191919)
q9 <- qqplot.ppm(swedfit, nsim=39, plot.it=FALSE)


###################################################
### code chunk number 172: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 173: 13gibbs.Rnw:5137-5138
###################################################
setmargins(0.5+c(4,3,0,0))


###################################################
### code chunk number 174: 13gibbs.Rnw:5142-5143
###################################################
plot(q9, main="", monochrome=monochrome, pch=3)


###################################################
### code chunk number 175: 13gibbs.Rnw:5188-5189
###################################################
KresSwed <- Kres(swedfit, correction="iso")


###################################################
### code chunk number 176: fv.Rnw:3-5
###################################################
newplot(6, 0.5)
setmargins(0.5+c(3,3,1,0))


###################################################
### code chunk number 177: 13gibbs.Rnw:5196-5197
###################################################
plot(KresSwed, main="",  shade=c("ihi", "ilo"), legend=FALSE)


###################################################
### code chunk number 178: chorleyDfun
###################################################
## Code block repeated from Chapter 11
## squared distance to incinerator
d2incin <- function(x, y, xincin=354.5, yincin=413.6) {
  (x - xincin)^2 + (y - yincin)^2
}
## Diggle's model of elevated risk as function of distance
fincin <- function(d2, alpha, beta) {
  1 + alpha * exp( - beta * d2)
}
## elevated risk as spatial covariate
raisin <- function(x,y, alpha, beta) {
  fincin(d2incin(x,y), alpha, beta)
}


###################################################
### code chunk number 179: morescore
###################################################
## Code block repeated from Chapter 11
Zalpha <- function(x,y, alpha, beta) {
  expbit <- exp( - beta * d2incin(x,y))
  expbit/(1 + alpha * expbit)
}
Zbeta <- function(x,y, alpha, beta) {
  d2 <- d2incin(x,y)
  topbit <- alpha * exp( - beta * d2)
  - d2 * topbit/(1 + topbit)
}
Zscore <- list(alpha=Zalpha, beta=Zbeta)


###################################################
### code chunk number 180: moreHessian
###################################################
## Code block repeated from Chapter 11
Zaa <- function(x,y, alpha, beta) {
  expbit <- exp( - beta * d2incin(x,y))
  -(expbit/(1 + alpha * expbit))^2
}
Zab <- function(x,y, alpha, beta) {
  d2 <- d2incin(x,y)
  expbit <- exp( - beta * d2)
  - d2 * expbit/(1 + alpha * expbit)^2
}
Zbb <- function(x,y, alpha, beta) {
  d2 <- d2incin(x,y)
  topbit <- alpha * exp( - beta * d2)
  (d2^2) * topbit/(1 + topbit)^2
}
Zhess <- list(aa=Zaa, ab=Zab, ba=Zab, bb=Zbb)


###################################################
### code chunk number 181: chorley
###################################################
lung <- split(chorley)$lung
larynx <- split(chorley)$larynx
smo <- density(lung, sigma=0.15, eps=0.1)
smo <- eval.im(pmax(smo, 1e-10))


###################################################
### code chunk number 182: chorleyDGfit
###################################################
rGey <- 0.25
chorleyDGfit <- ippm(larynx ~ offset(log(smo) + log(raisin)) , 
                     Geyer(rGey, 1), eps = 0.5, iScore=Zscore, 
                     start=list(alpha=20, beta=1), 
                     nlm.args=list(steptol=0.001))


###################################################
### code chunk number 183: 13gibbs.Rnw:5360-5362
###################################################
unlist(parameters(chorleyDGfit))
chorleyDGopt <- parameters(chorleyDGfit)[c("alpha", "beta")]


###################################################
### code chunk number 184: chorleyDGcalc
###################################################
chorleyDGlev <- leverage(chorleyDGfit, 
                iScore=Zscore, iHessian=Zhess, iArgs=chorleyDGopt)
chorleyDGinf <- influence(chorleyDGfit, 
                iScore=Zscore, iHessian=Zhess, iArgs=chorleyDGopt)
chorleyDGdfb <- dfbetas(chorleyDGfit, 
                iScore=Zscore, iHessian=Zhess, iArgs=chorleyDGopt)


###################################################
### code chunk number 185: 13gibbs.Rnw:5374-5388
###################################################
spatstat.options(image.colfun=greytoblack)
incin <- as.ppp(chorley.extra[["incin"]], W = Window(chorley))
chorleyDGlevDemo <- 
  layered(chorleyDGlev,
          Window(chorley),
          incin,
          plotargs=list(list(show.all=FALSE, ribbon=TRUE, ribside="bottom"),
                        list(),
                        list(pch=10, col="white", etch=TRUE)))
chorleyDGinfDemo <- 
  layered(chorleyDGinf,
          incin,
          plotargs=list(list(maxsize=3.0, lwd=3, leg.side="bottom"),
                        list(pch=10, col="white", etch=TRUE)))


###################################################
### code chunk number 186: Chorley2b.Rnw:3-5
###################################################
newplot(18, 0.8)
setmargins(3,0,0,0)


###################################################
### code chunk number 187: 13gibbs.Rnw:5394-5397
###################################################
plot(solist(chorleyDGlevDemo, chorleyDGinfDemo),
     main="", main.panel="", mar.panel=c(1.2,0,0,0), hsep=1, 
     nrows=1, equal.scales=TRUE)


###################################################
### code chunk number 188: 13gibbs.Rnw:5417-5418
###################################################
spatstat.options(image.colfun=blacktowhite)


###################################################
### code chunk number 189: augmentchorleyDG
###################################################
## This code helps to accelerate the plotting 
chorleyDGdfb <- augment.msr(chorleyDGdfb)


###################################################
### code chunk number 190: Chorley2x2LR.Rnw:3-5
###################################################
newplot(20,1)
setmargins(0.5)


###################################################
### code chunk number 191: chorleyDGdfb
###################################################
white134 <- function(i) { 
  if(i==2) list(cols="black") else
  list(cols="white", leg.args=list(cols="black")) 
}
plot(chorleyDGdfb, 
     panel.end=as.owin(chorley), 
     panel.args=white134, lwd=2, box=FALSE,
     mar.panel=0, hsep=2, vsep=1, maxsize=2.5,
     main="")


###################################################
### code chunk number 192: chorleyDGsmooth
###################################################
chorleyDGdfbsmo <- Smooth(chorleyDGdfb, sigma=0.8)


###################################################
### code chunk number 193: Chorley2x2R.Rnw:3-5
###################################################
newplot(20,0.95)
setmargins(0, 0.5, 0, 4)


###################################################
### code chunk number 194: chorleyDGdfbsmo
###################################################
plot(chorleyDGdfbsmo, 
     panel.end=as.owin(chorley),
     main="", box=FALSE, 
     mar.panel=0, hsep=2, vsep=1)


###################################################
### code chunk number 195: 13gibbs.Rnw:5492-5493
###################################################


###################################################
### code chunk number 196: 13gibbs.Rnw:5495-5511
###################################################
## if(!file.exists("data/RedGey.rda")) {
##   # get bandwidth value 
##   if(!file.exists("data/RedBW.rda")) {
##    NOT YET RELEASED IN SPATSTAT
##     RedBW <- bw.locppm(redwoodfull, ~1, Geyer(0.05, 2), 
##                       correction="isotropic", 
##                       srange=c(0.06, 0.4), ns=32,
##                       verbose=FALSE)
##    save(RedBW, file="data/RedBW.rda", compress=TRUE)
##  } else load("data/RedBW.rda")
##  # fit model
##    NOT YET RELEASED IN SPATSTAT
##  RedGey <- locppm(redwoodfull, ~1, Geyer(0.05, 2), sigma=RedBW,
##                   correction="isotropic", 
##                   vcalc="full", locations="fine", 
##                   verbose=FALSE)
##  save(RedGey, file="data/RedGey.rda", compress=TRUE)
## } else load("data/RedGey.rda")


###################################################
### code chunk number 197: 13gibbs.Rnw:5536-5538 (eval = FALSE)
###################################################
##    NOT YET RELEASED IN SPATSTAT
## RedGey <- locppm(redwoodfull ~ 1, Geyer(0.05, 2), sigma=bw.locppm,
##                  correction="isotropic")


###################################################
### code chunk number 198: UnitR.Rnw:3-6
###################################################
newplot(9, 0.7)
zeromargins() # strip all margins
setmargins(0.1 + c(0,0,0,2)) # back off


###################################################
### code chunk number 199: 13gibbs.Rnw:5550-5552
###################################################
##    NOT YET RELEASED IN SPATSTAT
## plot(RedGey, main="", which=2, 
##     style="imagecontour", contourargs=list(col="white"))


###################################################
### code chunk number 200: PromptOff.Rnw:1-2
###################################################
options(prompt="  ")


###################################################
### code chunk number 201: 13gibbs.Rnw:6320-6321 (eval = FALSE)
###################################################
## ppm(X ~ terms, interaction)


###################################################
### code chunk number 202: PromptOn.Rnw:1-2
###################################################
options(prompt="> ")


###################################################
### code chunk number 203: 13gibbs.Rnw:6398-6402
###################################################
## reload.or.compute(datafilepath("ppmStraussSimdatHO.rda"), 
##                   { fit <- ppm(simdat, ~1, Strauss(r=0.275), method="ho") })
set.seed(424242)
fit <- ppm(simdat~1, Strauss(r=0.275), method="ho")


###################################################
### code chunk number 204: 13gibbs.Rnw:6404-6405 (eval = FALSE)
###################################################
## fit <- ppm(simdat ~ 1, Strauss(r=0.275), method="ho")


###################################################
### code chunk number 205: 13gibbs.Rnw:6407-6409
###################################################
fit
vcov(fit)


###################################################
### code chunk number 206: SwedFit
###################################################
p.mean <- rep(0,7)
p.var <- diag(c(rep(10000,6), 0.001))
swedfitVB <- ppm(swedishpines ~ polynom(x,y,2), Strauss(9), 
                 method = "VBlogi", 
                 prior.mean = p.mean, prior.var = p.var)


###################################################
### code chunk number 207: PromptOff.Rnw:1-2
###################################################
options(prompt="  ")


###################################################
### code chunk number 208: 13gibbs.Rnw:6650-6651 (eval = FALSE)
###################################################
## model <- dppGauss(lambda=100, alpha=0.05, d=2)


###################################################
### code chunk number 209: PromptOn.Rnw:1-2
###################################################
options(prompt="> ")


###################################################
### code chunk number 210: PromptOff.Rnw:1-2
###################################################
options(prompt="  ")


###################################################
### code chunk number 211: 13gibbs.Rnw:6663-6664 (eval = FALSE)
###################################################
## simulate(model)


###################################################
### code chunk number 212: PromptOn.Rnw:1-2
###################################################
options(prompt="> ")


###################################################
### code chunk number 213: PromptOff.Rnw:1-2
###################################################
options(prompt="  ")


###################################################
### code chunk number 214: 13gibbs.Rnw:6671-6673 (eval = FALSE)
###################################################
## X <- residualspaper[["Fig1"]]
## jfit <- dppm(X ~ polynom(x,y,3), dppGauss())


###################################################
### code chunk number 215: PromptOn.Rnw:1-2
###################################################
options(prompt="> ")