我在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)(通过交互绘制它们)。我预期的交互式空间自相关输出可能像(图像源,here):
我是Python新手。有人可以建议我如何使用PySAL做到这一点吗?
答案 0 :(得分:1)
我猜你的意思是相关性不是自相关的?
https://en.wikipedia.org/wiki/Autocorrelation
你可以改用熊猫吗?
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()
答案 1 :(得分:1)
我一直在使用pysal来计算我的项目中的Moran,这并不是很困难。
你必须有两个对象:
1)一个权重矩阵,它与您试图验证自相关的单元格之间的关系程度。
2)数据
在我的项目中,验证自相关的单元格就像一个马赛克,所以我可以使用方法Contiguity Based Weights来计算权重矩阵,这是有效的。
想象一下,你有一个二维数据矩阵Z来计算你需要的Moran:
import pysal
# Create the matrix of weigthts
w = pysal.lat2W(Z.shape[0], Z.shape[1])
# Crate the pysal Moran object
mi = pysal.Moran(Z, w)
# Verify Moran's I results
print(mi.I)
print(mi.p_norm)
我建议最初使用随机矩阵Z,因为在这种情况下,Moran的结果我应该在0左右,这是一个很好的测试。系统为随机Z数据返回0后,您可以用实际数据替换Z.