pysal.explore.giddy.mobility.markov_mobility

pysal.explore.giddy.mobility.markov_mobility(p, measure='P', ini=None)[源代码]

基于马尔可夫的流动指数。

参数:
p : 数组

(k,k),马尔可夫转移概率矩阵。

measure : 一串

如果measure=“p”, \(M_{{P}} = \frac{{m-\sum_{{i=1}}^m P_{{ii}}}}{{m-1}}\) ;如果measure=“d”, \(M_{{D}} = 1 - |\det(P)|\) 在哪里 \(\det(P)\)\(P\) ;如果measure=“l2”, \(M_{{L2}} = 1 - |\lambda_2|\) 在哪里 \(\lambda_2\) 是的第二大特征值 \(P\) ;如果measure=“b1”, \(M_{{B1}} = \frac{{m-m \sum_{{i=1}}^m \pi_i P_{{ii}}}}{{m-1}}\) 在哪里 \(\pi\) 是初始收入分配;如果measure=“b2”, \(M_{{B2}} = \frac{{1}}{{m-1}} \sum_{{i=1}}^m \sum_{{ j=1}}^m \pi_i P_{{ij}} |i-j|\) 在哪里 \(\pi\) 是初始收入分配。

ini : 数组

(k,),初始分布。如果测量值为“b1”或“b2”,则需要指定。否则,初始分布将被视为均匀分布。

返回:
mobi : 浮动

迁移率值。

笔记

流动性指数基于 [FSZ04] .

实例

>>> import numpy as np
>>> import pysal.lib
>>> import pysal.viz.mapclassify as mc
>>> from pysal.explore.giddy.markov import Markov
>>> from pysal.explore.giddy.mobility import markov_mobility
>>> 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)])
>>> q5 = np.array([mc.Quantiles(y).yb for y in pci]).transpose()
>>> m = Markov(q5)
>>> m.p
array([[0.91011236, 0.0886392 , 0.00124844, 0.        , 0.        ],
       [0.09972299, 0.78531856, 0.11080332, 0.00415512, 0.        ],
       [0.        , 0.10125   , 0.78875   , 0.1075    , 0.0025    ],
       [0.        , 0.00417827, 0.11977716, 0.79805014, 0.07799443],
       [0.        , 0.        , 0.00125156, 0.07133917, 0.92740926]])
  1. 估算Shorrock1流动指数:
>>> mobi_1 = markov_mobility(m.p, measure="P")
>>> print("{:.5f}".format(mobi_1))
0.19759
  1. 估算Shorrock2流动指数:
>>> mobi_2 = markov_mobility(m.p, measure="D")
>>> print("{:.5f}".format(mobi_2))
0.60685
  1. 估计Sommers和Conlisk流动指数:
>>> mobi_3 = markov_mobility(m.p, measure="L2")
>>> print("{:.5f}".format(mobi_3))
0.03978

(4)估计Bartholomew1流动指数(注意应给出初始分布):

>>> ini = np.array([0.1,0.2,0.2,0.4,0.1])
>>> mobi_4 = markov_mobility(m.p, measure = "B1", ini=ini)
>>> print("{:.5f}".format(mobi_4))
0.22777

(5)估计Bartholomew2流动指数(注意应给出初始分布):

>>> ini = np.array([0.1,0.2,0.2,0.4,0.1])
>>> mobi_5 = markov_mobility(m.p, measure = "B2", ini=ini)
>>> print("{:.5f}".format(mobi_5))
0.04637