Hiện tại tôi đang gặp một số khó khăn với việc tính toán độ trễ không gian R
. Tôi biết cách tính độ trễ ở định dạng không gian rộng nhưng không thể thực hiện ở dạng dài, tức là có các quan sát lặp đi lặp lại cho đơn vị phân tích.
Dưới đây là một số dữ liệu giả để minh họa những gì tôi đang cố gắng làm. Hãy bắt đầu bằng cách tạo ra một số quan sát về các sự kiện mà tôi quan tâm.
# 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
và y
là tọa độ trong khi time
biểu thị khoảng thời gian diễn ra sự kiện. Các sự kiện cần phải được tổng hợp thành đa giác là đơn vị phân tích. Trong ví dụ này, đa giác là các ô lưới và để đơn giản, các ranh giới được cố định theo thời gian.
# 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
Chúng ta có thể vẽ dữ liệu chỉ để có cái nhìn tổng quan về phân phối:
Đối với định dạng toàn không gian, tôi sẽ tính độ trễ không gian theo cách sau:
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
Tuy nhiên, như bạn có thể thấy thực hiện theo cách này không tính đến thực tế là các sự kiện xảy ra vào những thời điểm khác nhau tại thời điểm đó. Nó chỉ đơn giản là tổng hợp mọi thứ đến mức đa giác. Bây giờ tôi muốn tính độ trễ không gian này có tính đến kích thước thời gian này để tổng hợp dữ liệu trong trường hợp này đến mức thời gian đa giác.
Tôi tự hỏi liệu có ai có một gợi ý hữu ích về cách này có thể được thực hiện không? Cách thuận tiện nhất để tính độ trễ không gian ở định dạng dài là gì?
Tôi đã xem xét spacetime
gói nhưng không thành công trong việc áp dụng nó.