この質問は、不規則なグリッドを使用してそのようなデータを偽装することについて尋ねる以前の質問に関連しているようです。通常のグリッドが使用されることを受け入れると、それは
エラーの測定方法によって、最適なソリューションが決まります。セルで計算される値をyとし、そのセル内にある(または少なくともオーバーラップしている)建物の値をx1、x2、...、xkとします。さらに、各建物に負でない「関心のレベル」(その居住者の数に比例する可能性がある)があり、ラスターがその推定に使用される回数の予想される数の代理として使用されるとします。建物の価値。これらのレベルをそれぞれw1、...、wkと呼び、wにそれらの(ゼロ以外の)合計を指定させましょう。
平均絶対誤差は |エラーサイズの算術平均であります y - xi | 私は、建物のインデックスを超える範囲です。これは、xiの中央値としてyを選択することで最小化されます。
最大誤差は |(最高の中で最大であるY - XIとして|)私は建物のインデックス上での範囲です。これは、(xi)(最大値と最小値の平均)の中間範囲になるようにyを選択することで最小化されます。ただし、これは単一の範囲外の値の影響を大きく受けるため、中央値が望ましい場合があります。
予想されるエラーが |の加重平均であります y - xi | wi / wで与えられた重みで。これは、yをxiの重み付き中央値とすることで最小化されます(ただし、GISはこの計算を行いません。そのような作業には、R
またはMathematicaのような統計的または数学的なパッケージを使用する必要があります)。
二乗誤差が予想される(の加重平均であり、Y - XI ^ 2)。これを最小化するには、yをxiの加重平均として、wi xi / wの合計に等しくします。
(1)または(2)は、その単純さと直接的な解釈により、満足するかもしれません。(3)と(4)を含めて、オプションの意味を説明しました。(1)を実装するには、まず、各建物が独自のセルを占有するほど小さいセルサイズですべてのデータをグリッド化します。(約200 x 300 Kmの範囲で、たとえば5 mのセルサイズでは、40,000 x 60,000セルの巨大なグリッドが必要になりますが、占有されるセルは約100万個だけなので、ネイティブで約10 MBのディスクストレージしか必要ありません。あなたは整数として値を格納するために世話をする場合は、アーク形式。) 集約このグリッド使用して、より大きなセルサイズにMedian
オプション。(集約されたグリッドのセルサイズは約100mになる可能性があり、2000 x 3000セルの全国規模のグリッドを提供します。以下で説明する手順を実行可能にするだけでなく、実行を迅速化するのに十分なほど小さくします。)
Sum
セルごとの建物の数を数えるには、建物のバイナリインジケーターグリッド(今回はリクエストする)も集計する必要があります。カウントが5未満の凝集細胞では、中央値がランダムに摂動します。これをCon
演算で行います。摂動の効果的な選択は、少し複雑ではありますが、値のロジットに正常に分布するノイズを追加することです(0から100ではなく0から1にスケーリング)。これにより、0から100の間の結果が保証されます。また、最下位の桁を検査することによって、乱されたセルと乱されていないセルを区別できないように、すべてのセルをわずかに摂動することもできます。
この「ロジスティック摂動」手順のワークフローは、次のとおりです。それは2つのパラメーターに依存します。「シグマ」はそれを必要とする細胞の摂動の量であり、「イプシロン」はすべての細胞を摂動させる最小量です。どちらも負でない数です。sigma = 0.15とepsilon = 0.01で始まる小さなサブグリッドで実験し、結果が満足できるものになるまでこれらのパラメーターを変化させます。(イプシロンをゼロに設定すると、そのようなセルの摂動は完全になくなります。)
中央値(すべて0〜100の範囲)のグリッド[Z]と、それぞれによって生成された各セルの建物の数をカウントする別のグリッド[N]から始めAggregate
ます。
Con
次のようなコマンドを使用して、摂動量のグリッドを作成します
Con["N" < 5, sigma, epsilon]
単位正規変量のグリッドを取得して、正規分布の摂動を生成します(CreateNormalRasterを使用し、前のグリッドを掛けます。結果を "e"と呼びます。
値の摂動ロジットを次のように計算します
[Logit] = log("z" / (100 - "z")) + "e"
0..100の範囲の値に変換します。
100 / (1 + exp(-"logit"))
例として、R
小さなサンプルの集計グリッドを作成して摂動し、摂動したものを元の値と比較するコードを次に示します。
ncol <- 30; nrow <- 20
seed.random <- 17
x <- rpois(ncol * nrow, 5)
y <- floor(100 / (1 + exp(-(rnorm(ncol * nrow, mean = -2, sd = 1/sqrt(x))))))
sigma <- 0.15
epsilon <- 0.01
e <- rnorm(ncol*nrow, sd = ((x < 5)*sigma + (x >= 5)*epsilon))
logit <- log(y / (100 - y)) + e
y0 <- 100 / (1 + exp(-logit))
library(raster)
z <- matrix(y, ncol=ncol)
n <- matrix(x, ncol=ncol)
z0 <- matrix(y0, ncol=ncol)
par(mfrow=c(2,2))
n.r <- raster(n)
plot(n.r, main="Counts of residences [N]")
z.r <- raster(z)
plot(z.r, main="Median values [Z]")
z0.r <- raster(z0)
plot(z0.r, main="Perturbed median values")
plot(y, y0, type="n", xlab="Original medians", ylab="Perturbed medians",
main="Perturbed vs. original medians")
points(y[x < 5], y0[x < 5], col="Red")
points(y[x >= 5], y0[x >= 5], pch=19)