No momento, estou tendo algumas dificuldades para calcular um atraso espacial R
. Sei como calcular o atraso no formato de todo o espaço, mas não consigo fazê-lo de forma longa, ou seja, tenho repetidas observações para a unidade de análise.
Abaixo estão alguns dados simulados para ilustrar o que estou tentando fazer. Vamos começar gerando algumas observações de eventos nos quais estou interessado.
# 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
e y
são as coordenadas enquanto time
representa o período em que o evento ocorre. Os eventos precisam ser agregados aos polígonos, que é a unidade de análise. Neste exemplo, os polígonos são células de grade e, por simplicidade, os limites são fixados ao longo do tempo.
# 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 plotar os dados apenas para obter uma visão geral da distribuição:
Para o formato de todo o espaço, eu calcularia o atraso espacial da seguinte maneira:
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
No entanto, como você pode ver dessa maneira, não leva em consideração o fato de que os eventos acontecem em momentos diferentes no momento. Simplesmente agrega tudo ao nível do polígono. Agora eu quero calcular esse atraso espacial levando em consideração essa dimensão temporal, agregando os dados nesse caso ao nível de tempo do polígono.
Gostaria de saber se alguém tem uma sugestão útil sobre como isso pode ser feito. Qual é a maneira mais conveniente de calcular atrasos espaciais em formato longo?
Dei uma olhada no spacetime
pacote, mas não consegui aplicá-lo.