pysal.explore.giddy.markov.Spatial_Markov

class pysal.explore.giddy.markov.Spatial_Markov(y, w, k=4, m=4, permutations=0, fixed=True, discrete=False, cutoffs=None, lag_cutoffs=None, variable_name=None)[源代码]

马尔可夫跃迁的条件是空间滞后的值。

参数:
y : 数组

(n,t),每项观测一行,每项观测状态一列,列数与时段相同。

w : W

空间权重对象。

k : 整数,可选

输入时间序列Y的类数(分位数)。默认值为4。如果离散=真,则K由内生确定。

m : 整数,可选

区域时间序列空间滞后的类数(分位数)。默认值为4。如果离散=真,则m由内生决定。

permutations : 可选的

用于基于随机化推理的排列数(默认值为0)。

fixed : 可选的布尔

如果为真,则离散化将接管整个N*T池系列,并且可以用户定义截止值。如果没有给出截止和滞后截止,则使用分位数。如果为false,则在n上的每个时间段都取分位数。默认值为true。

discrete : 可选的布尔

如果为真,则相邻观测中最常见的类别分类空间滞后将作为条件并被忽略;如果为假,则使用相邻观测的加权平均值。默认值为假。

cutoffs : 可选数组

用户可以指定连续时间序列的离散化截止值。默认值为“无”,这意味着分位数将用于离散化。

lag_cutoffs : 可选数组

用户可以为连续时间序列的空间滞后指定离散化截止值。默认值为“无”,这意味着分位数将用于离散化。

variable_name : 一串

变量的名称。

笔记

基于 [Rey01] .

应谨慎使用SHTEST和CHI2测试,因为它们基于假设随机过渡的经典理论。基于x2的测试更可取,因为它模拟了空值下的随机性。这是一个需要进一步分析的实验测试。

实例

>>> import pysal.lib
>>> from pysal.explore.giddy.markov import Spatial_Markov
>>> import numpy as np
>>> f = pysal.lib.io.open(pysal.lib.examples.get_path("usjoin.csv"))
>>> pci = np.array([f.by_col[str(y)] for y in range(1929,2010)])
>>> pci = pci.transpose()
>>> rpci = pci/(pci.mean(axis=0))
>>> w = pysal.lib.io.open(pysal.lib.examples.get_path("states48.gal")).read()
>>> w.transform = 'r'

现在我们创建一个 Spatial_Markov 例如,1929-2009年美国48个较低州的连续相对人均收入时间序列。当前的实施允许用户以更灵活的方式对持续收入进行分类。

(1)全球五分位数离散化收入数据(k=5),全球五分位数离散化收入空间滞后(m=5)。

>>> sm = Spatial_Markov(rpci, w, fixed=True, k=5, m=5, variable_name='rpci')

我们可以检查收入的截止值和空间滞后的截止值。

>>> sm.cutoffs
array([0.83999133, 0.94707545, 1.03242697, 1.14911154])
>>> sm.lag_cutoffs
array([0.88973386, 0.95891917, 1.01469758, 1.1183566 ])

显然,它们略有不同。

现在我们来看看估计的空间滞后条件转移概率矩阵。

>>> for p in sm.P:
...     print(p)
[[0.96341463 0.0304878  0.00609756 0.         0.        ]
 [0.06040268 0.83221477 0.10738255 0.         0.        ]
 [0.         0.14       0.74       0.12       0.        ]
 [0.         0.03571429 0.32142857 0.57142857 0.07142857]
 [0.         0.         0.         0.16666667 0.83333333]]
[[0.79831933 0.16806723 0.03361345 0.         0.        ]
 [0.0754717  0.88207547 0.04245283 0.         0.        ]
 [0.00537634 0.06989247 0.8655914  0.05913978 0.        ]
 [0.         0.         0.06372549 0.90196078 0.03431373]
 [0.         0.         0.         0.19444444 0.80555556]]
[[0.84693878 0.15306122 0.         0.         0.        ]
 [0.08133971 0.78947368 0.1291866  0.         0.        ]
 [0.00518135 0.0984456  0.79274611 0.0984456  0.00518135]
 [0.         0.         0.09411765 0.87058824 0.03529412]
 [0.         0.         0.         0.10204082 0.89795918]]
[[0.8852459  0.09836066 0.         0.01639344 0.        ]
 [0.03875969 0.81395349 0.13953488 0.         0.00775194]
 [0.0049505  0.09405941 0.77722772 0.11881188 0.0049505 ]
 [0.         0.02339181 0.12865497 0.75438596 0.09356725]
 [0.         0.         0.         0.09661836 0.90338164]]
[[0.33333333 0.66666667 0.         0.         0.        ]
 [0.0483871  0.77419355 0.16129032 0.01612903 0.        ]
 [0.01149425 0.16091954 0.74712644 0.08045977 0.        ]
 [0.         0.01036269 0.06217617 0.89637306 0.03108808]
 [0.         0.         0.         0.02352941 0.97647059]]

如果一个贫穷国家的邻居在第1个五分位数中,则其继续贫穷的概率为0.963;如果其邻居在第2个五分位数中,则其继续贫穷的概率为0.798。富裕经济体保持富裕的概率是0.976,如果他们的邻居在五分之一,但如果他们的邻居在四分之一,这下降到0.903。

估计出全局转移概率矩阵:

>>> print(sm.p)
[[0.91461837 0.07503234 0.00905563 0.00129366 0.        ]
 [0.06570302 0.82654402 0.10512484 0.00131406 0.00131406]
 [0.00520833 0.10286458 0.79427083 0.09505208 0.00260417]
 [0.         0.00913838 0.09399478 0.84856397 0.04830287]
 [0.         0.         0.         0.06217617 0.93782383]]

Q和似然比统计数据都是显著的,这表明在滞后类中动力学并不均匀:

>>> "%.3f"%sm.LR
'170.659'
>>> "%.3f"%sm.Q
'200.624'
>>> "%.3f"%sm.LR_p_value
'0.000'
>>> "%.3f"%sm.Q_p_value
'0.000'
>>> sm.dof_hom
60

贫穷(富裕)邻国的长期分布是:第一个五分位数为0.435(0.018),第二个五分位数为0.263(0.200),第三个五分位数为0.204(0.190),第四个五分位数为0.0684(0.255),第五个五分位数为0.029(0.337)。

>>> sm.S
array([[0.43509425, 0.2635327 , 0.20363044, 0.06841983, 0.02932278],
       [0.13391287, 0.33993305, 0.25153036, 0.23343016, 0.04119356],
       [0.12124869, 0.21137444, 0.2635101 , 0.29013417, 0.1137326 ],
       [0.0776413 , 0.19748806, 0.25352636, 0.22480415, 0.24654013],
       [0.01776781, 0.19964349, 0.19009833, 0.25524697, 0.3372434 ]])

收入在第一个五分位数的州与邻居在第一个五分位数的州在离开第一个五分位数后2.298年后回到第一个四分位数。他们平均在离开第一个五分位数80.810年后进入第四个五分位数。四分之一人口中的贫困国家平均在12.88年后恢复到五分之一人口,28.473年后将进入四分之一人口。

>>> for f in sm.F:
...     print(f)
...
[[  2.29835259  28.95614035  46.14285714  80.80952381 279.42857143]
 [ 33.86549708   3.79459555  22.57142857  57.23809524 255.85714286]
 [ 43.60233918   9.73684211   4.91085714  34.66666667 233.28571429]
 [ 46.62865497  12.76315789   6.25714286  14.61564626 198.61904762]
 [ 52.62865497  18.76315789  12.25714286   6.          34.1031746 ]]
[[  7.46754205   9.70574606  25.76785714  74.53116883 194.23446197]
 [ 27.76691978   2.94175577  24.97142857  73.73474026 193.4380334 ]
 [ 53.57477715  28.48447637   3.97566318  48.76331169 168.46660482]
 [ 72.03631562  46.94601483  18.46153846   4.28393653 119.70329314]
 [ 77.17917276  52.08887197  23.6043956    5.14285714  24.27564033]]
[[  8.24751154   6.53333333  18.38765432  40.70864198 112.76732026]
 [ 47.35040872   4.73094099  11.85432099  34.17530864 106.23398693]
 [ 69.42288828  24.76666667   3.794921    22.32098765  94.37966594]
 [ 83.72288828  39.06666667  14.3          3.44668119  76.36702977]
 [ 93.52288828  48.86666667  24.1          9.8          8.79255406]]
[[ 12.87974382  13.34847151  19.83446328  28.47257282  55.82395142]
 [ 99.46114206   5.06359731  10.54545198  23.05133495  49.68944423]
 [117.76777159  23.03735526   3.94436301  15.0843986   43.57927247]
 [127.89752089  32.4393006   14.56853107   4.44831643  31.63099455]
 [138.24752089  42.7893006   24.91853107  10.35         4.05613474]]
[[ 56.2815534    1.5         10.57236842  27.02173913 110.54347826]
 [ 82.9223301    5.00892857   9.07236842  25.52173913 109.04347826]
 [ 97.17718447  19.53125      5.26043557  21.42391304 104.94565217]
 [127.1407767   48.74107143  33.29605263   3.91777427  83.52173913]
 [169.6407767   91.24107143  75.79605263  42.5          2.96521739]]

(2)全球五分位数离散化收入数据(k=5),全球四分位数离散化收入空间滞后(m=4)。

>>> sm = Spatial_Markov(rpci, w, fixed=True, k=5, m=4, variable_name='rpci')

我们还可以检查收入的截止和空间滞后的截止:

>>> sm.cutoffs
array([0.83999133, 0.94707545, 1.03242697, 1.14911154])
>>> sm.lag_cutoffs
array([0.91440247, 0.98583079, 1.08698351])

现在我们来看看估计的空间滞后条件转移概率矩阵。

>>> for p in sm.P:
...     print(p)
[[0.95708955 0.03544776 0.00746269 0.         0.        ]
 [0.05825243 0.83980583 0.10194175 0.         0.        ]
 [0.         0.1294964  0.76258993 0.10791367 0.        ]
 [0.         0.01538462 0.18461538 0.72307692 0.07692308]
 [0.         0.         0.         0.14285714 0.85714286]]
[[0.7421875  0.234375   0.0234375  0.         0.        ]
 [0.08550186 0.85130112 0.06319703 0.         0.        ]
 [0.00865801 0.06926407 0.86147186 0.05627706 0.004329  ]
 [0.         0.         0.05363985 0.92337165 0.02298851]
 [0.         0.         0.         0.13432836 0.86567164]]
[[0.95145631 0.04854369 0.         0.         0.        ]
 [0.06       0.79       0.145      0.         0.005     ]
 [0.00358423 0.10394265 0.7921147  0.09677419 0.00358423]
 [0.         0.01630435 0.13586957 0.75543478 0.0923913 ]
 [0.         0.         0.         0.10204082 0.89795918]]
[[0.16666667 0.66666667 0.         0.16666667 0.        ]
 [0.03488372 0.80232558 0.15116279 0.01162791 0.        ]
 [0.00840336 0.13445378 0.70588235 0.1512605  0.        ]
 [0.         0.01171875 0.08203125 0.87109375 0.03515625]
 [0.         0.         0.         0.03434343 0.96565657]]

我们现在得到4个5*5的空间滞后条件转移概率矩阵,而不是案例(1)中的5个。

Q和似然比统计数据仍然是显著的。

>>> "%.3f"%sm.LR
'172.105'
>>> "%.3f"%sm.Q
'321.128'
>>> "%.3f"%sm.LR_p_value
'0.000'
>>> "%.3f"%sm.Q_p_value
'0.000'
>>> sm.dof_hom
45

(3)我们也可以手动设置相对收入和空间滞后的截止值。例如,我们希望定义的截止值为[0.8,0.9,1,1.2],这意味着相对收入:2.1小于0.8:0.8和0.9之间的0.2.2:0.9和1.0之间的1.2.3:1.0和1.0之间的2.4:1.0和1.2:3和2.5大于1.2:4级

>>> cc = np.array([0.8, 0.9, 1, 1.2])
>>> sm = Spatial_Markov(rpci, w, cutoffs=cc, lag_cutoffs=cc, variable_name='rpci')
>>> sm.cutoffs
array([0.8, 0.9, 1. , 1.2])
>>> sm.k
5
>>> sm.lag_cutoffs
array([0.8, 0.9, 1. , 1.2])
>>> sm.m
5
>>> for p in sm.P:
...     print(p)
[[0.96703297 0.03296703 0.         0.         0.        ]
 [0.10638298 0.68085106 0.21276596 0.         0.        ]
 [0.         0.14285714 0.7755102  0.08163265 0.        ]
 [0.         0.         0.5        0.5        0.        ]
 [0.         0.         0.         0.         0.        ]]
[[0.88636364 0.10606061 0.00757576 0.         0.        ]
 [0.04402516 0.89308176 0.06289308 0.         0.        ]
 [0.         0.05882353 0.8627451  0.07843137 0.        ]
 [0.         0.         0.13846154 0.86153846 0.        ]
 [0.         0.         0.         0.         1.        ]]
[[0.78082192 0.17808219 0.02739726 0.01369863 0.        ]
 [0.03488372 0.90406977 0.05813953 0.00290698 0.        ]
 [0.         0.05919003 0.84735202 0.09034268 0.00311526]
 [0.         0.         0.05811623 0.92985972 0.01202405]
 [0.         0.         0.         0.14285714 0.85714286]]
[[0.82692308 0.15384615 0.         0.01923077 0.        ]
 [0.0703125  0.7890625  0.125      0.015625   0.        ]
 [0.00295858 0.06213018 0.82248521 0.10946746 0.00295858]
 [0.         0.00185529 0.07606679 0.88497217 0.03710575]
 [0.         0.         0.         0.07803468 0.92196532]]
[[0.         0.         0.         0.         0.        ]
 [0.         0.         0.         0.         0.        ]
 [0.         0.06666667 0.9        0.03333333 0.        ]
 [0.         0.         0.05660377 0.90566038 0.03773585]
 [0.         0.         0.         0.03932584 0.96067416]]

(4)空间马尔可夫也接受离散时间序列,并计算分类空间滞后,其中几个转移概率矩阵是条件。我们还是用美国州收入时间序列来演示一下。我们首先将它们离散成类别,然后将它们传递给空间马尔可夫。

>>> import pysal.viz.mapclassify as mc
>>> y = mc.Quantiles(rpci.flatten(), k=5).yb.reshape(rpci.shape)
>>> np.random.seed(5)
>>> sm = Spatial_Markov(y, w, discrete=True, variable_name='discretized rpci')
>>> sm.k
5
>>> sm.m
5
>>> for p in sm.P:
...     print(p)
[[0.94787645 0.04440154 0.00772201 0.         0.        ]
 [0.08333333 0.81060606 0.10606061 0.         0.        ]
 [0.         0.12765957 0.79787234 0.07446809 0.        ]
 [0.         0.02777778 0.22222222 0.66666667 0.08333333]
 [0.         0.         0.         0.33333333 0.66666667]]
[[0.888      0.096      0.016      0.         0.        ]
 [0.06049822 0.84341637 0.09608541 0.         0.        ]
 [0.00666667 0.10666667 0.81333333 0.07333333 0.        ]
 [0.         0.         0.08527132 0.86821705 0.04651163]
 [0.         0.         0.         0.10204082 0.89795918]]
[[0.65217391 0.32608696 0.02173913 0.         0.        ]
 [0.07446809 0.80851064 0.11170213 0.         0.00531915]
 [0.01071429 0.1        0.76428571 0.11785714 0.00714286]
 [0.         0.00552486 0.09392265 0.86187845 0.03867403]
 [0.         0.         0.         0.13157895 0.86842105]]
[[0.91935484 0.06451613 0.         0.01612903 0.        ]
 [0.06796117 0.90291262 0.02912621 0.         0.        ]
 [0.         0.05755396 0.87769784 0.0647482  0.        ]
 [0.         0.02150538 0.10752688 0.80107527 0.06989247]
 [0.         0.         0.         0.08064516 0.91935484]]
[[0.81818182 0.18181818 0.         0.         0.        ]
 [0.01754386 0.70175439 0.26315789 0.01754386 0.        ]
 [0.         0.14285714 0.73333333 0.12380952 0.        ]
 [0.         0.0042735  0.06837607 0.89316239 0.03418803]
 [0.         0.         0.         0.03891051 0.96108949]]
属性:
class_ids : 数组

(n,t),如果y是连续的,离散化序列。否则它与y相同。

classes : 数组

(k,1),所有不同类别(箱)。

lclass_ids : 数组

(n,t),空间滞后序列。

lclasses : 数组

(k,1),空间滞后的所有不同类别(箱)。

p : 数组

(k,k),a-空间马尔可夫的转移概率矩阵。

s : 数组

(k,1),a-空间马尔可夫的遍历分布。

transitions : 数组

(k,k),a-空间马尔可夫的每个状态i和j之间的跃迁计数。

T : 数组

(k,k,k),每个条件马尔可夫的跃迁计数。t[0]是第0个分位数中有滞后的观测的跃迁矩阵;t[k-1]是k-1th中有滞后的观测的跃迁矩阵。

P : 数组

(k,k,k),空间马尔可夫第一维的转移概率矩阵是滞后的条件。

S : 数组

(k,k),空间马尔可夫的稳态分布。每一行都是有条件的稳定状态。

F : 数组

(k,k,k),第一个平均通过时间。第一个维度是以滞后为条件的。

shtest : 列表

(k元素),列表中的每个元素都是一个元组,用于条件分布的稳态分布与整体稳态分布之间的多项差分检验:元组的第一个元素是chi2值,第二个是p值,第三个是自由度。

chi2 : 列表

(k元素),列表中的每个元素都是一个元组,用于对条件转换矩阵与整体转换矩阵之间的差异进行卡方检验:元组的第一个元素是chi2值,第二个是p值,第三个是自由度。

x2 : 浮动

每个条件测试的chi2值之和。具有k(k-1)(k-1)自由度的渐近chi2分布。在空值下,转换概率在空间上是一致的。(见上文第2章)

x2_dof : 利息

均匀性试验的自由度。

x2_pvalue : 浮动

基于分析的均匀性检验值。分布

x2_rpvalue : 浮动

(如果排列>0)基于原始转换行的随机空间排列的x2的伪p值。

x2_realizations : 数组

(排列,1),随机排列的x2值。

Q : 浮动

基于卡方检验的滞后类同质性 [BB03] .

Q_p_value : 浮动

q的p值。

LR : 浮动

基于似然比统计的跨滞后类同质性 [BB03] .

LR_p_value : 浮动

LR的p值。

dof_hom : 利息

LR和Q的自由度,修正为0个单元。

方法

summary \([文件名]) 用马尔可夫同质性检验方法检验时间滞后的空间依赖性。
__init__(y, w, k=4, m=4, permutations=0, fixed=True, discrete=False, cutoffs=None, lag_cutoffs=None, variable_name=None)[源代码]

初始化自身。请参阅帮助(键入(self))以获得准确的签名。

方法

__init__ \(Y、W、K、M、排列、固定、固定) 初始化自身。
summary \([文件名]) 用马尔可夫同质性检验方法检验时间滞后的空间依赖性。

属性

F 
LR 
LR_p_value 
Q 
Q_p_value 
S 
chi2 
dof_hom 
ht 
s 
shtest 
x2 
x2_dof 
x2_pvalue