Python - 如何使用 PySAL 计算交互式空间自相关 (Moran I)?

问题描述 投票:0回答:2

我在 PostgreSQL 数据库中有一个点表

my_table
,其中包含
geometry
列和其他属性。我有一些
my_table
的样本数据,如下所示(
my_table
的属性)。

id  val1
1   72.54513286
2   73.67371014
3   74.204424
4   73.76017279
5   77.7912762
6   77.78789496
7   65.51822878
8   65.5182287
9   74.65885753
10  74.65885753
11  61.18084042
12  60.75827621
13  64.27716322
14  63.69432836
15  75.790405
16  60.95270235
17  79.12399503
18  62.9667706
19  78.1265630

使用Python PySAL包,我想分析列

val1
中的值是否空间自相关(Moran I)(通过交互绘制它们)。我预期的交互式空间自相关输出可能类似于(图像来源,这里):

我是Python新手。有人可以建议我如何使用 PySAL 执行此操作吗?

python spatial pysal
2个回答
5
投票

我一直在项目中使用 PySAL 来计算 Moran's I,我发现它相对简单。

要计算 Moran's I,您需要两个对象:

  1. 权重矩阵,表示要验证自相关的单元格之间的关系程度。
  2. 数据本身。

在我的项目中,我检查自相关的单元格排列得像马赛克一样。因此,我使用基于连续性的权重方法来计算权重矩阵,这是相当有效的。

这是如何计算二维数据矩阵 Z 的 Moran's I 的示例:

 from libpysal.weights import lat2W
 from esda.moran import Moran
 import numpy as np

 # Use your matrix here, instead of this random one
 Z = np.random.rand(200,150)

 # Create the matrix of weigthts 
 w = lat2W(Z.shape[0], Z.shape[1])

 # Create the pysal Moran object 
 mi = Moran(Z, w)

 # Verify Moran's I results 
 print(mi.I) 
 print(mi.p_norm)

我建议最初使用随机矩阵 Z,因为在这种情况下,Moran's I 的结果应该在 0 左右,这是一个很好的测试。在对随机 Z 数据进行所有操作后,您可以将 Z 替换为您的真实数据。


-3
投票

我猜你的意思是相关而不是自相关?

https://en.wikipedia.org/wiki/Autocorrelation

可以用 Pandas 代替吗?

https://pandas.pydata.org/pandas-docs/stable/visualization.html

熊猫相关

import pandas
import matplotlib.pyplot as plt

data = pandas.read_csv("C:\\Users\\4Sight\\Desktop\\test.csv", sep=" +", usecols=("val1", "val2"))

print data

print data.columns.values

print data["val1"].corr(data["val2"])

plt.figure()
data.plot()
plt.show()
© www.soinside.com 2019 - 2024. All rights reserved.