Parece que esta pregunta está relacionada con una anterior que pregunta sobre cómo disfrazar dichos datos utilizando una cuadrícula irregular. Si aceptamos que se utilizará una cuadrícula regular , entonces parece que
La mayoría de las celdas deben ser lo suficientemente grandes como para cubrir cinco o más edificios y
Cuando las celdas no cubren cinco edificios, sus valores deben cambiarse de manera impredecible (pero controlada).
La forma en que mides el error determina la mejor solución. Deje que el valor que se calculará en una celda sea y y que los valores de los edificios ubicados dentro (o al menos superpuestos) de esa celda sean x1 , x2 , ..., xk . Además, suponga que cada edificio tiene un "nivel de interés" no negativo (que podría ser proporcional a la cantidad de residentes en él), que se utilizará como un sustituto de la cantidad esperada de veces que su ráster se usará para estimar que Valor del edificio. Llamemos a estos niveles w1 , ..., wk respectivamente y dejemos que w designe su suma (distinta de cero).
El error absoluto promedio es la media aritmética de los tamaños de error | y - xi | como i se extiende sobre los índices de construcción. Esto se minimiza eligiendo y para ser la mediana de xi .
El error máximo es el mayor entre max (| y - xi |) cuando i se extiende sobre los índices de construcción. Esto se minimiza eligiendo y para ser el rango medio de ( xi ) (promedio del máximo y mínimo). Sin embargo, esto está fuertemente influenciado por un solo valor periférico, por lo que la mediana podría ser preferible.
El error esperado es el promedio ponderado de | y - xi | con los pesos dados por wi / w . Esto se minimiza mediante la adopción y ser una mediana ponderada de la xi (pero sin SIG va a hacer este cálculo para usted - usted tendrá que usar un paquete estadístico o matemático como R
o Mathematica . Por dichos trabajos)
El error al cuadrado esperado es el promedio ponderado de ( y - xi ) ^ 2. Se minimiza tomando y como la media ponderada de xi , igual a la suma de wi xi / w .
Puede ser feliz con (1) o (2) debido a su simplicidad e interpretación directa; Incluí (3) y (4) para dar una idea de las opciones. Para implementar (1), puede comenzar cuadriculando todos los datos con un tamaño de celda tan pequeño que cada edificio ocupe su propia celda. (Con una extensión de alrededor de 200 por 300 km, un tamaño de celda de, digamos, 5 m requeriría una cuadrícula enorme de 40,000 por 60,000 celdas, pero solo alrededor de un millón de ellas estarían ocupadas, requiriendo solo alrededor de 10 MB de almacenamiento en disco en nativo Formato de arco si tiene cuidado de almacenar los valores como enteros.) Agregue esta cuadrícula a un tamaño de celda más grande utilizandoMedian
opción. (El tamaño de la celda de la cuadrícula agregada probablemente sea de alrededor de 100 m, lo que da una cuadrícula de 2000 por 3000 celdas en todo el país: lo suficientemente pequeño como para hacer que los procedimientos que se describen a continuación no solo sean practicables, sino más bien rápidos de ejecutar).
También debe agregar una cuadrícula de indicadores binarios de los edificios, solicitando Sum
esta vez, para contar el número de edificios por celda. Para células agregadas con recuentos inferiores a 5, perturbar aleatoriamente la mediana. Haz esto con una Con
operación. Una opción efectiva, aunque un poco complicada, para la perturbación sería agregar ruido normalmente distribuido al logit del valor (escalado de 0 a 1 en lugar de 0 a 100): esto garantizará un resultado que todavía se encuentra entre 0 y 100 También puede perturbar ligeramente todas las celdas para que nadie pueda distinguir las celdas perturbadas de las no perturbadas inspeccionando los dígitos menos significativos.
El flujo de trabajo para este procedimiento de "perturbación logística" es el siguiente. Depende de dos parámetros: "sigma" es la cantidad de perturbación de las células que lo necesitan y "epsilon" es la cantidad mínima para perturbar todas las células. Ambos son números no negativos. Experimente en pequeñas cuadrículas, comenzando con sigma = 0.15 y epsilon = 0.01, y varíe estos parámetros hasta que los resultados sean satisfactorios. (Establecer epsilon en cero eliminará la perturbación por completo para tales celdas).
Comience con una cuadrícula [Z] de valores medianos (todos en el rango de 0 a 100) y otra cuadrícula [N] contando el número de edificios en cada celda, ambos producidos por Aggregate
.
Cree una cuadrícula para las cantidades de perturbación usando un Con
comando como
Con["N" < 5, sigma, epsilon]
Genere la perturbación normalmente distribuida tomando una cuadrícula de unidades de variables normales (use CreateNormalRaster y multiplicándola por la cuadrícula anterior. Llame al resultado "e", por ejemplo.
Calcule los logits perturbados de los valores como
[Logit] = log("z" / (100 - "z")) + "e"
Convertir de nuevo a valores en el rango 0..100:
100 / (1 + exp(-"logit"))
Para ilustrar, aquí hay un R
código para crear pequeñas cuadrículas agregadas de muestra, perturbarlas y comparar las perturbadas con los valores originales.
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)