2

my_table我在 PostgreSQL 数据库中有一个带有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 做到这一点吗?

4

2 回答 2

5

我一直在我的项目中使用 pysal 来计算 Moran,这并不是很困难。

你必须有两个对象:

  1. 权重矩阵,具有您尝试验证自相关的单元格之间的关系程度。

  2. 数据

在我的项目中,验证自相关的单元格就像一个马赛克,所以我可以使用基于 Contiguity Based Weights的方法来计算权重矩阵,这是有效的。

为二维数据矩阵 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])

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

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

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

于 2018-04-27T20:53:07.893 回答
-2

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

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()
于 2017-08-23T12:51:51.943 回答