Nothing
#'
#' Header for all (concatenated) test files
#'
#' Require spatstat.model
#' Obtain environment variable controlling tests.
#'
#' $Revision: 1.5 $ $Date: 2020/04/30 05:31:37 $
require(spatstat.model)
FULLTEST <- (nchar(Sys.getenv("SPATSTAT_TEST", unset="")) > 0)
ALWAYS <- TRUE
cat(paste("--------- Executing",
if(FULLTEST) "** ALL **" else "**RESTRICTED** subset of",
"test code -----------\n"))
#
# tests/kppm.R
#
# $Revision: 1.40 $ $Date: 2024/02/26 05:44:02 $
#
# Test functionality of kppm that once depended on RandomFields
# Test update.kppm for old style kppm objects
if(!FULLTEST)
spatstat.options(npixel=32, ndummy.min=16)
local({
fit <- kppm(redwood ~1, "Thomas") # sic
fitx <- kppm(redwood ~x, "Thomas", verbose=TRUE)
if(FULLTEST) {
fitx <- update(fit, ~ . + x)
fitM <- update(fit, clusters="MatClust")
fitC <- update(fit, cells)
fitCx <- update(fit, cells ~ x)
#'
Wsub <- owin(c(0, 0.5), c(-0.5, 0))
Zsub <- (bdist.pixels(Window(redwood)) > 0.1)
fitWsub <- kppm(redwood ~1, "Thomas", subset=Wsub)
fitZsub <- kppm(redwood ~1, "Thomas", subset=Zsub)
fitWsub
#' various methods
ff <- as.fv(fitx)
uu <- unitname(fitx)
unitname(fitCx) <- "furlong"
mo <- model.images(fitCx)
p <- psib(fit)
px <- psib(fitx)
}
if(ALWAYS) {
Y <- simulate(fitx, seed=42, saveLambda=TRUE)[[1]]
}
if(FULLTEST) {
#' vcov.kppm different algorithms
vc <- vcov(fitx)
vc2 <- vcov(fitx, fast=TRUE)
vc3 <- vcov(fitx, fast=TRUE, splitup=TRUE)
vc4 <- vcov(fitx, splitup=TRUE)
## other code blocks
a <- varcount(fitx, function(x,y){x+1}) # always positive
a <- varcount(fitx, function(x,y){y-1}) # always negative
a <- varcount(fitx, function(x,y){x+y}) # positive or negative
#' improve.kppm
fitI <- update(fit, improve.type="quasi")
fitxI <- update(fitx, improve.type="quasi")
fitxIs <- update(fitx, improve.type="quasi", fast=FALSE)
#' vcov.kppm
vcI <- vcov(fitxI)
}
## plot.kppm including predict.kppm
if(ALWAYS) {
fitMC <- kppm(redwood ~ x, "Thomas")
plot(fitMC)
}
if(FULLTEST) {
fitCL <- kppm(redwood ~ x, "Thomas", method="c")
fitPA <- kppm(redwood ~ x, "Thomas", method="p")
plot(fitCL)
plot(fitPA)
## fit with composite likelihood method [thanks to Abdollah Jalilian]
fut <- kppm(redwood ~ x, "VarGamma", method="clik2", nu.ker=-3/8)
kfut <- as.fv(fut)
}
if(ALWAYS) {
fit0 <- kppm(redwood ~1, "LGCP")
is.poisson(fit0)
Y0 <- simulate(fit0, saveLambda=TRUE)[[1]]
stopifnot(is.ppp(Y0))
p0 <- psib(fit0) # issues a warning
if(FULLTEST) {
## fit LGCP using K function: slow
fit1 <- kppm(redwood ~x, "LGCP",
covmodel=list(model="matern", nu=0.3),
control=list(maxit=3))
Y1 <- simulate(fit1, saveLambda=TRUE)[[1]]
stopifnot(is.ppp(Y1))
}
## fit LGCP using pcf
fit1p <- kppm(redwood ~x, "LGCP",
covmodel=list(model="matern", nu=0.3),
statistic="pcf")
Y1p <- simulate(fit1p, saveLambda=TRUE)[[1]]
stopifnot(is.ppp(Y1p))
## .. and using different fitting methods
if(FULLTEST) {
fit1pClik <- update(fit1p, method="clik")
fit1pPalm <- update(fit1p, method="palm")
}
## shortcut evaluation of pcf
## (the code being tested is in spatstat.random::clusterinfo.R)
if(FULLTEST) {
putSpatstatVariable("RFshortcut", TRUE)
fitGshort <- kppm(redwood ~ 1, "LGCP", covmodel=list(model="gauss"))
fitSshort <- kppm(redwood ~ 1, "LGCP", covmodel=list(model="stable", alpha=1))
putSpatstatVariable("RFshortcut", FALSE)
fitGlong <- kppm(redwood ~ 1, "LGCP", covmodel=list(model="gauss"))
fitSlong <- kppm(redwood ~ 1, "LGCP", covmodel=list(model="stable", alpha=1))
discrepG <- unlist(parameters(fitGshort)) - unlist(parameters(fitGlong))
discrepS <- unlist(parameters(fitSshort)) - unlist(parameters(fitSlong))
print(discrepG)
print(discrepS)
if(max(abs(discrepG) > 0.01))
stop("Discrepancy in short-cut fitting of Gaussian LGCP")
if(max(abs(discrepS) > 0.01))
stop("Discrepancy in short-cut fitting of stable LGCP")
}
## image covariate (a different code block)
xx <- as.im(function(x,y) x, Window(redwood))
fit1xx <- update(fit1p, . ~ xx, data=solist(xx=xx))
Y1xx <- simulate(fit1xx, saveLambda=TRUE)[[1]]
stopifnot(is.ppp(Y1xx))
if(FULLTEST) {
fit1xxVG <- update(fit1xx, clusters="VarGamma", nu=-1/4)
Y1xxVG <- simulate(fit1xxVG, saveLambda=TRUE)[[1]]
stopifnot(is.ppp(Y1xxVG))
}
fit1xxLG <- update(fit1xx, clusters="LGCP",
covmodel=list(model="matern", nu=0.3),
statistic="pcf")
Y1xxLG <- simulate(fit1xxLG, saveLambda=TRUE, drop=TRUE)
stopifnot(is.ppp(Y1xxLG))
# ... and Abdollah's code
if(FULLTEST) {
fit2 <- kppm(redwood ~x, cluster="Cauchy", statistic="K")
Y2 <- simulate(fit2, saveLambda=TRUE)[[1]]
stopifnot(is.ppp(Y2))
}
}
})
if(FULLTEST) {
local({
#' various code blocks
fut <- kppm(redwood, ~x)
fet <- update(fut, redwood3)
fot <- update(fut, trend=~y)
fit <- kppm(redwoodfull ~ x)
Y <- simulate(fit, window=redwoodfull.extra$regionII, saveLambda=TRUE)
gut <- improve.kppm(fit, type="wclik1")
gut <- improve.kppm(fit, vcov=TRUE, fast.vcov=TRUE, save.internals=TRUE)
hut <- kppm(redwood ~ x, method="clik", weightfun=NULL)
hut <- kppm(redwood ~ x, method="palm", weightfun=NULL)
mut <- kppm(redwood)
nut <- update(mut, Y)
})
}
if(FULLTEST) {
local({
#' minimum contrast code
K <- Kest(redwood)
a <- matclust.estK(K)
a <- thomas.estK(K)
a <- cauchy.estK(K)
a <- vargamma.estK(K)
a <- lgcp.estK(K)
print(a)
u <- unitname(a)
g <- pcf(redwood)
a <- matclust.estpcf(g)
a <- thomas.estpcf(g)
a <- cauchy.estpcf(g)
a <- vargamma.estpcf(g)
a <- lgcp.estpcf(g)
#' auxiliary functions
b <- resolve.vargamma.shape(nu.pcf=1.5)
Z <- clusterfield("Thomas", kappa=1, scale=0.2)
aa <- NULL
aa <- accumulateStatus(simpleMessage("Woof"), aa)
aa <- accumulateStatus(simpleMessage("Sit"), aa)
aa <- accumulateStatus(simpleMessage("Woof"), aa)
printStatusList(aa)
RMIN <- 0.01
fit <- kppm(redwood ~ 1, ctrl=list(rmin=RMIN,q=1/2))
if(fit$Fit$mcfit$ctrl$rmin != RMIN)
stop("kppm did not handle parameter 'rmin' in argument 'ctrl' ")
fit <- kppm(redwood ~ 1, ctrl=list(rmin=0,q=1/2), rmin=RMIN)
if(fit$Fit$mcfit$ctrl$rmin != RMIN)
stop("kppm did not handle parameter 'rmin' in argument 'ctrl'")
RMIN <- 2
fit <- dppm(swedishpines~1, dppGauss(), ctrl=list(rmin=RMIN,q=1))
if(fit$Fit$mcfit$ctrl$rmin != RMIN)
stop("dppm did not handle parameter 'rmin' in argument 'ctrl'")
fit <- dppm(swedishpines~1, dppGauss(), ctrl=list(rmin=0,q=1), rmin=RMIN)
if(fit$Fit$mcfit$ctrl$rmin != RMIN)
stop("dppm did not handle argument 'rmin'")
})
}
if(FULLTEST) {
local({
#' cover a few code blocks
fut <- kppm(redwood ~ x, method="clik")
print(summary(fut))
a <- residuals(fut)
fut2 <- kppm(redwood ~ x, "LGCP", method="palm")
print(summary(fut2))
b <- residuals(fut2)
#'
po <- ppm(redwood ~ 1)
A <- kppmComLik(redwood, Xname="redwood", po=po, clusters="Thomas",
statistic="pcf", statargs=list(), control=list(),
weightfun=NULL, rmax=0.1)
A <- kppmPalmLik(redwood, Xname="redwood", po=po, clusters="Thomas",
statistic="pcf", statargs=list(), control=list(),
weightfun=NULL, rmax=0.1)
})
}
reset.spatstat.options()
#'
#' tests/Kfuns.R
#'
#' Various K and L functions and pcf
#'
#' $Revision: 1.43 $ $Date: 2022/06/17 01:47:08 $
#'
#' Assumes 'EveryStart.R' was run
if(FULLTEST) {
Cells <- cells
Amacrine <- amacrine
Redwood <- redwood
} else {
## reduce numbers of data + dummy points
spatstat.options(npixel=32, ndummy.min=16)
Cells <- cells[c(FALSE, TRUE)]
Amacrine <- amacrine[c(FALSE, TRUE)]
Redwood <- redwood[c(FALSE, TRUE)]
}
if(FULLTEST) {
local({
#' code blocks using fitted model to determine intensity
#' Kinhom
X <- rpoispp(function(x,y) { 100 * x }, 100, square(1))
fut <- ppm(X ~ x)
Kio <- Kinhom(X, fut, update=FALSE)
Kiu <- Kinhom(X, fut, update=TRUE, diagonal=FALSE)
fit <- ppm(Amacrine ~ marks)
#' lohboot Linhom
Zred <- predict(ppm(Redwood ~ x+y))
Lred <- lohboot(Redwood, Linhom, lambda=Zred)
#' Kmulti.inhom
K1 <- Kcross.inhom(Amacrine, lambdaX=fit)
On <- split(Amacrine)$on
Off <- split(Amacrine)$off
K4 <- Kcross.inhom(Amacrine, lambdaI=ppm(On), lambdaJ=ppm(Off))
#' local K functions
fut <- ppm(swedishpines ~ polynom(x,y,2))
Z <- predict(fut)
Lam <- fitted(fut, dataonly=TRUE)
a <- localLinhom(swedishpines, lambda=fut)
a <- localLinhom(swedishpines, lambda=Z)
a <- localLinhom(swedishpines, lambda=Lam)
a <- localLinhom(swedishpines, lambda=Z, correction="none")
a <- localLinhom(swedishpines, lambda=Z, correction="translate")
#' local cross K functions
fat <- ppm(Amacrine ~ x * marks)
Zed <- predict(fat)
Lum <- fitted(fat, dataonly=TRUE)
moff <- (marks(Amacrine) == "off")
a <- localLcross.inhom(Amacrine, from="off", to="on", lambdaX=Zed)
a <- localLcross.inhom(Amacrine, from="off", to="on", lambdaX=Lum)
a <- localLcross.inhom(Amacrine, from="off", to="on", lambdaX=fat)
a <- localLcross.inhom(Amacrine, from="off", to="on",
lambdaFrom=Lum[moff], lambdaTo=Lum[!moff])
a <- localLcross.inhom(Amacrine, from="off", to="on", lambdaX=Zed,
correction="none")
a <- localLcross.inhom(Amacrine, from="off", to="on", lambdaX=Zed,
correction="translate")
#' cases of resolve.lambdacross
h <- resolve.lambdacross(Amacrine, moff, !moff, lambdaX=fat)
h <- resolve.lambdacross(Amacrine, moff, !moff, lambdaX=fat, update=FALSE)
h <- resolve.lambdacross(Amacrine, moff, !moff,
lambdaI=fat, lambdaJ=fat)
h <- resolve.lambdacross(Amacrine, moff, !moff,
lambdaI=fat, lambdaJ=fat,
update=FALSE)
#' lohboot
b <- lohboot(Amacrine, Lcross.inhom, from="off", to="on", lambdaX=Zed)
b <- lohboot(Amacrine, Lcross.inhom, from="off", to="on", lambdaX=Lum)
b <- lohboot(Amacrine, Lcross.inhom, from="off", to="on", lambdaX=fat)
b <- lohboot(Amacrine, Lcross.inhom, from="off", to="on",
lambdaFrom=Lum[moff], lambdaTo=Lum[!moff])
#'
#' residual K functions etc
#'
rco <- compareFit(Cells, Kcom,
interaction=anylist(P=Poisson(), S=Strauss(0.08)),
same="trans", different="tcom")
fit <- ppm(Cells ~ x, Strauss(0.07))
K <- Kcom(Cells, model=fit, restrict=TRUE)
})
}
reset.spatstat.options()
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.