Este código de R corresponde a la figura 6.11 del libro Análisis de datos con el programa estadístico R: una introducción aplicada de Salas-Eljatib (2021).

Cargando los datos de ejemplo

Ocuparemos la dataframe pspRuca del paquete datana.

library(datana)
data(pspRuca)
df <- pspRuca
head(df) #primeras seis filas
  tree.no           spp status    dbh x.coord y.coord crown.class
1       1    N. obliqua      1  65.50  2.7282 0.62986           1
2       2  A. punctatum      1  75.90  9.1970 4.30179           1
3       3  A. punctatum      1  44.10 17.1026 0.62677           1
4       4 E. cordifolia      1 135.75 20.0614 0.57813           1
5       5  A. punctatum      1  78.25  3.9795 2.20588           1
6       6    N. obliqua      1  91.80  5.1683 1.88111           1
nrow(df) #numero de filas de la dataframe
[1] 716

Esta dataframe contiene la informacion de coordenadas cartesianas de arboles en una parcela de muestreo de 10.000 m\(^2\) (1 hectárea) en un bosque adulto de Olivillo-Roble-Laurel-Ulmo en el predio Rucamanque (Depresion intermedia de la region de la Araucania, Chile). Los datos fueron recolectados por Salas et al. (2006).

Los gráficos

En el libro se muestran dos gráficos sobre funciones de de densidad (o ``Kernel’’) para la distribucion espacial de árboles en un bosque nativo en Chile. La estimacion de densidad por funciones Kernel es una alternativa de modelacion en análisis espacial que toma en consideracion la posicion de elementos en relacion a otros Schabenberger and Gotway (2005).

Para realizar esta figura del libro es necesario tambien cargar los siguientes paquetes

library(splancs)
Loading required package: sp

Spatial Point Pattern Analysis Code in S-Plus
 
 Version 2 - Spatial and Space-Time analysis
library(spatstat)
Loading required package: spatstat.data
Loading required package: nlme
Loading required package: rpart

spatstat 1.64-1       (nickname: 'Help you I can, yes!') 
For an introduction to spatstat, type 'beginner' 

Note: R version 3.6.3 (2020-02-29) is more than a year old; we strongly recommend upgrading to the latest version

Attaching package: 'spatstat'
The following object is masked from 'package:MASS':

    area

Es recomendable tambien instalar el paquete geoR Ribeiro and Diggle (2001).

El primer gráfico (el de la izquierda de la figura del libro)

range.x<-c(0,100);range.y<-c(0,100)
plot.area<-max(range.x)*max(range.y)

# grupo 1: arboles del dosel superior y vivos
db.g1 <- df[df[,"crown.class"]==1&df[,"status"]==1,] 
db.g1.pts <- as.points(db.g1[,"x.coord"],db.g1[,"y.coord"])
db.g1.ppp <- ppp(db.g1.pts[,1],db.g1.pts[,2],xrange=range.x,yrange=range.x) 
# ----------
#estimacion de la densidad kernel para grupo 1
dens.g1.sig2<-density.ppp(db.g1.ppp,sigma=3.5,dimyx=c(max(range.x),max(range.y)))

persp(dens.g1.sig2,theta=45,phi=5,xlab="X",ylab="Y",zlab="Z",cex.lab=1.5,main="", col="yellow")

El segundo gráfico (el de la derecha de la figura del libro)

# grupo 2: arboles del dosel inferior y muertos en pie
db.g2<-df[df[,"crown.class"]==3&df[,"status"]==2,] 

db.g2.pts<-as.points(db.g2[,"x.coord"],db.g2[,"y.coord"]);
db.g2.ppp=ppp(db.g2.pts[,1],db.g2.pts[,2],xrange=range.x,yrange=range.x) 
# ----------
#estimacion de la densidad kernel para grupo 2
dens.g2.sig2<-density.ppp(db.g2.ppp,sigma=3.5,dimyx=c(max(range.x),max(range.y)))


persp(dens.g2.sig2,theta=45,phi=45,xlab="X",ylab="Y",zlab="Z",cex.lab=1.5,main="",col="aquamarine")

Bibliografía

Ribeiro, P. J., Jr., and P. J. Diggle. 2001. “geoR: A Package for Geostatistical Analysis.” R News 1 (2): 14–18.

Salas, C., V. LeMay, P. Núñez, P. Pacheco, and A. Espinosa. 2006. “Spatial Patterns in an Old-Growth Nothofagus Obliqua Forest in South-Central Chile.” For. Ecol. Manage. 231 (1-3): 38–46.

Salas-Eljatib, C. 2021. Análisis de datos con el programa estadístico R: una introducción aplicada. Santiago, Chile: Ediciones Universidad Mayor.

Schabenberger, O., and C. A. Gotway. 2005. Statistical Methods for Spatial Data Analysis. Boca Raton, FL, USA: Chapman & Hall/CRC.