¿Cómo elegir el método de interpolación de trama?

8

Trabajo con un conjunto de datos de ~ 1.3 millones de edificios residenciales; cada uno de ellos se describe mediante una variable normalmente distribuida que va de 0 a 100. El conjunto de datos cubre toda Suiza, por lo que obviamente hay áreas con densidad de puntos muy densa y muy escasa.

La limitación impuesta por nuestro proveedor de datos es que no podemos publicar conjuntos de datos más detallados que 5 edificios.

Estaba pensando en convertir estos datos de puntos en una superficie ráster. Mi objetivo principal en este ejercicio sería crear la superficie que minimice el error que surgirá cuando alguien intente obtener el valor de punto de este ráster extrayendo datos en las ubicaciones de puntos de interés de su persona (en comparación con extraerlo del conjunto de datos original de ubicaciones de puntos).

Me gustaría saber qué tipo de método debería ser el más adecuado para hacerlo. Hay bastantes para elegir en la caja de herramientas de Spatial Analyst y aún más en la Geoestadística, por lo que agradecería mucho alguna ayuda para comenzar.

radek
fuente
1
¿Qué representa la variable?
Dan C
@DanC Es una medida similar al índice de privación .
radek
¿Desea tener celdas ráster solo donde tiene puntos y NoData alrededor, o desea interpolar entre puntos? ¿Qué tamaño de celda desea elegir y cuál es la distancia mínima y máxima entre puntos, aproximadamente? Quiero decir cuántos puntos pueden caer en una celda (tal vez> 5) y cuántas celdas estarán sin puntos.
nadya
@nadya Ad1: estoy contento con ambas soluciones y elegiría la que presente menos error. Ad2: no estoy limitado en el tamaño de la celda siempre que cumpla con los requisitos de privacidad; La distancia mínima puede ser de pocos metros, ¿máxima? bueno, probablemente diagonal de todo el país? Ad3: para una cuadrícula de 100 m, el número de puntos puede ser de hasta ~ 50; y la cantidad de ventas vacías, potencialmente realmente grande.
radek

Respuestas:

10

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).

  1. 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 .

  2. 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.

  3. 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 Ro Mathematica . Por dichos trabajos)

  4. 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 utilizandoMedianopció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 Sumesta 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 Conoperació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).

  1. 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.

  2. Cree una cuadrícula para las cantidades de perturbación usando un Concomando como

    Con["N" < 5, sigma, epsilon]
    
  3. 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.

  4. Calcule los logits perturbados de los valores como

    [Logit] = log("z" / (100 - "z")) + "e"
    
  5. Convertir de nuevo a valores en el rango 0..100:

    100 / (1 + exp(-"logit"))
    

Para ilustrar, aquí hay un Rcó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)

Parcelas

whuber
fuente
Muchas gracias, de nuevo, una respuesta muy completa. Correcto: es otro enfoque del problema y la pregunta está relacionada con la que usted mencionó. La solución se ve bien: ¡lo intentaré con mi conjunto de datos lo antes posible!
radek