前言
大家好,在之前的文章中我们已经讲解了很多Python数据处理的方法比如读取数据、缺失值处理、数据降维等,也介绍了一些数据可视化的方法如Matplotlib、pyecharts等,那么在掌握了这些基础技能之后,要进行更深入的分析就需要掌握一些常用的建模方法,本文将讲解如何利用Python进行统计分析。和之前的文章类似,本文只讲如何用代码实现,不做理论推导与过多的结果解释(事实上常用的模型可以很轻松的查到完美的推导与解析)。因此读者需要掌握一些基本的统计模型比如回归模型、时间序列等。
Statsmodels简介
在Python 中统计建模分析最常用的就是Statsmodels模块。Statsmodels是一个主要用来进行统计计算与统计建模的Python库。主要有以下功能:
- 探索性分析:包含列联表、链式方程多重插补等探索性数据分析方法以及与统计模型结果的可视化图表,例如拟合图、箱线图、相关图、时间序列图等
- 回归模型:线性回归模型、非线性回归模型、广义线性模型、线性混合效应模型等
- 其他功能:方差分析、时间序列分析等模型的参数估计与估计参数的假设检验等
安装 brew install Statsmodels
文档 github.com/statsmodels/statsmodels
线性回归模型:普通最小二乘估计
线性模型有普通最小二乘(OLS)广义最小二乘(GLS)、加权最小二乘(WLS)等,Statsmodels对线性模型有较好的支持,来看个最简单的例子:普通最小二乘(OLS)
首先导入相关包
%matplotlib inline import numpy as np import statsmodels.api as sm import matplotlib.pyplot as plt from statsmodels.sandbox.regression.predstd import wls_prediction_std np.random.seed(9876789)
然后创建数据,先设置样本量为100
nsample = 100 #样本数量
然后设置x1和x2,x1是0到10等差排列,x2是x1的平方
x = np.linspace(0, 10, 100) X = np.column_stack((x, x**2))
再设置beta、误差项与响应变量y
beta = np.array([1, 0.1, 10]) e = np.random.normal(size=nsample) X = sm.add_constant(X) y = np.dot(X, beta) + e
接着建立回归模型
model = sm.OLS(y, X) results = model.fit() print(results.summary())
查看模型结果