Applies independent random thinning to a point pattern or segment pattern.
rthin(X, P, …, nsim=1, drop=TRUE)
A point pattern (object of class "ppp"
or "lpp"
or "pp3"
or "ppx"
) or line segment pattern
(object of class "psp"
) that will be thinned.
Data giving the retention probabilities, i.e. the probability
that each point or line in X
will be retained.
Either a single number, or a vector of numbers,
or a function(x,y)
in the R language,
or a function object (class "funxy"
or "linfun"
),
or a pixel image (object of class "im"
or "linim"
).
Additional arguments passed to P
, if it is a function.
Number of simulated realisations to be generated.
Logical. If nsim=1
and drop=TRUE
(the default), the
result will be a point pattern, rather than a list
containing a point pattern.
An object of the same kind as X
if nsim=1
, or a list of such objects if nsim > 1
.
The algorithm for random thinning was changed in spatstat
version 1.42-3
. Set spatstat.options(fastthin=FALSE)
to use the previous, slower algorithm, if it is desired to reproduce
results obtained with earlier versions.
In a random thinning operation, each point of the point pattern X
is randomly either deleted or retained (i.e. not deleted).
The result is a point pattern,
consisting of those points of X
that were retained.
Independent random thinning means that the retention/deletion of each point is independent of other points.
The argument P
determines the probability of retaining
each point. It may be
so that each point will be retained with
the same probability P
;
so that the i
th point of X
will be retained with probability P[i]
;
P(x,y)
,so that a point at a location
(x,y)
will be retained with probability P(x,y)
;
"funxy"
or "linfun"
,so that
points in the pattern X
will be retained with probabilities
P(X)
;
containing values of the retention probability for all locations in a region encompassing the point pattern.
If P
is a function P(x,y)
,
it should be ‘vectorised’, that is,
it should accept vector arguments x,y
and should yield a
numeric vector of the same length. The function may have extra
arguments which are passed through the …
argument.
# NOT RUN {
plot(redwood, main="thinning")
# delete 20% of points
Y <- rthin(redwood, 0.8)
points(Y, col="green", cex=1.4)
# function
f <- function(x,y) { ifelse(x < 0.4, 1, 0.5) }
Y <- rthin(redwood, f)
# pixel image
Z <- as.im(f, Window(redwood))
Y <- rthin(redwood, Z)
# pattern on a linear network
A <- runiflpp(30, simplenet)
B <- rthin(A, 0.2)
g <- function(x,y,seg,tp) { ifelse(y < 0.4, 1, 0.5) }
B <- rthin(A, linfun(g, simplenet))
# thin other kinds of patterns
E <- rthin(osteo$pts[[1]], 0.6)
L <- rthin(copper$Lines, 0.5)
# }
Run the code above in your browser using DataLab