pysal.model.spreg.
GM_Combo_Het_Regimes
(y, x, regimes, yend=None, q=None, w=None, w_lags=1, lag_q=True, max_iter=1, epsilon=1e-05, step1c=False, cores=False, inv_method='power_exp', constant_regi='many', cols2regi='all', regime_err_sep=False, regime_lag_sep=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_ds=None, name_regimes=None)[源代码]¶空间滞后和误差模型的GMM方法,具有异方差、状态和内生变量,具有结果和诊断;基于Arraiz等人[Arraiz2010]uuu,遵循Anselin[Anselin2011]uu。
参数: |
|
---|
实例
我们首先需要导入所需的模块,即numpy来将我们读取的数据转换为 spreg
理解和 pysal
执行所有分析。
>>> import numpy as np
>>> import pysal.lib
使用pysal.lib.io.open()打开有关NCOVR美国县凶杀案(3085个地区)的数据。这是与nat形状文件关联的dbf。注意pysal.lib.io.open()也以csv格式读取数据;由于实际类需要以numpy数组的形式传入数据,因此用户可以使用任何方法读取其数据。
>>> db = pysal.lib.io.open(pysal.lib.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
.
>>> w = pysal.lib.weights.Rook.from_shapefile(pysal.lib.examples.get_path("NAT.shp"))
除非有充分的理由不这样做,否则必须对权重行进行标准化,以便矩阵的每一行合计为一。除此之外,这允许将变量的空间滞后解释为相邻观测值的平均值。在Pysal中,可以通过以下方式轻松执行:
>>> w.transform = 'r'
我们都准备好了预赛,我们很好地运行模型。在这种情况下,我们需要变量和权重矩阵。如果我们希望在输出摘要中打印变量的名称,那么我们也必须将它们传入,尽管这是可选的。
只有空间滞后的例子
Combo类运行Sarar模型,即空间滞后+错误模型。在这种情况下,我们将运行一个简单的版本,在那里我们有空间效应和外生变量。因为它是一个空间模型,所以我们必须传递权重矩阵。如果我们希望在输出摘要中打印变量的名称,那么我们也必须将它们传入,尽管这是可选的。我们可以通过键入:model.summary来获得输出摘要,或者,我们可以检查betas:
>>> reg = GM_Combo_Het_Regimes(y, x, regimes, w=w, step1c=True, name_y=y_var, name_x=x_var, name_regimes=r_var, name_ds='NAT')
>>> print reg.name_z
['0_CONSTANT', '0_PS90', '0_UE90', '1_CONSTANT', '1_PS90', '1_UE90', '_Global_W_HR90', 'lambda']
>>> print np.around(reg.betas,4)
[[ 1.4613]
[ 0.9587]
[ 0.5658]
[ 9.1157]
[ 1.1324]
[ 0.6518]
[-0.4587]
[ 0.7174]]
该类还允许用户运行一个空间滞后+误差模型,该模型具有包括非空间内生回归量的额外特性。这意味着,除了空间滞后和误差之外,我们将方程右侧的一些变量视为内生变量,并对此进行检验。在这种情况下,我们将RD90(资源剥夺)视为一个内生回归量。我们使用fp89(贫困以下的家庭)来解决这一问题,因此将其放入仪器参数“q”。
>>> 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
然后,我们可以运行和探索与前一个组合类似的模型:
>>> reg = GM_Combo_Het_Regimes(y, x, regimes, yd, q, w=w, step1c=True, name_y=y_var, name_x=x_var, name_yend=yd_var, name_q=q_var, name_regimes=r_var, name_ds='NAT')
>>> print reg.name_z
['0_CONSTANT', '0_PS90', '0_UE90', '1_CONSTANT', '1_PS90', '1_UE90', '0_RD90', '1_RD90', '_Global_W_HR90', 'lambda']
>>> print reg.betas
[[ 3.41936197]
[ 1.04071048]
[ 0.16747219]
[ 8.85820215]
[ 1.847382 ]
[-0.24545394]
[ 2.43189808]
[ 3.61328423]
[ 0.03132164]
[ 0.29544224]]
>>> print np.sqrt(reg.vm.diagonal())
[ 0.53103804 0.20835827 0.05755679 1.00496234 0.34332131 0.10259525
0.3454436 0.37932794 0.07611667 0.07067059]
>>> print 'lambda: ', np.around(reg.betas[-1], 4)
lambda: [ 0.2954]
属性: |
|
---|
__init__
(y, x, regimes, yend=None, q=None, w=None, w_lags=1, lag_q=True, max_iter=1, epsilon=1e-05, step1c=False, cores=False, inv_method='power_exp', constant_regi='many', cols2regi='all', regime_err_sep=False, regime_lag_sep=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_ds=None, name_regimes=None)[源代码]¶初始化自身。请参阅帮助(键入(self))以获得准确的签名。
方法
__init__ \(Y,X,状态[,是,Q,W,…]) |
初始化自身。 |
属性
mean_y |
|
std_y |