Python statsmodels统计回归

Python statsmodels统计回归

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中进行各种统计回归分析,并从结果中获取有关自变量与因变量之间关系的洞见。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程