現時点では、で空間ラグを計算するのにいくつか問題がありますR
。スペース全体の形式でラグを計算する方法を知っていますが、長い形式で計算することはできません。つまり、分析単位の観測を繰り返しています。
以下は、私が何をしようとしているのかを説明するための模擬データです。まず、興味のあるイベントの観測を生成します。
# 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
は、time
イベントが発生する期間を表す座標です。イベントは、分析の単位であるポリゴンに集約する必要があります。この例では、ポリゴンはグリッドセルであり、簡単にするために、境界は時間の経過とともに固定されます。
# 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
分布の概要を取得するためだけにデータをプロットできます。
スペース全体のフォーマットでは、次の方法で空間ラグを計算します。
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
ただし、ご覧のように、この方法では、イベントが同時に発生するという事実は考慮されません。単にすべてをポリゴンレベルに集約するだけです。次に、この時間的次元を考慮してこの空間遅延を計算して、この場合のデータをポリゴン時間レベルに集約したいと思います。
これをどのように達成できるかについて誰かが有益な提案をしているのだろうか?長い形式で空間ラグを計算する最も便利な方法は何ですか?
spacetime
パッケージを確認しましたが、適用に失敗しました。