使用statsmodels实现线性回归
statsmodels简介
Statsmodels 是 Python 中一个强大的统计分析包,包含了回归分析、时间序列分析、假设检
验等等的功能。Statsmodels 在计量的简便性上是远远不及 Stata 等软件的,但它的优点在于可以与 Python 的其他的任务(如 NumPy、Pandas)有效结合,提高工作效率。在此,重点介绍最回归分析中最常用的 OLS(ordinary least square)功能。
当你需要在 Python 中进行回归分析时……
import statsmodels.api as sm!!!
关于统计模型
statsmodels是一个Python软件包,为scipy提供了补充,以进行统计计算,包括描述性统计以及统计模型的估计和推断。
statsmodels主要包括如下子模块:
回归模型:线性回归,广义线性模型,稳健的线性模型,线性混合效应模型等等。
方差分析(ANOVA)。
时间序列分析:AR,ARMA,ARIMA,VAR和其它模型。
非参数方法: 核密度估计,核回归。
统计模型结果可视化。
比较:statsmodels更关注统计推断,提供不确定估计和参数p-value。相反的,scikit-learn注重预测。
主要特点
线性回归模型:
普通最小二乘法
广义最小二乘法
加权最小二乘法
具有自回归误差的最小二乘
分位数回归
递归最小二乘法
具有混合效应和方差成分的混合线性模型
GLM:支持所有单参数指数族分布的广义线性模型
用于二项式和泊松的贝叶斯混合GLM
GEE:单向聚类或纵向数据的广义估计方程
离散模型:
Logit 和 Probit
多项 logit (MNLogit)
泊松和广义泊松回归
负二项式回归
零膨胀计数模型
RLM: 鲁棒的线性模型,支持多个 M 估计器。
时间序列分析:时间序列分析模型
完整的StateSpace建模框架
季节性ARIMA和ARIMAX模型
VARMA和VARMAX模型
动态因子模型
未观测到的组件模型
马尔可夫切换模型(MSAR),也称为隐马尔可夫模型(HMM)
单变量时间序列分析:AR,ARIMA
矢量自回归模型,VAR和结构VAR
矢量误差修正模型,VECM
指数平滑,Holt-Winters
时间序列的假设检验:单位根,协整和其他
用于时间序列分析的描述性统计数据和过程模型
生存分析:
比例风险回归(Cox模型)
生存者函数估计(Kaplan-Meier)
累积发生率函数估计
多变量:
缺失数据的主成分分析
旋转因子分析
MANOVA
典型相关
非参数统计:单变量和多变量核密度估计
数据集:用于示例和测试的数据集
统计:广泛的统计检验
诊断和规格检验
拟合优度和正态性检验
多元测试函数
各种其他统计检验
其他模型
Sandbox:statsmodels包含一个 sandbox 文件夹,其中包含处于开发和测试各个阶段的代码, 因此不被视为“生产就绪”。其中包括:
广义矩法(GMM)估计器
核回归
scipy.stats.distributions的各种扩展
面板数据模型
信息理论测度
什么是线性回归?
线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
在回归术语中,我们将被预测的变量称为因变量(dependent variable),用y表示。把用来预测应变量值的一个或多个变量称为自变量(predictor variable/independent variable),用x表示。
简单线性回归案例
数据集说明
本文用于分析的样本数据集手动定义,有利于结果一目了然,特别容易理解。
导入需要的工具包
import statsmodels.api as sm
from statsmodels.formula.api import ols
from statsmodels.sandbox.regression.predstd import wls_prediction_std
import matplotlib.pyplot as plt
import seaborn as sns
sns.set_style("darkgrid")
import pandas as pd
如果电脑上面没有安装这些包,直接下载速度过慢,可以选择在国内的网站上面下载安装。
pip install statsmodels -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install matplotlib -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install seaborn -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
pip install pandas -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
使用pandas生成数据
自定义的数据,可任意修改。注意:列名中,相当于把“a”列作为主键,让两个数据集可以关联起来。
a = pd.DataFrame([[1,2,20,4,5],
[2,3,21.2,34,45],
[3,4,22.1,34,45],
[4,5,22.9,34,45],
[5,6,24.1,34,46]