Nothing
## ----setup, include=FALSE, cache=FALSE---------------------------
library(knitr)
opts_chunk$set(fig.align='center', # fig.show='hold',
dev='pdf', out.width='.45\\textwidth') # , highlight=FALSE)
options(width=67)
library(siplab)
## ----------------------------------------------------------------
# distance from plant 1 at point (spot) x:
curve(abs(x - 2), from=0, to=10, ylim=c(0,4), lty=2,
asp=1, ylab="distance")
curve(abs(x - 7), lty=2, add=T) # distance from plant 2
curve(pmin(abs(x - 2), abs(x - 7)), add=T) # minimum distance
## ----------------------------------------------------------------
# Assume siplab already installed (install.package("siplab")),
# and loaded with library(siplab)
# The data must be in a marked ppp object:
threeTrees <- ppp(x=c(2,7,6), y=c(3,3,7), c(0,10), c(0,10),
marks=c(10,10,10)) # marks are arbitrary (for now)
# Influence function. Takes distance components
cone_inf <- function(dx, dy, ...){ # and allow other args
10 - sqrt(dx^2 + dy^2) # 10 m height and radius at the base
}
# That's it, do it
a <- assimilation(threeTrees, influence=cone_inf)
points(a) # add the tree locations to the influence map
# With a larger data set:
b <- assimilation(spruces, influence=cone_inf)
## ----------------------------------------------------------------
a
marks(a)
sum(marks(a)$aindex)
## ----------------------------------------------------------------
marks(threeTrees) <- c(35,30,40) # size
# Cone, increased resolution for sharper boundaries:
a <- assimilation(threeTrees, pixsize=0.05)
# Paraboloid:
b <- assimilation(threeTrees, pixsize=0.05, infpar=c(a=2,
b=.8, smark=1))
## ----------------------------------------------------------------
f <- function(x, size) {gnomon_inf(x, 0, size, par=c(a=2, b=1,
smark=1))}
curve(f(x, 35), from=-1, to=6, lty=2, ylab="Influence") # tree 1
curve(f(5 - x, 30), lty=2, add=T) # tree 2
curve(pmax(f(x, 35), f(5 - x, 30)), add=T)
## ----------------------------------------------------------------
curve(tass_inf(x, 0, marks=6), from=-3, to=3, asp=1, ylab="")
curve(gnomon_inf(x, 0, 6, par=c(a=1.3, b=2, smark=1)), lty=2,
add=T)
# (for comparison)
## ----------------------------------------------------------------
a <- assimilation(finpines, afree=TRUE, influence=tass_inf,
infpar=list(b=3.432, c=6.1, smark="height"))
aok <- edges(a, -2) # remove trees near the plot border
head(marks(aok))
## ----------------------------------------------------------------
a <- assimilation(finpines, afree=TRUE, influence=tass_inf,
infpar=list(b=3.432, c=6.1, smark="height"), asym=1)
head(marks(edges(a, -2)))
## ----------------------------------------------------------------
incr <- rnorm(30, 1, 0.2) # diameter increments for 30 trees
incr
# Grow the diameter for 10 years:
D <- incr
D <- D + incr # the long way, for clarity
D <- D + incr
D <- D + incr
D <- D + incr
D <- D + incr
D <- D + incr
D <- D + incr
D <- D + incr
D <- D + incr
regr <- lm(incr ~ D) # regress increment over D at age 10
plot(incr ~ D) # plot it
abline(regr)
## ----eval=FALSE--------------------------------------------------
# trees <- boreasSA
# dlim <- 3 # displacement limit
# tolerance <- 0.1 # for convergence criterion
# xy0 <- coords(trees) # initial coordinates
# lastdxy <- 0 # previous displacement
# repeat {
# a <- assimilation(trees, infpar=list(a=1, b=2.7,
# smark="height"),centroid = TRUE)
# dxy <- marks(a)[, c('cx','cy')] - xy0 # potential displ.
# dxy[marks(a)$aindex <= 0,] <- 0 # ignore over-topped trees
# d2 <- rowSums(dxy^2) # squared displacement lengths
# toofar <- d2 > dlim^2
# dxy[toofar, ] <- dlim * dxy[toofar, ] / sqrt(d2[toofar])
# coords(trees) <- xy0 + dxy
# if(max(abs(dxy - lastdxy)) < tolerance) break # converged
# lastdxy <- dxy
# }
# par(mfcol=1:2)
# plot(edges(boreasSA, -5), main="Before", use.marks=F)
# plot(edges(trees, -5), main="After", use.marks=F)
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.