Python statsmodels统计回归
1. 引言
统计回归是统计学中一种常用的分析方法,用于研究一个或多个自变量与因变量之间的关系。Python是一种功能强大的编程语言,其生态系统中有许多用于统计分析的库。在本文章中,我们将重点介绍Python中的statsmodels库,该库提供了广泛的统计模型和统计方法。我们将详细讨论如何使用statsmodels进行统计回归分析。
2. 安装statsmodels库
在开始之前,我们首先需要安装statsmodels库。可以使用pip命令在命令行中安装:
pip install statsmodels
不久之后,库将会安装完毕,我们将可以在Python中使用statsmodels库进行相关的统计分析。
3. 简单线性回归
简单线性回归是统计回归中最基本的形式,用于研究一个自变量是否与因变量之间存在线性关系。我们以一个简单的例子来说明如何使用statsmodels进行简单线性回归分析。
首先,我们需要导入所需的库:
import numpy as np
import statsmodels.api as sm
import seaborn as sns
import matplotlib.pyplot as plt
让我们创建一个虚拟数据集,其中包含自变量x和因变量y之间的线性关系:
np.random.seed(0)
n = 100
x = np.random.normal(0, 1, n)
y = 2 * x + np.random.normal(0, 1, n)
现在,我们可以使用statsmodels库来进行简单线性回归分析。首先,我们需要向x中添加常数列,以便统计模型能够拟合截距:
x = sm.add_constant(x)
接下来,我们可以使用OLS(Ordinary Least Squares)方法创建并拟合回归模型:
model = sm.OLS(y, x)
results = model.fit()
最后,我们可以使用summary()方法打印出回归结果的摘要:
print(results.summary())
运行以上代码,我们将获得类似下面的回归结果摘要:
OLS Regression Results
==============================================================================
Dep. Variable: y R-squared: 0.486
Model: OLS Adj. R-squared: 0.481
Method: Least Squares F-statistic: 101.7
Date: Mon, 01 Jun 2020 Prob (F-statistic): 5.40e-17
Time: 12:00:00 Log-Likelihood: -136.49
No. Observations: 100 AIC: 277.0
Df Residuals: 98 BIC: 282.2
Df Model: 1
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 0.0178 0.100 0.178 0.859 -0.181 0.216
x1 1.9737 0.195 10.084 0.000 1.586 2.361
==============================================================================
Omnibus: 0.118 Durbin-Watson: 1.924
Prob(Omnibus): 0.943 Jarque-Bera (JB): 0.238
Skew: -0.073 Prob(JB): 0.888
Kurtosis: 2.826 Cond. No. 1.09
==============================================================================
Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
回归结果摘要提供了统计指标,例如R-squared、调整R-squared、F-statistic和coef等。通过这些指标,我们可以评估回归模型的拟合程度和自变量的显著性。
同时,我们还可以使用seaborn绘制回归图来可视化回归结果:
sns.regplot(x[:,1], y)
plt.xlabel('x')
plt.ylabel('y')
plt.title('Simple Linear Regression')
plt.show()
上述代码将绘制出一条回归线,表示自变量x和因变量y之间的线性关系。
4. 多重线性回归
多重线性回归用于研究多个自变量和一个因变量之间的线性关系。我们将使用一个示例数据集来说明如何使用statsmodels进行多重线性回归分析。
首先,我们将导入所需的库和示例数据集:
import numpy as np
import statsmodels.api as sm
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt
# 将示例数据集加载到DataFrame
data = sns.load_dataset('tips')
我们将使用’total_bill’和’size’作为自变量,’tip’作为因变量。现在,我们可以使用statsmodels库进行多重线性回归分析。首先,我们需要向自变量添加常数列,以便统计模型能够拟合截距:
x = sm.add_constant(data[['total_bill', 'size']])
y = data['tip']
然后,我们可以创建并拟合回归模型:
model = sm.OLS(y, x)
results = model.fit()
最后,我们可以使用summary()方法打印出回归结果的摘要:
print(results.summary())
运行以上代码,我们将获得类似下面的回归结果摘要:
OLS Regression Results
==============================================================================
Dep. Variable: tip R-squared: 0.456
Model: OLS Adj. R-squared: 0.451
Method: Least Squares F-statistic: 92.31
Date: Mon, 01 Jun 2020 Prob (F-statistic): 6.70e-30
Time: 12:00:00 Log-Likelihood: -346.86
No. Observations: 244 AIC: 699.7
Df Residuals: 241 BIC: 710.3
Df Model: 2
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
const 0.6689 0.193 3.469 0.001 0.289 1.049
total_bill 0.0927 0.009 10.149 0.000 0.075 0.111
size 0.1926 0.088 2.179 0.030 0.018 0.367
==============================================================================
Omnibus: 18.817 Durbin-Watson: 1.097
Prob(Omnibus): 0.000 Jarque-Bera (JB): 20.528
Skew: 0.684 Prob(JB): 3.44e-05
Kurtosis: 3.191 Cond. No. 96.5
==============================================================================
Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
与简单线性回归分析类似,回归结果摘要提供了统计指标,例如R-squared、调整R-squared、F-statistic和coef等。通过这些指标,我们可以评估回归模型的拟合程度和自变量的显著性。
同时,我们还可以使用seaborn绘制回归图来可视化回归结果:
sns.regplot(data['total_bill'], data['tip'])
plt.xlabel('total_bill')
plt.ylabel('tip')
plt.title('Multiple Linear Regression')
plt.show()
上述代码将绘制出一条回归线,表示自变量’total_bill’和’size’与因变量’tip’之间的线性关系。
5. 总结
本文介绍了如何使用Python中的statsmodels库进行统计回归分析。我们通过示例代码演示了简单线性回归和多重线性回归的实现过程,并解释了回归结果摘要中的统计指标。通过这些方法,我们可以在Python中进行各种统计回归分析,并从结果中获取有关自变量与因变量之间关系的洞见。