pysal.model.spreg.
GM_Lag
(y, x, yend=None, q=None, w=None, w_lags=1, lag_q=True, robust=None, gwk=None, sig2n_k=False, spat_diag=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_gwk=None, name_ds=None)[源代码]¶空间两阶段最小二乘法(s2sls),结果和诊断;Anselin(1988年)【Anselin1988年】_
参数: |
|
---|
实例
我们首先需要导入所需的模块,即numpy来将我们读取的数据转换为 spreg
理解和 pysal
执行所有分析。因为我们需要对模型进行一些测试,所以我们还导入了诊断模块。
>>> import numpy as np
>>> import pysal.lib
>>> import pysal.model.spreg.diagnostics as D
使用pysal.lib.io.open()打开关于哥伦布社区犯罪(49个地区)的数据。这是与Columbus形状文件关联的DBF。注意pysal.lib.io.open()也以csv格式读取数据;由于实际类需要以numpy数组的形式传入数据,因此用户可以使用任何方法读取其数据。
>>> db = pysal.lib.io.open(pysal.lib.examples.get_path("columbus.dbf"),'r')
从dbf文件中提取hoval列(home value),并使其成为回归的因变量。请注意,pysal要求这是一个形状(n,1)的numpy数组,而不是其他包接受的(n,1)的常见形状。
>>> y = np.array(db.by_col("HOVAL"))
>>> y = np.reshape(y, (49,1))
从dbf中提取inc(收入)和crime(犯罪率)向量,作为回归中的独立变量。注意,pysal要求这是一个nxj numpy数组,其中j是独立变量的数量(不包括常量)。默认情况下,该模型向传入的独立变量添加一个1的向量,但可以通过传递常量=false来覆盖该向量。
>>> X = []
>>> X.append(db.by_col("INC"))
>>> X.append(db.by_col("CRIME"))
>>> X = np.array(X).T
由于我们想要运行一个空间误差模型,我们需要指定空间权重矩阵,该矩阵将观测的空间配置包含到模型的误差分量中。为此,我们可以打开一个已经存在的gal文件或创建一个新的gal文件。在这种情况下,我们将从 columbus.shp
.
>>> w = pysal.lib.weights.Rook.from_shapefile(pysal.lib.examples.get_path("columbus.shp"))
除非有充分的理由不这样做,否则必须对权重行进行标准化,以便矩阵的每一行合计为一。除此之外,这允许将变量的空间滞后解释为相邻观测值的平均值。在Pysal中,可以通过以下方式轻松执行:
>>> w.transform = 'r'
这个类运行一个滞后模型,这意味着在方程的右侧包含因变量的空间滞后。如果我们希望在输出摘要中打印变量的名称,那么我们也必须将它们传入,尽管这是可选的。要运行的默认最基本模型是:
>>> reg=GM_Lag(y, X, w=w, w_lags=2, name_x=['inc', 'crime'], name_y='hoval', name_ds='columbus')
>>> reg.betas
array([[ 45.30170561],
[ 0.62088862],
[ -0.48072345],
[ 0.02836221]])
一旦模型运行,我们可以通过调用诊断模块获得系数估计的标准误差:
>>> D.se_betas(reg)
array([ 17.91278862, 0.52486082, 0.1822815 , 0.31740089])
但是,我们也可以运行模型,其中包含了遵循白色过程纠正的标准错误。为此,我们必须包含可选参数 robust='white'
:
>>> reg=GM_Lag(y, X, w=w, w_lags=2, robust='white', name_x=['inc', 'crime'], name_y='hoval', name_ds='columbus')
>>> reg.betas
array([[ 45.30170561],
[ 0.62088862],
[ -0.48072345],
[ 0.02836221]])
我们可以从模型对象访问标准错误:
>>> reg.std_err
array([ 20.47077481, 0.50613931, 0.20138425, 0.38028295])
该类具有足够的灵活性,能够适应空间滞后模型,该模型除因变量的空间滞后外,还包括其他非空间内生回归量。作为一个例子,我们假设犯罪实际上是内生的,我们决定用discbd(到cbd的距离)作为工具。我们只重新加载x inc,并将犯罪定义为内生的,将discbd定义为工具:
>>> X = np.array(db.by_col("INC"))
>>> X = np.reshape(X, (49,1))
>>> yd = np.array(db.by_col("CRIME"))
>>> yd = np.reshape(yd, (49,1))
>>> q = np.array(db.by_col("DISCBD"))
>>> q = np.reshape(q, (49,1))
我们可以再次运行模型:
>>> reg=GM_Lag(y, X, w=w, yend=yd, q=q, w_lags=2, name_x=['inc'], name_y='hoval', name_yend=['crime'], name_q=['discbd'], name_ds='columbus')
>>> reg.betas
array([[ 100.79359082],
[ -0.50215501],
[ -1.14881711],
[ -0.38235022]])
一旦模型运行,我们可以通过调用诊断模块获得系数估计的标准误差:
>>> D.se_betas(reg)
array([ 53.0829123 , 1.02511494, 0.57589064, 0.59891744])
属性: |
|
---|
__init__
(y, x, yend=None, q=None, w=None, w_lags=1, lag_q=True, robust=None, gwk=None, sig2n_k=False, spat_diag=False, vm=False, name_y=None, name_x=None, name_yend=None, name_q=None, name_w=None, name_gwk=None, name_ds=None)[源代码]¶初始化自身。请参阅帮助(键入(self))以获得准确的签名。
方法
__init__ \(Y、X、Yend、Q、W、W、Lags、Lag、Q、…]) |
初始化自身。 |
属性
mean_y |
|
pfora1a2 |
|
sig2n |
|
sig2n_k |
|
std_y |
|
utu |
|
vm |