Como elección para el desarrollo en relación a la temática de patrones puntuales, se utiliza una base de datos que contiene información acerca de la ubicacióndonde se ha realizado una venta de propiedad raíz en la ciudad de Nueva York en el año 2016. Se tiene información acerca de la localización, precio, área, tarifa de impuestos y demás. Para el análisis a realizar, se ignorará toda información que no sea la localización de la venta.
Las posibles preguntas de interés pueden relacionarse, dada la variable aleatoria se relacionan con la distribución de las ventas inmobiliarias; ¿Existe relación espacial? ¿De que tipo? ¿Es interpretable? ¿Como?
Se podría esperar que el fenómeno tiene observaciones aleatorias en toda la ventana de observación pues, es claro que; se esperaría que el lugar donde se realizará una venta inmobiliaria aleatorio. Entonces, dada toda esta información y contexto, se desarrollan los siguientes análisis para mayor comprensión del fenómeno de interés.
Finalmente, la idea es pues; aplicar las técnicas vistas a lo largo del curso y concluir respecto a lo que se encuentre en el análisis desarrolado posteriormente.
Llegados a este punto lo primero que se debe hacer es visualizar el lugar en el que se va a trabajar espacialmente, esto con el fin de contextualizar al lector.
load("Contour_Points.RData")
ggplot(data = NY_border) +
geom_sf(fill = "cyan") +
labs(title = "Mapa de la ciudad de Nueva York") +
theme_bw() +
theme(axis.text = element_blank(), axis.ticks = element_blank(),
title = element_text(hjust = .5, size = 15),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank())
A continuación se muestra una visualización interactiva de los lugares donde se tiene registro de que hubo la venta de una propiedad en la ciudad de Nueva York durante el año 2016.
datos <- readRDS("locations.Rds")
leaflet(data = datos,
options = leafletOptions(minZoom = 10, maxZoom = 12)) %>%
addTiles() %>%
addCircleMarkers(lat = ~lat, lng = ~lon, radius = 0.1)
Como se puede apreciar, se tiene una amplia distribución de puntos en toda la ciudad, viéndose concentraciones de ventas en distintos grados, por lo que hablando del proceso Poisson subyacente que se asume para el modelo que se desea hacer. Dicho esto se hace necesario evaluar si la intensidad es constante o no, en aras de saber como proceder para los siguientes pasos del proceso que está siendo llevado a cabo.
plot(NY_border, main = "Ubicaciones de los datos\nen la ciudad de Nueva York",
axes = T, xaxt = "n", yaxt = "n")
plot(locations, add = T, pch = 20, col = "red", cex = 0.5)
De la anterior visualización se puede apreciar como ciertas clases de conglomerados (clusters) se forman en las locaciones donde hubo ventas de propiedades, sin embargo no se asevera nada hasta el momento pues un análisis más exhaustivo será hecho a continuación.
Se realiza la división de Nueva York en nueve zonas, trazando tres lineas paralelas tanto horizontal como verticalmente, generando el gráfico que se muestra a continuación.
ppp.NY <- readRDS("pppNY.Rds")
qc.NY <- quadratcount(ppp.NY, nx = 3, ny = 3)
plot(ppp.NY, main = "Conteo por cuadrantes",
axes = T, xaxt = "n", yaxt = "n")
plot(qc.NY, add = T, textargs = list(col = "red"))
De allí se puede observar una disparidad grande respecto al número de ocurrencias del proceso en las divisiones generadas sobre la ciudad de Nueva York, donde las zonas de mayor actividad son aquellas cercanas al centro de la ciudad y en Staten Island.
Posterior al análisis gráfico, se realiza la prueba de bondad de ajuste \(\chi^2\) para contrastar el siguiente juego de hipótesis.
\[ \begin{cases} \begin{aligned} \text{H}_0: &\text{Las localizaciones de las ventas de propiedades en Nueva York tienen aleatoriedad espacial completa} \\ \text{H}_1: &\text{Las localizaciones de las ventas de propiedades en Nueva York } \textbf{NO} \text{ tienen aleatoriedad espacial completa} \end{aligned} \end{cases} \]
quadrat.test(ppp.NY)
##
## Chi-squared test of CSR using quadrat counts
##
## data: ppp.NY
## X2 = 1088.2, df = 18, p-value < 2.2e-16
## alternative hypothesis: two.sided
##
## Quadrats: 19 tiles (irregular windows)
De allí se obtuvo un valor p del orden de \(10^{-16}\) por lo que realmente hay un rechazo condundente por parte del test hacia la hipótesis de homogeneidad en el proceso y por tanto se está ante un proceso Poisson inhomogéneo.
El parámetro de la intensidad habla acerca del número de puntos esperados por unidad de área. Dadas las divisiones realizadas a la ciudad de Nueva York; se constató que la intensidad en este caso no es un parámetro constante en el proceso subyacente, por lo que se pretende realizar un ajuste de la intensidad usando distintos métodos de suavizamiento.
A manera ilustrativa, se presentan entonces varios posibles ajustes del kernel con parámetros de anchura diferentes, dados por diversas propuestas. Se procede a analizar los resultados obtenidos.
Método
En general y sin importar la medida tomada del parámetro sigma, se ve claramente unas “zonas de calor” donde la variable aleatoria tiene mayor patrón de conglomerados. Esto es consistente con el análisis realizado descriptivamente. Note que para valores pequeños de sigma (a partir de 1000 e inferiores) el parámetro de amplitud no logra seguir la tenencia general y se centra más en los datos (sobreajuste). Para valores muy altos de dicho parámetro, se tiene en general; el análisis opuesto.
Por estos motivos, se seleccionó el parámetro de ancho de banda alrededor de 2000 para cada componente con el método de Scott. Dicho método dio un buen resultado aproximándose a un ancho de banda ideal puesto que se sigue la tendencia general de los datos sin dejarse llevar por el ruido.
Luego de haber realizado la estimación de la intensidad a través de kernel, se procede a realizar el ajuste de modelos log-lineales para la intensidad ya que el modelamiento de esta, vía dicho conducto, es de gran utilidad cuando el proceso es inhomogéneo como es el caso de las ventas de inmuebles en la ciudad de Nueva York.
Se realizó el ajuste de tres modelos con una componente puramente lineal, obteniendo los siguientes resultados.
\[log[\lambda_{\theta}(x, y)] = \theta_0 + \theta_1 x\]
Se puede observar claramente que los modelos lineales no representan un buen ajuste, ya que los datos parecen encontrarse en conglomerados y las tendencias lineales no permiten generar formas que geométricamente capturen dichos clusters. Adicionalmente, se tiene que existen lugares donde las intensidades estimadas no se corresponden con la cantidad de puntos de los que se tiene registro.
Se puede observar claramente que los modelos lineales no representan un buen ajuste, ya que los datos parecen encontrarse en conglomerados y las tendencias lineales no permiten generar formas que geométricamente capturen dichos clusters. Adicionalmente, se tiene que existen lugares donde las intensidades estimadas no se corresponden con la cantidad de puntos de los que se tiene registro.
\[log[\lambda_{\theta}(x, y)] = \theta_0 + \theta_1 y\]
Se puede observar claramente que los modelos lineales no representan un buen ajuste, ya que los datos parecen encontrarse en conglomerados y las tendencias lineales no permiten generar formas que geométricamente capturen dichos clusters. Adicionalmente, se tiene que existen lugares donde las intensidades estimadas no se corresponden con la cantidad de puntos de los que se tiene registro.
Se puede observar claramente que los modelos lineales no representan un buen ajuste, ya que los datos parecen encontrarse en conglomerados y las tendencias lineales no permiten generar formas que geométricamente capturen dichos clusters. Adicionalmente, se tiene que existen lugares donde las intensidades estimadas no se corresponden con la cantidad de puntos de los que se tiene registro.
\[log[\lambda_{\theta}(x, y)] = \theta_0 + \theta_1 x + \theta_2 y\]
Se puede observar claramente que los modelos lineales no representan un buen ajuste, ya que los datos parecen encontrarse en conglomerados y las tendencias lineales no permiten generar formas que geométricamente capturen dichos clusters. Adicionalmente, se tiene que existen lugares donde las intensidades estimadas no se corresponden con la cantidad de puntos de los que se tiene registro.
Se puede observar claramente que los modelos lineales no representan un buen ajuste, ya que los datos parecen encontrarse en conglomerados y las tendencias lineales no permiten generar formas que geométricamente capturen dichos clusters. Adicionalmente, se tiene que existen lugares donde las intensidades estimadas no se corresponden con la cantidad de puntos de los que se tiene registro.
Teniendo en cuenta las propiedades geométricas de las formas cuadráticas y del hecho de que los ajustes lineales no lograron capturar bien la intensidad del fenómeno (visualmente hablando), se decide realizar el ajuste de modelos con componentes cuadráticas.
\[log[\lambda_{\theta}(x, y)] = \theta_0 + \theta_1 x + \theta_2 y + \theta_3 x^2 + \theta_4 y^2\]
\[log[\lambda_{\theta}(x, y)] = \theta_0 + \theta_1 x + \theta_2 y + \theta_3 x^2 + \theta_4 y^2 + \theta_5 xy\]
Como se puede ver, ambos modelos logran capturar de buena manera lo que se logra apreciar en cuanto a la intensidad del proceso, sin embargo es claro que el mejor ajuste lo logra el modelo que incluye interacción entre las componentes espaciales, puesto que este representa una mayor flexibilidad al otorgar capacidad de rotación a las figuras geométricas que representan la componente cuadrática.
Así el mejor modelo paramétrico es el log-lineal cuadrático con interacción, cuya estimación es
\[log[\hat{\lambda}_{\theta}(x, y)] = -0.0038 -0.0182 x + 0.0193 y -1.61 \times 10^{-9} x^2 + 4.456 \times 10^{-9} y^2 - 2.434 \times 10^{-9} xy\]
Sin embargo dichos modelos son bastante inestables numéricamente, por lo que los posteriores análisis se realizarán usando la intensidad ajustada vía el método de Scott.
Luego de realizar un ajuste adecuado de la intensidad es hora de observar detalles de si al patrón se pueden adjudicar ciertos comportamientos como agregación o inhibición, para esto se usaron estiamciones de la función \(K\) de Ripley y la función \(g\) que es la de correlación por pares.
k.plot <- readRDS("Kinhom.Rds")
k.plot
k.envelopes <- readRDS("Kenvelops.Rds")
k.envelopes
g.plot <- readRDS("ginhom.Rds")
g.plot
g.envelopes <- readRDS("genvelops.Rds")
g.envelopes