2016-09-08 13 views
0

spatstatでマークを割り当てて、空間的にクラスタリングする傾向があることを知っている人はいませんか?私は4つのグループに分類したい緯度の長い座標のセットを持っています。私は、ランダムに次のコードを使用して、これらのポイントにマーク/グループを割り当てる方法を考え出した:はクラスタ化されたspatstatマークを生成しますか?

as.ppp(data, window ,marks=factor(sample(1:4,replace=TRUE))) 

しかし、私はグループが互いに近接するポイントを占有する傾向があるようにマークを割り当てる方法を見つけ出すことはできません。さらに複雑な問題として、私は各グループ内のポイント数が毎回同じで指定番号になることを望みます。誰にもリードはありますか?前もって感謝します!

+0

あなたのポイントは、緯度ある限り、あなたは距離などでspatstat前にフラットなマップにそれらを投影する必要がある場合は、正しくあります。座標を投影する方法の例については、http://stackoverflow.com/questions/35873254/unit-length-in-spatstatを参照してください。 –

答えて

0

通常、spatstatでは、ランダムな位置にポイントを記述/生成し、場合によってはランダムなマークで記述するモデルを定義します。私があなたを正しく理解していれば、固定された場所があり、ランダムなマークを割り当てたいだけです。何点ありますか?あまりにも多くのポイントがない場合は、多変量正規分布変数を生成し、最初のマークのn_1の最小値、2番目のマークの次のn_2の値などを取ることが簡単な提案です。ポイントの4つの等しいサイズのグループとの簡単な例:ところで

library(spatstat) 
library(mvtnorm) 
set.seed(42) # Make reproducible 
X <- redwood # Example data 
n <- npoints(redwood) 
Xdist <- pairdist(X) # n x n matrix of distances in X 
decay_rate <- 1 # Parameter for covariance sturcture 
sigma <- exp(-decay_rate * Xdist) 
m <- rmvnorm(1, rep(0, n), sigma) 
breaks <- quantile(m, probs = c(0, .25, .5, .75, 1)) # breaks to cut marks in four equal sized groups 
marks(X) <- cut(m, breaks = breaks, include.lowest=TRUE, labels = 1:4) 
plot(X) 

points marked in four groups

関連する問題