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

Я использую 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 Ответ

0 голосов
/ 12 января 2019

Да, вы можете. Прежде всего, вы должны быть уверены, что вы передаете геоданные, ваш код возвращает 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#esda.Moran). Аналогичный синтаксис будет для индексов автокорреляции Gamma, Geary's C или Getis Ord.

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

...