Понимание пространственной кластеризации ценностей и событий

Цель этой статьи - представить важную концепцию геопространственного анализа - «Пространственную автокорреляцию» с акцентом на следующие вещи: (i) ключевые концепции автокорреляции; (ii) отраслевые приложения и (iii) реализация в R

Все связано со всем остальным. Но близкие вещи более взаимосвязаны, чем далекие . Первый закон географии Уолдо Тоблера (1969)

Чтобы понять закон Тоблера, приведенный выше, давайте проведем мысленный эксперимент.

Давайте случайным образом выберем дом с сайта объявлений, такого как Zillow, и допустим, что листинговая цена дома составляет 400 тысяч долларов. Далее, скажем, дом рядом с ним тоже выставлен на продажу. Теперь, если вы хотите спрогнозировать цену второго дома и имея два варианта, 450 тысяч долларов и 1,2 миллиона долларов, какой из них вы выберете?

Если вы выбрали 450 тысяч долларов, значит, вы уже подсознательно знаете, что такое пространственная автокорреляция. Это действительно корреляция между двумя соседями по некоторым общим характеристикам (например, по цене дома). Авто означает себя, корреляция означает ассоциацию. Таким образом, если говорить более формально, автокорреляция - это мера сходства между ближайшими наблюдениями, которая описывает степень, в которой наблюдения переменной (например, плотности населения) похожи друг на друга в заданном пространственном масштабе. Или, проще говоря, статистика I Морана - это коэффициент корреляции для отношения между переменной (например, доходом) и ее окружающими значениями (источник).

Обратите внимание, что существует аналогичная концепция, называемая временной автокорреляцией, где наблюдения (например, рост, вес и т. Д.) В одной временной точке коррелируют с наблюдениями в предыдущей временной точке. Такая временная автокорреляция - полезное понятие при прогнозировании временных рядов.

Как измерить автокорреляцию (I Морана)

Мы всегда можем догадаться о пространственной автокорреляции некоторых функций, просто взглянув на карту. Однако существует формальный способ количественного измерения, и I Морана является одним из таких статистических показателей, используемых для этой цели. Он принимает значения от -1 до +1 (например, нормальный коэффициент корреляции, r, мог бы), одновременно предоставляя связанное значение p в качестве теста на значимость (обсуждается ниже). Положительное I Морана указывает на то, что похожие наблюдения ближе друг к другу, тогда как отрицательные значения подразумевают сгруппированные разнородные значения. Значения около 0 указывают на отсутствие автокорреляции, а вместо этого наблюдаемые значения распределяются случайным образом.

Измерение значимости формулы I Морана (моделирование Монте-Карло)

После того, как I Морана измеряется для определенного набора данных, как можно узнать, является ли оно значимым при нулевой гипотезе о случайном распределении наблюдений?

Один из способов измерить значимость - выполнить тест Монте-Карло. Это выполняется в три этапа: (i) сначала наблюдения (например, цены на жилье) случайным образом распределяются в различных пространственных единицах (например, полигоны округов, растровые ячейки и т. Д.), (Ii) затем для этого случайного набора данных рассчитывается I Морана, (iii) и, наконец, смоделированное I Морана сравнивается с наблюдаемым I Морана. Этот трехэтапный процесс повторяется много-много раз. После запуска всех симуляций вероятность p рассчитывается следующим образом:

(Количество смоделированных I Морана больше, чем наблюдавшееся I Морана +1) / (Количество запусков моделирования + 1)

Например, скажем,

number of simulations = 200

number of simulated Moran's I that are higher than observed value = 2

тогда в соответствии с приведенным выше уравнением вероятность того, что нулевая гипотеза верна:

p = (1+1)/(200+1) = 0.009

где p ‹0,01, следовательно, нулевая гипотеза о том, что наблюдения (например, население, цены на жилье) случайным образом распределены в пространстве, может быть отклонена. Другими словами, наблюдаемая автокорреляция цен на жилье довольно значительна.

Отраслевые применения автокорреляции

Автокорреляция - ключевая концепция пространственного анализа, имеющая широкий спектр отраслевых приложений. Некоторые из них следующие:

  • Мера пространственного неравенства / разнообразия: сгруппированы ли доходы, население, раса и т. д. в определенных областях или равномерно распределены в определенных областях - можно рассчитать с помощью И. Морана.
  • Он использовался для определения горячих точек загрязнения редкоземельных элементов в городских почвах Лондона.
  • Используется для демонстрации различных функций убывания расстояния интересующих переменных (например, насколько далеко упадут цены на жилье в зависимости от расстояния от центра города?).
  • Автокорреляция часто используется во многих других алгоритмах машинного обучения (например, пространственная регрессия, классификация, кластерный анализ), а также при визуализации пространственных данных как часть EDA (например, тепловая карта, анализ горячих точек)

Пятишаговая реализация на R

Шаг 1. Установите зависимости

library(sf)
library(spdep)
library(tigris)
library(acs)
library(tidyverse)
library(tmap)

Шаг 2. Получите данные

Данные, которые я использую для этой демонстрации, представляют собой набор данных о среднем доходе домохозяйства на уровне округа / участка переписи, полученный из American Community Survey. Для доступа к данным пользователям необходимо поставить запрос на ключ API. В моем случае после запроса оно было обработано довольно быстро.

api="MY API KEY"
api.key.install(key=api)
acs.tables.install()
set.seed(1234) # because we are randomizing part of the process
# Access the shapefile
s <- get_acs(geography = "tract", variables = "B19013_001", 
                state = c("VA"), geometry = TRUE)
# remove NA values is any
s <- na.omit(s)
# select column to work with
s <- subset(s, select=c("estimate"))

Шаг 3. Исследовательский анализ данных

# check data skewness
hist(s$estimate, main=NULL)
# check for outliers
boxplot(s$estimate, horizontal = TRUE)
# plot variable
tm_shape(s) + tm_fill(col="estimate", style="quantile", n=5, palette="Greens") +
tm_legend(outside=TRUE)

Шаг 4. Моделирование

# define neighbor
nb <- poly2nb(s, queen=TRUE) # here nb list all ID numbers of neighbors;
# assign weights to neighbors
lw <- nb2listw(nb, style="W", zero.policy=TRUE) # equal weights
# compute neighbor average
inc.lag <- lag.listw(lw, s$estimate)
# plot polygons vs lags
plot(inc.lag ~ s$estimate, pch=16, asp=1)
M1 <- lm(inc.lag ~ s$estimate)
abline(M1, col="blue")
# access Moran's coeff
coef(M1)[2]
# calculating Moran coeff with one line
I <- moran(s$estimate, lw, length(nb), Szero(lw))[1]

Шаг 5. Проверка гипотезы

# hypothesis test with moran.test function
moran.test(s$estimate,lw, alternative="greater")
# using Monte-Carlo simulation
MC<- moran.mc(s$estimate, lw, nsim=999, alternative="greater")
# View results (including p-value)
MC
# plot Null distribution
plot(MC)

Конец заметок

Понимание пространственной автокорреляции - важная концепция в аналитике пространственных данных - не только для понимания пространственной структуры и вариации данных, но и для использования в бизнес-решениях. Это также ключевая статистика, предоставляющая входные данные для расширенных пространственно-явных статистических алгоритмов и алгоритмов машинного обучения. С точки зрения реализации, когда у вас есть данные, их довольно легко реализовать. Я реализовал в среде R, но есть и несколько Python библиотек (например, geopandas), однако, по моему опыту, R был более удобным для пользователя из-за легкого доступа к наборам данных шкалы округов / участков переписи с использованием существующих пакетов.