Statsmodels的学习(二)——Linear Regression

Linear Regression

基本介绍

线性回归,该标签下的函数主要处理线性模型,并且要求这些线性模型具有独立和恒等分布误差或者具有异方差或自相关的误差。
该模块允许用普通最小二乘(OLS)、加权最小二乘(WLS)、广义最小二乘(GLS)和可行的广义最小二乘(p)误差进行估计。

数学模型

这一类模型假设如下方程:

Y=Xβ+μ,μN(0,Σ) Y = X β + μ , 其 中 μ ∼ N ( 0 , Σ )

依赖于

Σ Σ
的属性,当前的库中提供了如下四个可用类型:

  • GLS:任意协方差
    Σ Σ
    的广义最小平方。
  • OLS:对独立同分布(i.i.d.),误差是
    Σ=I Σ = I
    的普通最小二乘法
  • WLS:对异方差误差是
    diag(Σ) d i a g ( Σ )
    的加权最小二乘法法
  • GLSAR:可行的广义最小二乘与自相关AR(p)误差
    Σ=Σ(ρ) Σ = Σ ( ρ )

所有回归模型都定义相同的方法并遵循相同的结构,并且可以以类似的方式使用。其中一些包含了额外的模型特定的方法和属性。

除了递归,GLS是其他回归类的超类。

所在目录和使用方法

根据目录结构找到这些类和函数在都在statsmodels-->regression-->linear_model.py这个文件中。
导入时为了方便可以直接import statsmodels.api as sm,因为statsmodels-->api.py这个文件把常用的函数包都在文件中导入了。

至于如何使用,说明文档给出了一个关于OLS例子:

import statsmodels.api as sm    #调用statsmodels里面的api,通过api调用相当于调用了statsmodels.regression.linear_model,可以使用linear_model文件里的函数
spector_data = sm.datasets.spector.load()  #读取样例的数据集
spector_data.exog = sm.add_constant(spector_data.exog, prepend=False)
# Fit and summarize OLS model
mod = sm.OLS(spector_data.endog, spector_data.exog)
res = mod.fit()
print(res.summary())

第一行导入api
第二行取得其自带的数据集spector,这个数据集可以在文件
statsmodels\datasets\spector里面找到spector.csv。打开观察一下,发现该
数据集就是32行5列的简单数据。其中第一列是数据的序号,可以忽略。
第三行将spector_data里面exog增加一列常量
第四行使用函数OLS读入需要分析的数据,其中spector_data.endog是被拟合的数据Y
spector_data.exog是需要拟合的自变量X
第五行进行拟合。返回的是statsmodels.regression.linear_model.RegressionResults类型赋值给变量res
第六行打印变量res的结果。

如果你按照上面的代码运行,会打印出如下运行结果:

 OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.416
Model:                            OLS   Adj. R-squared:                  0.353
Method:                 Least Squares   F-statistic:                     6.646
Date:                Tue, 28 Feb 2017   Prob (F-statistic):            0.00157
Time:                        21:38:07   Log-Likelihood:                -12.978
No. Observations:                  32   AIC:                             33.96
Df Residuals:                      28   BIC:                             39.82
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
x1             0.4639      0.162      2.864      0.008       0.132       0.796
x2             0.0105      0.019      0.539      0.594      -0.029       0.050
x3             0.3786      0.139      2.720      0.011       0.093       0.664
const         -1.4980      0.524     -2.859      0.008      -2.571      -0.425
==============================================================================
Omnibus:                        0.176   Durbin-Watson:                   2.346
Prob(Omnibus):                  0.916   Jarque-Bera (JB):                0.167
Skew:                           0.141   Prob(JB):                        0.920
Kurtosis:                       2.786   Cond. No.                         176.
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

根据这个表格,介绍一下对所有回归类最常见的属性的详细描述。

  • pinv_wexoga:array–>白化设计矩阵的Moore-Penrose伪逆。它约等于
    (XTΣ1X)1XTΨ ( X T Σ − 1 X ) − 1 X T Ψ
    ,其中
    Ψ Ψ
    的定义为
    ΨΨT=Σ1 Ψ Ψ T = Σ − 1
  • cholsimgainv:array–>
    nn n ∗ n
    的上三角矩阵
    ΨT Ψ T
    满足
    ΨΨT=σ1 Ψ Ψ T = σ 1
  • df_model:float–>模型自由度。这等于p - 1,其中p是回归变量的个数。注意,这里的截距不被计算为使用自由度。
  • df_resid –>剩余的自由度。这等于n-p n是观察的次数p是参数的个数。注意,拦截被计算为在这里使用一定程度的自由。
  • llf:floot–>拟合模型的似然函数值。
  • nobs :float–>观察次数n。
  • normalized_cov_params:array–>一个等于
    (XTΣ1X)1 ( X T Σ − 1 X ) − 1
    pp p ∗ p
    矩阵
  • sigma:array–>误差项的n x n协方差矩阵:\mu\sim n \left(0,\Sigma\right)。
  • wexog:array–>白化的设计矩阵
    ΨTX Ψ T X
  • wendog:array–>白化响应变量
    ΨTY Ψ T Y

你可能感兴趣的:(python)