En este momento estoy teniendo algunas dificultades para calcular un retraso espacial R
. Sé cómo calcular el retraso en el formato de todo el espacio, pero no puedo hacerlo en forma larga, es decir, tengo observaciones repetidas para la unidad de análisis.
A continuación hay algunos datos simulados para ilustrar lo que estoy tratando de hacer. Comencemos generando algunas observaciones de eventos que me interesan.
# Create observations
pts<-cbind(set.seed(2014),x=runif(30,1,5),y=runif(30,1,5),
time=sample(1:5,30,replace=T))
require(sp)
pts<-SpatialPoints(pts)
x
y y
son las coordenadas, mientras que time
representa el período de tiempo en el que tiene lugar el evento. Los eventos deben agregarse a polígonos, que es la unidad de análisis. En este ejemplo, los polígonos son celdas de cuadrícula y, por simplicidad, los límites se fijan con el tiempo.
# Observations take place in different areas; create polygons for areas
X<-c(rep(1,5),rep(2,5),rep(3,5),rep(4,5),rep(5,5))
Y<-c(rep(seq(1,5,1),5))
df<-data.frame(X,Y)
df$cell<-1:nrow(df) # Grid-cell identifier
require(raster)
coordinates(df)<-~X+Y
rast<-raster(extent(df),ncol=5,nrow=5)
grid<-rasterize(df,rast,df$cell,FUN=max)
grid<-rasterToPolygons(grid) # Create polygons
Podemos trazar los datos solo para obtener una visión general de la distribución:
Para el formato de todo el espacio, calcularía el retraso espacial de la siguiente manera:
pointsincell=over(SpatialPolygons(grid@polygons),SpatialPoints(pts),
returnList=TRUE)
grid$totalcount<-unlist(lapply(pointsincell,length))
require(spdep)
neigh<-poly2nb(grid) # Create neighbour list
weights<-nb2listw(neigh,style="B",zero.policy=TRUE) # Create weights (binary)
grid$spatial.lag<-lag.listw(weights,
grid$totalcount,zero.policy=TRUE) # Add to raster
Sin embargo, como puede ver, hacerlo de esta manera no tiene en cuenta el hecho de que los eventos suceden en diferentes momentos. Simplemente agrega todo al nivel de polígono. Ahora quiero calcular este retraso espacial teniendo en cuenta esta dimensión temporal, agregando los datos en este caso al nivel de tiempo de polígono.
Me pregunto si alguien tiene una sugerencia útil sobre cómo se podría lograr esto. ¿Cuál es la forma más conveniente de calcular retrasos espaciales en formato largo?
Eché un vistazo al spacetime
paquete, pero no tuve éxito al aplicarlo.