Python: как вычислить пространственную автокорреляцию индикаторов из шейп-файла?

Я использую geopandas читать шейп-файл муниципалитетов Швейцарии, т.е. municipalities.shp, Для 170 у меня есть информация о населении, т.е. population.csv Файлы из этого репозитория можно найти здесь.

Можно ли объединить информацию через так называемые BFS number,

import pandas as pd
import geopandas

mun = geopandas.read_file('municipalities.shp')
pop = pd.read_csv('population.csv')
## merge data
mergedData = pd.merge(mun,pop,left_on='BFS_NUMMER',right_on='BFS')

Теперь для каждого из 170 муниципалитетов у меня есть географическая информация и информация о населении.

Я хотел бы знать, могу ли я использовать pysal проверить, является ли население этих 170 муниципалитетов пространственно автокоррелированным.

1 ответ

Да, ты можешь. Прежде всего, вы должны быть уверены, что вы передаете геоданные, ваш код возвращает pandas dataframe:

import pandas as pd
import geopandas as gpd

mun = gpd.read_file('municipalities.shp')
pop = pd.read_csv('population.csv')
# merge data
mergedData = mun.merge(pop,left_on='BFS_NUMMER',right_on='BFS')

Тогда вы можете работать с pysalинструменты Я буду использовать libpysal а также esda пакеты следуют новой структуре pysal,

import libpysal
import esda

weights = libpysal.weights.Queen.from_dataframe(mergedData)  # generate spatial weights (Queen in this case)
spatial_auto = esda.Moran(mun[['population']], weights)  # calculate Moran's I

Сначала вы должны сгенерировать матрицу пространственных весов. Если вы хотите использовать другой, чем Queen, просто следуйте https://libpysal.readthedocs.io/en/latest/api.html. Затем вы генерируете индекс Морана I пространственной автокорреляции (глобальный). Он генерирует все атрибуты, которые могут вам понадобиться ( https://esda.readthedocs.io/en/latest/generated/esda.Moran.html). Аналогичный синтаксис был бы для индексов автокорреляции Gamma, Geary's C или Getis Ord.

Документация для esda Это действительно хорошо, показывать примеры в блокнотах Jupyter, я рекомендую проверить это для другой информации (например, локальной автокорреляции или построения графиков) - https://esda.readthedocs.io/en/latest/.

Другие вопросы по тегам