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/.