Этот пост про базовый компонент пространственного анализа - Connectivity Matrix ( Матрица связности) - W. Пост навеян недавним открытием. Два дня назад я с удивлением обнаружила, что большинство моих коллег,которые занимаются геоанализом уже 4 года, не знают про пространственные матрицы связности. Правда, поразмыслив над этим, я поняла почему. Но обо всем по-порядку.
Какая у вашего друга машина?
Представьте, что вы идете в гости к вашему другу, который живет в многоквартирном доме.Он недавно купил машину и предлагает вам угадать, какая это машина. Вы знаете, что ваш друг тим-лид в успешном IT-стартапе, у него двое детей до 10 лет, машину он использует для поездок за город, в жизни предпочитает комфорт красоте. Вы кидаете эти данные в ChatGPT, и алгоритм делает вывод, что машина ваша это Subaru Outback или Toyota Highlander. Но друг говорит, что ChatGPT ошибся - и у него Tesla Model X. Как так? - спрашиваете вы. Дело в том, что ближайший сосед вашего друга недавно купил BMW X5. И чтобы не проигрывать ему на парковке, ваш друг решил купить Теслу.
А теперь, представьте, что BMW X5 купил не ближайший сосед, а сосед 2 этажами ниже, чье место на парковке находится в другом конце от места вашего друга. Повлияло бы это на выбор машины вашим другом? Вряд ли.
Теперь о матрице
Что нам рассказывает это ситуация? Бывают случаи когда собственных признаков объекта недостаточно, чтобы предсказать или объяснить явление - нужны еще данные о соседях. За это отвечают пространственные регрессии. А вот каких соседей учитывать определяет Матрица связности.
Формально, матрица связности - это таблица с одинаковым количеством колонок и строк, используемая для описания связей или отношений между различными элементами в системе. Она показывает, как различные точки или области связаны друг с другом. В каждом элементе матрицы указывается наличие или отсутствие связи, а иногда также и сила (вес) этой связи. Используется она не только в пространственной статистике, те из вас, кто работают с транспортными задачами или графами дорог хорошо знакомы с ней.
ОСНОВНЫЕ ТИПЫ МАТРИЦ СВЯЗНОСТИ
Вот тут интересно. Есть классические типы, а есть производные от них - которые используют прошаренные академики
Классические
1.Матрица Связности по Королевским Соседям (Queen Contiguity Matrix):
Определение: Пространственные единицы считаются соседями, если они имеют общую сторону или вершину.
Значения: Заполнена 0(нет связи) или 1 (есть связь)
2.Матрица Связности по Ладейным Соседям (Rook Contiguity Matrix):
Определение: Пространственные единицы считаются соседями, если они имеют только общую сторону. Именно такая матрица связности была в примере с соседями.
Значения: Заполнена 0(нет связи) или 1 (есть связь)
3.Матрица Связности k-соседей (k-nearest neighbors):
Определение: Пространственные единицы считаются соседями, если они входят в число k ближайших соседей.
Значения: Заполнена 0(не входит) или 1 (входит)
4. Матрица Связности по Расстоянию (Distance-based Matrix):
Определение: Пространственные единицы считаются соседями, если расстояние между ними меньше заданного порога.
Значения: в отличие от 3х предыдущих может быть заполнена как 1/0 так и непрерывной величиной - чаще всего используют вес 1/d^2 - обратное расстояние.
Производные
Производные матрицы включают в себя классические, но с небольшими изменениями. Их список бесконечен, ограничен только вашим воображением. Приведу пару примеров.
1.Матрица Связности по Расстоянию, где учитываются только n-ближайших соседей.
Пример: веса раздаются соседям по формуле 1/d^2, но после 6 соседа, веса у всех =0
2. Матрица Связности по Королевским Соседям, с весами пропорциональными некоторому индикатору
Пример: пусть матрица связности указывает наличие общей границы у районов города. При этом у каждого района известно его население. Тогда веса матрицы связности будут равны = 1/0 * население.
3. Матрица Связности по Королевским Соседям, с весами пропорциональными длине общей границы
Пример: пусть матрица связности указывает наличие общей границы у стран СНГ. Тогда веса матрицы связности будут равны = 1/0 * размер общей границы.
Что делать с этой информацией
Повторюсь, что основная идея матрицы связности: найти соседей и раздать им веса. Глобально, это полезно в трех случаях:
- пространственная кластеризация
- пространственная автокорреляция
- пространственная регрессия
Про кластеризацию я уже писала ранее. Напомню, что ее задача пространственно разделить поверхность на участки максимально похожие друг на друга. Матрица связности же позволяет понять отношение объектов в пространстве - кто может оказаться в 1-ом участе. Пример задачи: разделить страну на избирательные участки
Проверка на пространственную автокорреляцию - это ключевой этап во всех исследований для обоснования использования пространственных моделей. По сути похожая на временную автокорреляцию, она показывает связь соседей между собой - если ее нет, то все объекты независимы от своих соседей, если есть - то "мнение соседей" нужно учитывать.
В случае с пространственной регрессией вариаций сильно больше, поскольку и видов регрессий много и это тоже тема отдельного поста.
Обобщая, есть 2 подхода:
1. посчитать значение признаков соседей и добавить их в модель
2. добавить авторегрессию в модель
В нашем примере с прогнозом автомобиля 1-ое означает, что в доме, например, живут также пара ваших коллег, про которых вы знаете то, о чем не знаете про друга, к которому мы пришли в гости. И мы предполагаем, что раз они живут в одном доме, то во многом они похожи - например ездят на работу на машине - , а значит, то, что вы знаете про коллег релевантно и для вашего друга.
2-ое означает ситуацию в начале поста: на решение о выборе машины ( y) повлиял выбор соседа (y_lag).
Так почему же коллеги не знакомы с матрицами связности
Эта ситуация с одной стороны - пример классического разрыва между бизнесом и академией, с другой стороны - доказательство превосходства ML над эконометрикой в бизнес задачах.
Во-первых, дело в том, что мои коллеги занимаются прогнозированием, а не описанием причин, некоторых событий. А значит, их интересует не сколько точный вес каждого фактора, сколько финальный прогноз. Для ответа на вопрос они используют ML модели в основе которых нет предположения о линейной зависимости между переменными, а отбор фичей происходит на основе веса фактора в модели, а не t-statistics. Поэтому то что в пространственной эконометрике честно смоделированно как пространственный лаг, в ML модели будет учтено через огромное количество входных параметров.
Например, в случае с машиной, вместо модели машины соседа могут быть использована доля рынка моделей класса люкс в районе. Мы не узнаем, что на решение повлиял сосед, но сам прогноз будет близким.
Во-вторых, это объясняет критику пространственной автокорреляции. Часто, причина не в соседях а в общем неучтенном факторе. Например, вместо того, чтобы учитывать, что коллеги ездят на работу на машине, достаточно посчитать расстояние до остановки общественного транспорта, и обнаружить, что кроме как на машине, до работы не добраться.
Пост получился теоретический, напишите в комментариях, что вам интересно дальше: как строить матрицы в Python или примеры использования.