Documento realizado el |
[1] "Thu Aug 18 15:47:20 2022" |
Estos ejemplos corresponden a figuras similares a la figura 2a de Salas et al. (2006) y figura 1 de Soto et al. (2010). | |
Ocuparemos la dataframe pspRuca del paquete datana del libro Análisis de datos con el programa estadístico R: una introducción aplicada de Salas-Eljatib (2021).
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 región de la Araucanía, Chile). Los datos fueron recolectados por Salas et al. (2006).
Se muestra a continuacion dos tipos de gráficos: uno donde se representan la distribucion espacial de puntos y (b) otro donde ademas se incorpora informacion sobre una covariable observada en cada coordenada espacial. Ejemplos del primero se pueden observar en Salas et al. (2006) y del segundo en Soto et al. (2010).
Para realizar esta figura se cargará el paquete geoR Ribeiro and Diggle (2001) y otros relacionados como sigue
library(geoR)
--------------------------------------------------------------
Analysis of Geostatistical Data
For an Introduction to geoR go to http://www.leg.ufpr.br/geoR
geoR version 1.8-1 (built on 2020-02-08) is now loaded
--------------------------------------------------------------
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: spatstat.geom
spatstat.geom 2.3-0
Attaching package: 'spatstat.geom'
The following object is masked from 'package:MASS':
area
Loading required package: spatstat.core
Loading required package: nlme
Loading required package: rpart
spatstat.core 2.3-0
Loading required package: spatstat.linnet
spatstat.linnet 2.3-0
spatstat 2.2-0 (nickname: 'That's not important right now')
For an introduction to spatstat, type 'beginner'
Ahora se definen ciertas dataframes de grupos de datos que serán de nuestro interes
# Creating the datafraes to be used
p5ruca<-df[df[,"status"]==1,] #all the live trees
nvivos <- nrow(p5ruca)
p5rucaAp<-df[df[,"spp"]=="A. punctatum"& df[,"status"]==1,] #lives Ap
p5rucaNo<-df[df[,"spp"]=="N. obliqua"& df[,"status"]==1,] #lives No (Roble)
p5rucaLp<-df[df[,"spp"]=="L. philippiana"& df[,"status"]==1,] #lives Lp (Tepa)
p5rucaDom<-df[df[,"crown.class"]==1& df[,"status"]==1,] #lives Dominant trees
p5rucaDead<-df[df[,"status"]==2,] #all the Dead trees
ndead <- nrow(p5rucaDead)
y ahora creamos las respectivas geo-datas como sigue
# Creating the "Geo"-dataframes to be used
p5ruca.geo<-as.geodata(p5ruca,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
p5rucaAp.geo<-as.geodata(p5rucaAp,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
p5rucaNo.geo<-as.geodata(p5rucaNo,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
p5rucaLp.geo<-as.geodata(p5rucaLp,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
p5rucaDom.geo<-as.geodata(p5rucaDom,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
p5rucaDead.geo<-as.geodata(p5rucaDead,coords.col=c("x.coord","y.coord"),data.col=c("dbh"))
par(mfrow=c(3,2),mai=c(0.25,0.45,.1,0),mgp=c(2.6,1,0),las=1,cex=0.6,cex.lab=1,cex.axis=0.9,pty="s")
# tree location plot
range.x<-c(0,100);range.y<-c(0,100)
plot.area<-max(range.x)*max(range.y)
# All the Species
plot(p5ruca.geo$coords[,1],p5ruca.geo$coords[,2], pch=16,cex=.75,
xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p")#,pch=".",cex=1.5)
text(99, 100, expression(bold((a))))
# Ap
plot(p5rucaAp.geo$coords[,1],p5rucaAp.geo$coords[,2],col="green",# pch=16,cex=1.5,
xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p",pch=16,cex=.75)#,pch=".",cex=1.5)
text(99, 100, expression(bold((b))))
# No
plot(p5rucaNo.geo$coords[,1],p5rucaNo.geo$coords[,2],col="blue",# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=16,cex=.75)#,pch=".",cex=1.5)
text(99, 100, expression(bold((c))))
# Lp
plot(p5rucaLp.geo$coords[,1],p5rucaLp.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p",pch=16,cex=.75)
text(99, 100, expression(bold((d))))
# Dominant trees
plot(p5rucaDom.geo$coords[,1],p5rucaDom.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=16,cex=.75)
text(99, 100, expression(bold((e))))
# standing Dead trees
plot(p5rucaDead.geo$coords[,1],p5rucaDead.geo$coords[,2], col="red",# pch=16,cex=1.5,
xlab="Distancia (m)",xlim=range.x,ylim=range.y, ylab="Distancia (m)",type="p",pch=16,cex=.75)
text(99, 100, expression(bold((f))))
par(mfrow=c(3,2),mai=c(0.25,0.45,.1,0),mgp=c(2.6,1,0),las=1,cex=0.6,cex.lab=1,cex.axis=0.9,pty="s")
# tree location plot
range.x<-c(0,100);range.y<-c(0,100)
plot.area<-max(range.x)*max(range.y)
# All the Species
plot(p5ruca.geo$coords[,1],p5ruca.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
#add circles are proportional to the variate being displayed.
symbols(p5ruca.geo$coords[,1], p5ruca.geo$coords[,2],
circles = p5ruca.geo$data*100, add = T, inches =0.105, fg="blue")
#add the response variable values
#text(p5ruca.geo$coords[,1],p5ruca.geo$coords[,2],labels=p5ruca.geo$data,adj=c(0,1),cex=0.7)
#lines(p5ruca.geo$coords[coords,1],p5ruca.geo$coords[coords,2],col="red",lwd=2)
text(99, 100, expression(bold((a))))
# Ap
plot(p5rucaAp.geo$coords[,1],p5rucaAp.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
#add circles are proportional to the variate being displayed.
symbols(p5rucaAp.geo$coords[,1], p5rucaAp.geo$coords[,2],
circles = p5rucaAp.geo$data*100, add = T, inches =0.105, fg="blue")
#add the response variable values
#text(p5rucaAp.geo$coords[,1],p5rucaAp.geo$coords[,2],labels=p5rucaAp.geo$data,adj=c(0,1),cex=0.7)
text(99, 100, expression(bold((b))))
# No
plot(p5rucaNo.geo$coords[,1],p5rucaNo.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
#add circles are proportional to the variate being displayed.
symbols(p5rucaNo.geo$coords[,1], p5rucaNo.geo$coords[,2],
circles = p5rucaNo.geo$data*100, add = T, inches =0.105, fg="blue")
#add the response variable values
text(p5rucaNo.geo$coords[,1],p5rucaNo.geo$coords[,2],labels=p5rucaNo.geo$data,adj=c(0,1),cex=0.7)
text(99, 100, expression(bold((c))))
# Lp
plot(p5rucaLp.geo$coords[,1],p5rucaLp.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
#add circles are proportional to the variate being displayed.
symbols(p5rucaLp.geo$coords[,1], p5rucaLp.geo$coords[,2],
circles = p5rucaLp.geo$data*100, add = T, inches =0.105, fg="blue")
#add the response variable values
text(p5rucaLp.geo$coords[,1],p5rucaLp.geo$coords[,2],labels=p5rucaLp.geo$data,adj=c(0,1),cex=0.7)
text(99, 100, expression(bold((d))))
# Dominant trees
plot(p5rucaDom.geo$coords[,1],p5rucaDom.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
#add circles are proportional to the variate being displayed.
symbols(p5rucaDom.geo$coords[,1], p5rucaDom.geo$coords[,2],
circles = p5rucaDom.geo$data*100, add = T, inches =0.105, fg="blue")
#add the response variable values
#text(p5rucaDom.geo$coords[,1],p5rucaDom.geo$coords[,2],labels=p5rucaDom.geo$data,adj=c(0,1),cex=0.7)
text(99, 100, expression(bold((e))))
# standing Dead trees
plot(p5rucaDead.geo$coords[,1],p5rucaDead.geo$coords[,2],# pch=16,cex=1.5,
xlab="Distance (m)",xlim=range.x,ylim=range.y, ylab="Distance (m)",type="p",pch=".",cex=1.5)
#add circles are proportional to the variate being displayed.
symbols(p5rucaDead.geo$coords[,1], p5rucaDead.geo$coords[,2],
circles = p5rucaDead.geo$data*100, add = T, inches =0.105, fg="blue")
#add the response variable values
text(p5rucaDead.geo$coords[,1],p5rucaDead.geo$coords[,2],labels=p5rucaDead.geo$data,adj=c(0,1),cex=0.7)
text(99, 100, expression(bold((f))))
geoR
: A package for geostatistical analysis.” R News 1 (2): 14–18.