pysal.model.spreg.
GM_Endog_Error
(y, x, yend, q, w, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_ds=None)[源代码]¶基于Kelejian和Prucha(1998年,1999年)【Kelejian1998年】【Kelejian1999年】【uuux】的带有内生变量的空间误差模型的GMM方法,并给出结果和诊断。
参数: |
|
---|
实例
我们首先需要导入所需的模块,即numpy来将我们读取的数据转换为 spreg
理解和 pysal
执行所有分析。
>>> import pysal.lib
>>> import numpy as np
使用pysal.lib.io.open()打开关于哥伦布社区犯罪(49个地区)的数据。这是与Columbus形状文件关联的DBF。注意pysal.lib.io.open()也以csv格式读取数据;由于实际类需要以numpy数组的形式传入数据,因此用户可以使用任何方法读取其数据。
>>> dbf = pysal.lib.io.open(pysal.lib.examples.get_path("columbus.dbf"),'r')
从dbf文件中提取crime列(crime rate),并使其成为回归的因变量。请注意,pysal要求这是一个形状(n,1)的numpy数组,而不是其他包接受的(n,1)的常见形状。
>>> y = np.array([dbf.by_col('CRIME')]).T
从dbf中提取inc(收入)向量,作为回归中的独立变量。注意,pysal要求这是一个nxj numpy数组,其中j是独立变量的数量(不包括常量)。默认情况下,该模型向传入的自变量添加一个1的向量。
>>> x = np.array([dbf.by_col('INC')]).T
在这种情况下,我们认为hoval(home value)是一个内生回归量。我们告诉模型,这是通过传递一个不同于外生变量(x)的参数来实现的。
>>> yend = np.array([dbf.by_col('HOVAL')]).T
因为我们有内生变量,为了获得模型的正确估计,我们需要对hoval进行检测。为此,我们使用discbd(到cbd的距离),并将其放入仪器参数“q”。
>>> q = np.array([dbf.by_col('DISCBD')]).T
由于我们想要运行一个空间误差模型,我们需要指定空间权重矩阵,该矩阵将观测的空间配置包含到模型的误差分量中。为此,我们可以打开一个已经存在的gal文件或创建一个新的gal文件。在这种情况下,我们将使用 columbus.gal
,其中包含我们在整个示例中使用的Columbus数据集中的观测值之间的连续关系。注意,为了读取文件,不仅要打开它,还需要在命令末尾附加“.read()”。
>>> w = pysal.lib.io.open(pysal.lib.examples.get_path("columbus.gal"), 'r').read()
除非有充分的理由不这样做,否则必须对权重行进行标准化,以便矩阵的每一行合计为一。除此之外,这允许将变量的空间滞后解释为相邻观测值的平均值。在Pysal中,可以通过以下方式轻松执行:
>>> w.transform='r'
我们都准备好了初步设计,我们很好地运行模型。在这种情况下,我们需要变量(外生和内生)、工具和权重矩阵。如果我们希望在输出摘要中打印变量的名称,那么我们也必须将它们传入,尽管这是可选的。
>>> model = GM_Endog_Error(y, x, yend, q, w=w, name_x=['inc'], name_y='crime', name_yend=['hoval'], name_q=['discbd'], name_ds='columbus')
一旦我们运行了模型,我们就可以对输出进行一点探索。我们创建的回归对象有许多属性,因此请花点时间来发现它们。请注意,由于我们运行的是1998/99年的经典GMM误差模型,因此空间参数是作为一个点估计获得的,因此尽管您得到了它的一个值(model.betas下的系数有一个值),但您不能对它进行推理(model.se_betas中只有三个值)。此外,这种回归使用了一种两阶段最小二乘估计方法,该方法解释了所包含的内生变量所产生的内生性。
>>> print model.name_z
['CONSTANT', 'inc', 'hoval', 'lambda']
>>> np.around(model.betas, decimals=4)
array([[ 82.573 ],
[ 0.581 ],
[ -1.4481],
[ 0.3499]])
>>> np.around(model.std_err, decimals=4)
array([ 16.1381, 1.3545, 0.7862])
属性: |
|
---|
__init__
(y, x, yend, q, w, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_ds=None)[源代码]¶初始化自身。请参阅帮助(键入(self))以获得准确的签名。
方法
__init__ \(Y、X、Yend、Q、W[、VM、Name、Y、…]) |
初始化自身。 |
属性
mean_y |
|
std_y |