3 votos

¿Prueba formalmente si el tipo de edificio tiende a estar cerca de otro tipo de edificio?

En arcGIS 10.1 (licencia avanzada), tengo dos shapefiles de polígonos, cada uno de los cuales representa dos tipos diferentes de edificios (llamémoslos A y B).

En realidad, cada tipo se utiliza para dos fines diferentes. Lo que me gustaría lograr es probar formalmente si el tipo de edificio B tiende a "ocurrir" cerca del tipo de edificio A.

¿Qué procedimiento, dentro de arcGIS o con otros programas, podría seguir?

En cuanto a "otros programas", tenga en cuenta que estoy familiarizado con los programas SAM, GeoDA y Passage, y que no tengo experiencia con GRASS.

2voto

cjstehno Puntos 131

Utilice una prueba de permutación.

Se empieza por construir una forma cuantitativa de medir la proximidad. Puede ser cualquier cosa que te parezca relevante y que mida las distancias típicas entre edificios de tipo A y de tipo B. De forma abstracta, dada cualquier configuración que conste de una capa X de edificios de tipo A y otra capa Y de los edificios de tipo B, dejemos que esta medida se llame t(X,Y) . Se supone que es un número cercano a cero cuando los edificios del tipo B tienden a estar cerca de los del tipo A y aumenta a medida que su relación parece ser cada vez menos fuerte.

Supongamos que hay n características de tipo A y m características de tipo B. La hipótesis nula (de ausencia de relación) puede expresarse claramente suponiendo que la asignación de tipos al n+m características es perfectamente aleatoria, condicional en el hecho de que n se le asignará el tipo A y m se le asignará el tipo B. Hay C(n+m,n) = (n+m)!/n! distintas asignaciones de este tipo. Asociado a cada una de ellas está su valor de t(X,Y) . Se obtiene así una distribución de números C(n+m,n). Si el valor real de t(X,Y) es menor que la mayoría de los números de esa distribución, se tiene evidencia de una asociación espacial. En particular, el valor p de esta prueba de hipótesis es la proporción de todas las asignaciones cuyo t es menor o igual que el valor real t valor.

Como C(n+m,n) suele ser enorme (por ejemplo, con n \= m \= 100 es mayor que 9E+58), no es práctico calcular la distribución completa. Sin embargo, es eminentemente práctico estimar la distribución completa por simulación: hacer aleatoriamente unos cientos (o más) de asignaciones de la n+m edificios en n de tipo A y m del tipo B. Para cada asignación aleatoria se calcula t . La distribución de estos valores se aproxima a la distribución verdadera. Estime el valor p como la proporción de estas distribuciones simuladas para las que t es menor o igual que el actual t valor.

Esto puede hacerse de forma expeditiva (al menos para capas pequeñas, con menos de unos pocos miles de rasgos en total) precalculando una matriz de distancia entre todos los n+m y basar la estadística de proximidad en las distancias. Esto le permite utilizar una plataforma informática adecuada para la prueba de permutación, ya que no necesita realizar operaciones de SIG.


Como ejemplo, este código genera 100 características puntuales de tipo A al azar. Se muestran como puntos abiertos en el mapa de la izquierda. A continuación, genera otros 50 rasgos puntuales de tipo B cercanos a los primeros 50 rasgos de tipo A. Aparecen como puntos grises sólidos en el mapa. (Me resulta difícil determinar si hay alguna asociación espacial visible entre los dos tipos, aunque sé que la hay). Para el t calcula la distancia media de los rasgos de tipo A a los de tipo B y calcula la distancia media de los rasgos de tipo B a los de tipo A. Devuelve el menor de estos dos promedios. El histograma de la derecha muestra la distribución creada a partir de 1000 permutaciones. La línea roja vertical marca el valor de la distancia real t estadística. Como está muy a la izquierda (cerca del extremo inferior), se trata de una prueba significativa de asociación espacial.

Figures

#
# Create data.
#
n <- 100
m <- 50
set.seed(17)
a <- matrix(rnorm(2*n), ncol=2)
b <- matrix(rnorm(2*m, a[1:m, ], sd=1/5), ncol=2)
#
# Map them.
#
par(mfrow=c(1,2))
plot(rbind(a,b), xlab="x", ylab="y", main="Features")
points(b, pch=16, col="#909090")
#
# Describe calculations needed for the test.
#
features <- rbind(a, b)
distance2 <- outer(features[ ,1], features[, 1], function(x,y) (x-y)^2) +
  outer(features[ ,2], features[, 2], function(x,y) (x-y)^2)

stat <- function(i, j) {
  min(mean(apply(distance2[i, j], 1, min)),
      mean(apply(distance2[i, j], 2, min)))
}
#
# Perform the test.
#
t.0 <- stat(1:n, 1:m + n)
sim <- replicate(1e3, {
  i <- sample.int(n+m, n)
  j <- setdiff(1:(n+m), i)
  stat(i, j)
})
p.value <- mean(c(1, sim <= t.0))
#
# Plot its results.
#
hist(sim, xlim=range(c(t.0, sim)), main=paste("P-value =", round(p.value, 4)))
abline(v=t.0, col="Red", lwd=2)

Referencia

Phillip Good, Pruebas de hipótesis por permutación, paramétricas y Bootstrap . Tercera edición (2005), Springer.

1voto

Dan Puntos 1

Puede hacerlo con las herramientas de "Selección por ubicación".

En ArcMap, vaya al menú "Selección" y haga clic en "Seleccionar por ubicación". En la ventana "Seleccionar por ubicación", en "Capas de destino", elija la capa Edificio B.

A continuación, como "capa de origen" se elige el edificio A.

A continuación, como "Método de selección espacial para las características de la capa de destino" se elige un método de selección adecuado. La razón por la que digo que seleccione un método apropiado es porque no sé cómo se ven sus datos, ¿se cruzan las capas? entonces elija ese método. Quieres ver cuántos edificios de A están a x metros de B, entonces eliges "están a una distancia...".

Espero que esto ayude. Si hace clic en el enlace azul de la esquina izquierda de la ventana "Seleccionar por ubicación", accederá a una buena guía sobre los diferentes métodos de selección.

0voto

user68492 Puntos 231

Tendrá que determinar una distancia que sea su umbral para saber si el Edificio B está o no "cerca" de un Edificio A. Utilice esa distancia para crear buffers alrededor del Edificio A. Cada Edificio A necesita su propio buffer, así que no disuelva la salida. Una vez que tenga sus topes, puede seleccionar por ubicación como mencionó esset o utilizar una intersección para crear un archivo shape permanente con el que trabajar. A partir de ahí puede utilizar un par de métodos diferentes para estudiar sus datos. Puede utilizar un tamaño de muestra y promediar cuántas B están dentro de las As. Puede determinar otro umbral para lo que contaría como un clúster y luego contar cuántas de esas instancias tiene. Es posible que tenga que ajustar su método dependiendo de lo que esté buscando exactamente.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X