pysal.model.spreg.
GM_Lag_Regimes
(y, x, regimes, yend=None, q=None, w=None, w_lags=1, lag_q=True, robust=None, gwk=None, sig2n_k=False, spat_diag=False, constant_regi='many', cols2regi='all', regime_lag_sep=False, regime_err_sep=True, cores=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_regimes=None, name_w=None, name_gwk=None, name_ds=None)[源代码]¶空间两阶段最小二乘法(s2sls)与制度;Anselin(1988年)【Anselin1988年】_
参数: |
|
---|
实例
我们首先需要导入所需的模块,即numpy来将我们读取的数据转换为 spreg
理解和 pysal
执行所有分析。
>>> import numpy as np
>>> import pysal.lib
>>> from pysal.lib import examples
使用pysal.lib.io.open()打开有关NCOVR美国县凶杀案(3085个地区)的数据。这是与nat形状文件关联的dbf。注意pysal.lib.io.open()也以csv格式读取数据;由于实际类需要以numpy数组的形式传入数据,因此用户可以使用任何方法读取其数据。
>>> db = pysal.lib.io.open(examples.get_path("NAT.dbf"),'r')
从dbf文件中提取hr90列(1990年的凶杀率),并使其成为回归的因变量。请注意,pysal要求这是一个形状(n,1)的numpy数组,而不是其他包接受的(n,1)的常见形状。
>>> y_var = 'HR90'
>>> y = np.array([db.by_col(y_var)]).reshape(3085,1)
从DBF中提取UE90(失业率)和PS90(人口结构)向量,作为回归中的独立变量。其他变量可以通过将其名称添加到x_var来插入,例如x_var=['var1','var2','..]请注意,pysal要求它是nxj numpy数组,其中j是独立变量的数量(不包括常量)。默认情况下,该模型向传入的自变量添加一个1的向量。
>>> x_var = ['PS90','UE90']
>>> x = np.array([db.by_col(name) for name in x_var]).T
根据南部和北部假人(南部),给出了该数据中的不同状态。
>>> r_var = 'SOUTH'
>>> regimes = db.by_col(r_var)
由于我们想要运行一个空间滞后模型,我们需要指定包含观测空间配置的空间权重矩阵。为此,我们可以打开一个已经存在的gal文件或创建一个新的gal文件。在这种情况下,我们将从 NAT.shp
.
>>> from pysal.lib import weights
>>> w = weights.Rook.from_shapefile(examples.get_path("NAT.shp"))
除非有充分的理由不这样做,否则必须对权重行进行标准化,以便矩阵的每一行合计为一。除此之外,这允许将变量的空间滞后解释为相邻观测值的平均值。在Pysal中,可以通过以下方式轻松执行:
>>> w.transform = 'r'
这个类运行一个滞后模型,这意味着在方程的右侧包含因变量的空间滞后。如果我们希望在输出摘要中打印变量的名称,那么我们也必须将它们传入,尽管这是可选的。
>>> model=GM_Lag_Regimes(y, x, regimes, w=w, regime_lag_sep=False, regime_err_sep=False, name_y=y_var, name_x=x_var, name_regimes=r_var, name_ds='NAT', name_w='NAT.shp')
>>> model.betas
array([[ 1.28897623],
[ 0.79777722],
[ 0.56366891],
[ 8.73327838],
[ 1.30433406],
[ 0.62418643],
[-0.39993716]])
运行模型之后,我们可以通过键入model.summary来获得输出的摘要。或者,我们也可以通过调用以下函数获得系数估计的标准误差:
>>> model.std_err
array([ 0.44682888, 0.14358192, 0.05655124, 1.06044865, 0.20184548,
0.06118262, 0.12387232])
在上面的例子中,除了空间滞后之外,所有的系数都会根据情况而变化。空间滞后也可能随系统的不同而变化,有效的方法是建立一个独立的空间滞后模型。要运行这些模型,必须将“论证制度”设置为“真:
>>> model=GM_Lag_Regimes(y, x, regimes, w=w, regime_lag_sep=True, name_y=y_var, name_x=x_var, name_regimes=r_var, name_ds='NAT', name_w='NAT.shp')
>>> print np.hstack((np.array(model.name_z).reshape(8,1),model.betas,np.sqrt(model.vm.diagonal().reshape(8,1))))
[['0_CONSTANT' '1.36584769' '0.39854720']
['0_PS90' '0.80875730' '0.11324884']
['0_UE90' '0.56946813' '0.04625087']
['0_W_HR90' '-0.4342438' '0.13350159']
['1_CONSTANT' '7.90731073' '1.63601874']
['1_PS90' '1.27465703' '0.24709870']
['1_UE90' '0.60167693' '0.07993322']
['1_W_HR90' '-0.2960338' '0.19934459']]
或者,我们可以键入“model.summary”来查看有组织的结果输出。该类具有足够的灵活性,能够适应空间滞后模型,该模型除因变量的空间滞后外,还包括其他非空间内生回归量。作为一个例子,我们将添加内生变量RD90(资源剥夺),并决定用FP89(贫困以下家庭)作为工具:
>>> yd_var = ['RD90']
>>> yd = np.array([db.by_col(name) for name in yd_var]).T
>>> q_var = ['FP89']
>>> q = np.array([db.by_col(name) for name in q_var]).T
我们可以再次运行模型:
>>> model = GM_Lag_Regimes(y, x, regimes, yend=yd, q=q, w=w, regime_lag_sep=False, regime_err_sep=False, name_y=y_var, name_x=x_var, name_yend=yd_var, name_q=q_var, name_regimes=r_var, name_ds='NAT', name_w='NAT.shp')
>>> model.betas
array([[ 3.42195202],
[ 1.03311878],
[ 0.14308741],
[ 8.99740066],
[ 1.91877758],
[-0.32084816],
[ 2.38918212],
[ 3.67243761],
[ 0.06959139]])
一旦模型运行,就可以得到系数估计的标准误差。或者,我们可以通过键入:model.summary来获得输出的摘要。
>>> model.std_err
array([ 0.49163311, 0.12237382, 0.05633464, 0.72555909, 0.17250521,
0.06749131, 0.27370369, 0.25106224, 0.05804213])
属性: |
|
---|
方法
GM_Lag_Regimes_Multi | |
sp_att_reg |
__init__
(y, x, regimes, yend=None, q=None, w=None, w_lags=1, lag_q=True, robust=None, gwk=None, sig2n_k=False, spat_diag=False, constant_regi='many', cols2regi='all', regime_lag_sep=False, regime_err_sep=True, cores=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_regimes=None, name_w=None, name_gwk=None, name_ds=None)[源代码]¶初始化自身。请参阅帮助(键入(self))以获得准确的签名。
方法
GM_Lag_Regimes_Multi \(Y、X、W、I、W、REGI、ID) |
|
__init__ \(Y,X,状态[,是,Q,W,…]) |
初始化自身。 |
sp_att_reg \(wu i,regiu id,wy) |
属性
mean_y |
|
pfora1a2 |
|
sig2n |
|
sig2n_k |
|
std_y |
|
utu |
|
vm |