我在 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 执行此操作吗?
我一直在项目中使用 PySAL 来计算 Moran's I,我发现它相对简单。
要计算 Moran's I,您需要两个对象:
在我的项目中,我检查自相关的单元格排列得像马赛克一样。因此,我使用基于连续性的权重方法来计算权重矩阵,这是相当有效的。
这是如何计算二维数据矩阵 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 替换为您的真实数据。
我猜你的意思是相关而不是自相关?
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()