2016-08-08 8 views
2

私はRで座標データを持っています。私のポイントがどこにあるかの分布を決定したいと思います。ポイントの全体のスペースは、辺の長さの正方形です。Rでの2Dビンの作成

正方形の異なるセグメントにポイントを割り当てたいと思います。たとえば、最も近い5に丸めます。cutfindintervalを使用していますが、i 2dビンを作成するときにこれをどのように使用するのか分かりません。

実際には、グリッドの隣接する領域の間に巨大なジャンプがないように、分散を円滑にすることができるようにしたいと考えています。例えば

(これは単に問題を説明するためのものです):

set.seed(1) 
x <- runif(2000, 0, 100) 
y <- runif(2000, 0, 100) 
plot(y~x) 
points(x = 21, y = 70, col = 'red', cex = 2, bg = 'red') 

赤いポイントが偶然に他の多くのポイントを持っていない地域では、明らかなので、ここでの密度は次のようになり隣接する領域の密度からジャンプし、私はあなたがggplot2を使用するために喜んでいる場合は、いくつかの素晴らしいオプションがある

enter image description here

答えて

1

ashライブラリのbin2機能を使用して、ビニングされたデータを取得できます。

赤い点の周囲の領域のデータの希薄さの問題に関して、考えられる解決策の1つは、平均シフトされたヒストグラムです。ヒストグラムを数回シフトしてビン数を平均した後、データをビンします。これは、ビンの起源​​の問題を緩和する。たとえば赤点がビンのトプフロットまたはビンの右下である場合、赤点を含むビン内の点の数がどのように変化するかを想像することができる。

library(ash) 
bins <- bin2(cbind(x,y)) 
f <- ash2(bins, m = c(10,10)) 

image(f$x,f$y,f$z) 
contour(f$x,f$y,f$z,add=TRUE) 

あなたがスムーズにビンをご希望の場合は、各変数に沿って平滑化パラメータを制御する長さ2のベクトルである引数mを増やしてみてください可能性があります。

f2 <- ash2(bins, m = c(10,10)) 
image(f2$x, f2$y, f2$z) 
contour(f2$x,f2$y,f2$z,add=TRUE) 

はビニングアルゴリズムは、Fortranで実装され、非常に高速ですff2 enter image description here

を比較します。

+1

ところで、灰は、一般にヒストグラムに基づく方法よりも良い密度推定値であるkdesを使用することで、計算上効率的な代替手段です。思考プロセスの背後にある論理に注目するだけの価値があります。高速なほとんどのkdeの実装では、密度推定値のビニングされた推定値を使用することも考慮する必要があります。 – shayaa

2

これを滑らかにすることができるようにしたいと思います。

ggplot(data.frame(x,y), aes(x,y)) + geom_bin2d() 

enter image description here

ggplot(data.frame(x,y), aes(x,y)) + stat_density2d(aes(fill = ..level..), geom = "polygon") 

enter image description here

更新:でき

library(KernSmooth) 
bins <- bkde2D(as.matrix(data.frame(x, y)), bandwidth = c(2, 2), gridsize = c(25L, 25L)) 

:2Dビニングを計算するには、2D(二変数)通常のカーネル密度の平滑化を使用することができます

012とプロットする
library(reshape2) 
ggplot(melt(bins$fhat), aes(Var1, Var2, fill = value)) + geom_raster() 

enter image description here

bins目的はxy値と正規化密度fhatを含有します。グリッドサイズ(各方向のグリッドポイントの数)と帯域幅(スムージングスケール)を使用して再生し、後で何かを得る。

+1

ここでビンを抽出するにはどうすればよいですか?各ビンに割り当てられた確率は? – dimebucker91

+0

更新された回答。 –

関連する問題