Este código de R corresponde a la figura 6.12 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 pspLlancahue del paquete datana.

library(datana)
data(pspLlancahue)
df <- pspLlancahue
tail(df) #ultimas seis filas
     tree.code spp.name    dbh x.coord y.coord spp.ori
1213      T273       Ec 12.065     6.3    63.6      UL
1214      T274       Ec 14.917     4.1    51.4      UL
1215      T275       Ec 14.215     5.4    52.7      UL
1216      T277       Ec 14.917     9.3    41.7      UL
1217      T278       Ec 15.614     5.1    49.2      UL
1218      T281       Ec 20.349     1.8    15.0      UL
nrow(df) #numero de filas de la dataframe
[1] 1218

Esta dataframe contiene la informacion de coordenadas cartesianas de arboles en una parcela de muestreo de 10.000 m\(^2\) (1 hectárea, de 70 \(\times\) 130 m) en un bosque maduro de Coihue en el predio Llancahue (Depresión intermedia de la región de los Rios, Chile). Los datos fueron recolectados por Soto et al. (2010).

El grafico

Un gráfico de contorno muestra la relacion entre tres variables, \(X\) e \(Y\), y la variable \(Z\) representada por curvas que tienen los mismos valores. Es decir, se representan isolineas. Es la misma idea empleada en mapas donde se representan las curvas de nivel, es decir curvas o lineas del mismo valor de altitud sobre el nivel del mar.

Para el ejemplo se emplearan las coordenadas cartesianas de los arboles y como variable \(Z\) a la estimación de la densidad a traves de una función de Kernel. Mayores detalles sobre este tipo de analisis en estadistica espacial pueden ser revisados en Schabenberger and Gotway (2005).

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

require(spatstat)
Loading required package: 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
library(splancs)
Loading required package: sp

Spatial Point Pattern Analysis Code in S-Plus
 
 Version 2 - Spatial and Space-Time analysis
library(spatial)

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

    Strauss
library(spatstat)

Manos a la obra!!

coords.h <- as.matrix(df[, c("x.coord", "y.coord")])

dim.y<-70;dim.x<-130
dim.plot<-c(dim.x,dim.y)
owin<-owin(c(0,dim.x), c(0,dim.y))
range.y <- c(0,dim.y); range.x <- c(0,dim.x)

df.ppp<-ppp(df$y.coord, df$x.coord, marks=df$dbh,window=owin)
head(df.ppp)
Marked planar point pattern: 6 points
marks are numeric, of storage type  'double'
window: rectangle = [0, 130] x [0, 70] units
# estimar la funcion Kernel
den<-density(df.ppp,kernel="gaussian",edge=T,diggle=T,adjust=0.6)

#graficar la densidad
plot(den,main='')#,col=viridis)

#aplicar contornos
contour(den,asp=1,add=T)