Im Moment habe ich einige Schwierigkeiten bei der Berechnung einer räumlichen Verzögerung in R
. Ich weiß, wie man die Verzögerung im raumweiten Format berechnet, kann sie aber nicht in langer Form durchführen, dh ich habe Beobachtungen für die Analyseeinheit wiederholt.
Unten finden Sie einige Scheindaten, um zu veranschaulichen, was ich versuche zu tun. Beginnen wir damit, einige Beobachtungen von Ereignissen zu generieren, an denen ich interessiert bin.
# 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
und y
sind die Koordinaten, während time
sie den Zeitraum darstellen, in dem das Ereignis stattfindet. Die Ereignisse müssen zu Polygonen aggregiert werden, die die Analyseeinheit darstellen. In diesem Beispiel sind die Polygone Gitterzellen, und der Einfachheit halber sind die Grenzen über die Zeit festgelegt.
# 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
Wir können die Daten nur zeichnen, um einen Überblick über die Verteilung zu erhalten:
Für ein raumweites Format würde ich die räumliche Verzögerung folgendermaßen berechnen:
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
Wie Sie sehen, berücksichtigt dies jedoch nicht die Tatsache, dass die Ereignisse zu unterschiedlichen Zeitpunkten stattfinden. Es aggregiert einfach alles auf die Polygonebene. Jetzt möchte ich diese räumliche Verzögerung unter Berücksichtigung dieser zeitlichen Dimension berechnen, um die Daten in diesem Fall auf der Ebene der Polygonzeit zu aggregieren.
Ich frage mich, ob jemand einen nützlichen Vorschlag hat, wie dies erreicht werden könnte. Was ist die bequemste Methode zur Berechnung räumlicher Verzögerungen im Langformat?
Ich habe mir das spacetime
Paket angesehen, konnte es aber nicht anwenden.