pysal.model.spreg.OLS

class pysal.model.spreg.OLS(y, x, w=None, robust=None, gwk=None, sig2n_k=True, nonspat_diag=True, spat_diag=False, moran=False, white_test=False, vm=False, name_y=None, name_x=None, name_w=None, name_gwk=None, name_ds=None)[源代码]

带结果和诊断的普通最小二乘法。

参数:
y : 数组

因变量nx1数组

x : 数组

二维数组,n行,每个独立(外生)变量一列,不包括常量

w : Pysal W对象

空间权重对象(运行空间诊断时需要)

robust : 一串

如果“白色”,则给出方差协方差矩阵的白色一致估计。如果“hac”,则给出方差协方差矩阵的hac一致估计。默认设置为无。

gwk : Pysal W对象

HAC估计所需的内核空间权重。注:矩阵必须沿着主对角线。

sig2n_k : 布尔

如果为真,则使用n-k估计Sigma^2。如果为假,则使用n。

nonspat_diag : 布尔

如果为真,则计算回归的非空间诊断。

spat_diag : 布尔

如果为真,则计算拉格朗日乘数测试(需要w)。注:更多测试见Moran。

moran : 布尔

如果是真的,就用残差来计算莫兰的i。注意:需要spat_diag=true。

white_test : 布尔

如果为真,则计算White的规范健壮性测试。(要求nonspat_diag=true)

vm : 布尔

如果为真,则在汇总结果中包含方差-协方差矩阵

name_y : 一串

输出中使用的从属变量的名称

name_x : 字符串表

输出中使用的自变量的名称

name_w : 一串

输出中使用的权重矩阵的名称

name_gwk : 一串

用于输出的内核权重矩阵的名称

name_ds : 一串

用于输出的数据集名称

实例

>>> import numpy as np
>>> import pysal.lib

使用pysal.lib.io.open()打开关于哥伦布社区犯罪(49个地区)的数据。这是与Columbus形状文件关联的DBF。注意pysal.lib.io.open()也以csv格式读取数据;另外,实际的ols类要求以numpy数组的形式传入数据,以便用户可以使用任何方法读取其数据。

>>> db = pysal.lib.io.open(pysal.lib.examples.get_path('columbus.dbf'),'r')

从dbf文件中提取hoval列(主值),并使其成为回归的因变量。注意,pysal要求它是一个nx1 numpy数组。

>>> hoval = db.by_col("HOVAL")
>>> y = np.array(hoval)
>>> y.shape = (len(hoval), 1)

从dbf中提取犯罪(crime)和inc(inc)向量,作为回归中的独立变量。注意,pysal要求这是一个nxj numpy数组,其中j是独立变量的数量(不包括常量)。pysal.model.spreg.ols将一个向量添加到传入的自变量中。

>>> X = []
>>> X.append(db.by_col("INC"))
>>> X.append(db.by_col("CRIME"))
>>> X = np.array(X).T

运行普通最小二乘回归所需的最小参数是分别包含自变量和因变量的两个numpy数组。为了使打印的结果更有意义,用户可以为使用的变量输入显式名称;这是可选的。

>>> ols = OLS(y, X, name_y='home value', name_x=['income','crime'], name_ds='columbus', white_test=True)

pysal.model.spreg.ols计算回归系数及其标准误差、t-stats和p值。它还计算了大量的回归诊断。在本例中,我们计算白色测试,默认情况下,它不是(“white_test=true”)。所有这些结果都可以作为运行pysal.model.spreg.ols创建的回归对象的属性单独访问。还可以通过打印回归对象的摘要属性一次访问它们。在下例中,犯罪参数为-0.4849,t统计量为-2.6544,p值为0.01087。

>>> ols.betas
array([[ 46.42818268],
       [  0.62898397],
       [ -0.48488854]])
>>> print round(ols.t_stat[2][0],3)
-2.654
>>> print round(ols.t_stat[2][1],3)
0.011
>>> print round(ols.r2,3)
0.35

或者,我们可以轻松获得所有结果的完整摘要,这些结果格式良好,可以打印:

>>> print ols.summary
REGRESSION
----------
SUMMARY OF OUTPUT: ORDINARY LEAST SQUARES
-----------------------------------------
Data set            :    columbus
Dependent Variable  :  home value                Number of Observations:          49
Mean dependent var  :     38.4362                Number of Variables   :           3
S.D. dependent var  :     18.4661                Degrees of Freedom    :          46
R-squared           :      0.3495
Adjusted R-squared  :      0.3212
Sum squared residual:   10647.015                F-statistic           :     12.3582
Sigma-square        :     231.457                Prob(F-statistic)     :   5.064e-05
S.E. of regression  :      15.214                Log likelihood        :    -201.368
Sigma-square ML     :     217.286                Akaike info criterion :     408.735
S.E of regression ML:     14.7406                Schwarz criterion     :     414.411
<BLANKLINE>
------------------------------------------------------------------------------------
            Variable     Coefficient       Std.Error     t-Statistic     Probability
------------------------------------------------------------------------------------
            CONSTANT      46.4281827      13.1917570       3.5194844       0.0009867
               crime      -0.4848885       0.1826729      -2.6544086       0.0108745
              income       0.6289840       0.5359104       1.1736736       0.2465669
------------------------------------------------------------------------------------
<BLANKLINE>
REGRESSION DIAGNOSTICS
MULTICOLLINEARITY CONDITION NUMBER           12.538
<BLANKLINE>
TEST ON NORMALITY OF ERRORS
TEST                             DF        VALUE           PROB
Jarque-Bera                       2          39.706           0.0000
<BLANKLINE>
DIAGNOSTICS FOR HETEROSKEDASTICITY
RANDOM COEFFICIENTS
TEST                             DF        VALUE           PROB
Breusch-Pagan test                2           5.767           0.0559
Koenker-Bassett test              2           2.270           0.3214
<BLANKLINE>
SPECIFICATION ROBUST TEST
TEST                             DF        VALUE           PROB
White                             5           2.906           0.7145
================================ END OF REPORT =====================================

如果将可选参数w和spat_diag传递给pysal.model.spreg.ols,还将计算回归的空间诊断。这些包括拉格朗日乘数测试和莫兰剩余量I。W参数是Pysal空间权重矩阵。在本例中,w直接从shapefile columbus.shp生成,但w也可以从gal或gwt文件中读取。在这种情况下,建立了一个Rook邻接权矩阵,但是Pysal还提供了皇后邻接权、距离权和K最近邻接权等。在示例中,残差的Moran's i为0.204,标准值为2.592,p值为0.0095。

>>> w = pysal.lib.weights.Rook.from_shapefile(pysal.lib.examples.get_path("columbus.shp"))
>>> ols = OLS(y, X, w, spat_diag=True, moran=True, name_y='home value', name_x=['income','crime'], name_ds='columbus')
>>> ols.betas
array([[ 46.42818268],
       [  0.62898397],
       [ -0.48488854]])
>>> print round(ols.moran_res[0],3)
0.204
>>> print round(ols.moran_res[1],3)
2.592
>>> print round(ols.moran_res[2],4)
0.0095
属性:
summary : 一串

回归结果和诊断摘要(注:与print命令一起使用)

betas : 数组

Kx1估计系数数组

u : 数组

nx1残差数组

predy : 数组

nx1预测Y值数组

n : 整数

观测次数

k : 整数

估计系数的变量数(包括常数)

y : 数组

因变量nx1数组

x : 数组

二维数组,n行,每个独立(外生)变量一列,包括常量

robust : 一串

稳健标准误差调整

mean_y : 浮动

因变量均值

std_y : 浮动

因变量标准差

vm : 数组

方差协方差矩阵(kxk)

r2 : 浮动

R平方

ar2 : 浮动

调整后的r平方

utu : 浮动

残差平方和

sig2 : 浮动

计算中使用的sigma平方

sig2ML : 浮动

sigma平方(最大似然)

f_stat : 元组

统计(浮动),P值(浮动)

logll : 浮动

对数似然

aic : 浮动

阿卡克信息准则

schwarz : 浮动

施瓦兹信息准则

std_err : 数组

1×k阵列的betas标准误差

t_stat : 元组列表

t statistic;每个元组都包含一对(statistic,p-value),其中每个元组都是一个浮点

mulColli : 浮动

多重共线性条件数

jarque_bera : 词典

“jb”:jarque bera statistic(float);“pValue”:p值(float);“df”:自由度(int)

breusch_pagan : 词典

“bp”:breusch pagan statistic(float);“pValue”:p值(float);“df”:自由度(int)

koenker_bassett : 词典

“kb”:Koenker-Bassett统计(float);“pValue”:p值(float);“df”:自由度(int)

white : 词典

“wh”:白色统计(float);“pValue”:p值(float);“df”:自由度(int)

lm_error : 元组

空间误差模型的拉格朗日乘子检验;元组包含一对(统计,p值),其中每个都是一个浮点

lm_lag : 元组

空间滞后模型的拉格朗日乘子检验;元组包含一对(统计,p值),其中每个都是一个浮点

rlm_error : 元组

空间误差模型的鲁棒拉格朗日乘子检验;元组包含一对(统计,p值),其中每个都是一个浮点

rlm_lag : 元组

空间滞后模型的鲁棒拉格朗日乘子检验;元组包含一对(统计,p值),其中每个都是一个浮点

lm_sarma : 元组

空间sarma模型的拉格朗日乘子检验;元组包含一对(统计,p值),其中每个都是一个浮点

moran_res : 元组

残差的莫兰i;包含三重的元组(莫兰i,标准化的莫兰i,p值)

name_y : 一串

输出中使用的从属变量的名称

name_x : 字符串表

输出中使用的自变量的名称

name_w : 一串

输出中使用的权重矩阵的名称

name_gwk : 一串

用于输出的内核权重矩阵的名称

name_ds : 一串

用于输出的数据集名称

title : 一串

所用回归方法的名称

sig2n : 浮动

sigma平方(用分母中的n计算)

sig2n_k : 浮动

sigma平方(用分母中的n-k计算)

xtx : 浮动

XX

xtxi : 浮动

(X'X)^-1

__init__(y, x, w=None, robust=None, gwk=None, sig2n_k=True, nonspat_diag=True, spat_diag=False, moran=False, white_test=False, vm=False, name_y=None, name_x=None, name_w=None, name_gwk=None, name_ds=None)[源代码]

初始化自身。请参阅帮助(键入(self))以获得准确的签名。

方法

__init__ \(Y、X[、W、Robust、GWK、Sig2N、U K、…]) 初始化自身。

属性

mean_y 
sig2n 
sig2n_k 
std_y 
utu 
vm