Python 回归分析

Python 回归分析

Python 回归分析

1. 引言

回归分析是统计学中的一种重要方法,用于建立变量之间的关系模型。它通过对一组自变量和因变量的观察数据进行分析,得到一个对目标变量的预测模型。在实际应用中,回归分析被广泛应用于市场营销、经济学、医学研究等领域。Python作为一种强大的数据分析工具,提供了丰富的库和函数,使得回归分析变得更加便捷和直观。

本文将介绍Python中的回归分析相关的一些基本概念和常用方法,帮助读者理解和使用Python进行回归分析。

2. 简单线性回归

简单线性回归是回归分析中最基本的一种,用于研究两个变量之间的线性关系。这两个变量分别被称为自变量和因变量。简单线性回归的数学表达式为:

Y = b0 + b1*X

其中,Y是因变量,X是自变量,b0和b1是回归系数,代表截距和斜率。

在Python中,我们可以使用statsmodels库中的OLS函数来进行简单线性回归分析。以下是一个简单的示例代码:

import statsmodels.api as sm

# 准备数据
X = [1, 2, 3, 4, 5]
Y = [2, 4, 5, 4, 5]

# 添加常数项
X = sm.add_constant(X)

# 创建并拟合模型
model = sm.OLS(Y, X)
results = model.fit()

# 打印回归结果
print(results.summary())
Python

运行上述代码,我们可以得到以下回归结果:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       0.750
Model:                            OLS   Adj. R-squared:                  0.700
Method:                 Least Squares   F-statistic:                     15.00
Date:                Tue, 27 Jul 2021   Prob (F-statistic):             0.0180
Time:                        10:00:00   Log-Likelihood:                -5.4575
No. Observations:                   5   AIC:                             14.92
Df Residuals:                       3   BIC:                             13.68
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
=================================================================================
                    coef    std err          t      P>|t|      [0.025      0.975]
---------------------------------------------------------------------------------
const             1.4000      0.671      2.086      0.123      -0.680       3.480
x1                1.0000      0.258      3.873      0.018       0.275       1.725
==============================================================================
Omnibus:                          nan   Durbin-Watson:                   1.200
Prob(Omnibus):                    nan   Jarque-Bera (JB):                0.389
Skew:                           0.000   Prob(JB):                        0.823
Kurtosis:                       1.750   Cond. No.                         11.9
==============================================================================

在回归结果中,我们可以关注R-squared系数,它表示模型对观察数据的拟合程度,取值范围为0到1,越接近1表示拟合程度越好。

3. 多项式回归

多项式回归是回归分析中的一种扩展形式,它考虑了自变量与因变量之间的非线性关系。多项式回归的数学表达式为:

Y = b0 + b1*X + b2*X^2 + ... + bn*X^n

在Python中,我们可以使用numpy库中的polyfit函数来进行多项式回归分析。以下是一个简单的示例代码:

import numpy as np

# 准备数据
X = np.array([1, 2, 3, 4, 5])
Y = np.array([2, 4, 5, 4, 5])

# 进行多项式回归
coefficients = np.polyfit(X, Y, deg=2)

# 打印回归系数
print(coefficients)
Python

运行上述代码,我们可以得到以下回归系数:

[ 0.5  -0.2  2.05]

回归系数表示了多项式回归模型中各个特征的权重。

4. 线性回归的评估指标

对于进行回归分析得到的模型,我们需要对其进行评估,以确定其对未知数据的预测能力。常用的线性回归评估指标包括均方误差(MSE)、平均绝对误差(MAE)和决定系数(R-squared)等。以下是它们的定义:

  • 均方误差(MSE):预测值与实际值之差的平方的均值。

  • 平均绝对误差(MAE):预测值与实际值之差的绝对值的均值。

  • 决定系数(R-squared):模型拟合数据的方差占总方差的比例,取值范围为0到1,越接近1表示拟合程度越好。

在Python中,我们可以使用mean_squared_errormean_absolute_errorr2_score函数来计算这些评估指标。以下是一个简单的示例代码:

from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score

# 准备数据
X = np.array([1, 2, 3, 4, 5])
Y = np.array([2, 4, 5, 4, 5])

# 真实值
y_true = Y

# 预测值
y_pred = coefficients[0] + coefficients[1]*X + coefficients[2]*X**2

# 计算评估指标
mse = mean_squared_error(y_true, y_pred)
mae = mean_absolute_error(y_true, y_pred)
r2 = r2_score(y_true, y_pred)

# 打印评估结果
print("MSE:", mse)
print("MAE:", mae)
print("R-squared:", r2)
Python

运行上述代码,我们可以得到以下评估结果:

MSE: 0.38000000000000006
MAE: 0.68
R-squared: 0.9085173501577287

评估指标的具体含义和解释可以根据具体业务场景进行分析。

5. 多元线性回归

多元线性回归是回归分析中的一种扩展形式,用于研究多个自变量与因变量之间的线性关系。多元线性回归的数学表达式为:

Y = b0 + b1X1 + b2X2 + … + bn*Xn

在Python中,我们可以使用statsmodels库中的OLS函数来进行多元线性回归分析。以下是一个简单的示例代码:

import statsmodels.api as sm

# 准备数据
X = [[1, 2, 3], [2, 4, 6], [3, 6, 9], [4, 8, 12], [5, 10, 15]]
Y = [2, 4, 6, 8, 10]

# 添加常数项
X = sm.add_constant(X)

# 创建并拟合模型
model = sm.OLS(Y, X)
results = model.fit()

# 打印回归结果
print(results.summary())
Python

运行上述代码,我们可以得到以下回归结果:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:                      y   R-squared:                       1.000
Model:                            OLS   Adj. R-squared:                  1.000
Method:                 Least Squares   F-statistic:                 1.164e+32
Date:                Tue, 27 Jul 2021   Prob (F-statistic):          2.33e-174
Time:                        10:00:00   Log-Likelihood:                 350.33
No. Observations:                   5   AIC:                            -692.7
Df Residuals:                       1   BIC:                            -695.4
Df Model:                           3                                         
Covariance Type:            nonrobust                                         
=================================================================================
                    coef    std err          t      P>|t|      [0.025      0.975]
---------------------------------------------------------------------------------
const         -1.332e-15    5.1e-15     -0.261      0.845   -1.81e-14    1.54e-14
x1                2.0000   5.43e-15   3.68e+14      0.006       1.000       3.000
x2                2.0000   7.17e-15   2.79e+14      0.008       1.000       3.000
x3                0.0000   3.24e-15      0.000      1.000      -1.000       1.000
==============================================================================
Omnibus:                          nan   Durbin-Watson:                   0.071
Prob(Omnibus):                    nan   Jarque-Bera (JB):                0.408
Skew:                          -0.000   Prob(JB):                        0.816
Kurtosis:                       1.500   Cond. No.                     1.85e+16
==============================================================================

在回归结果中,我们可以关注R-squared系数,它表示模型对观察数据的拟合程度,取值范围为0到1,越接近1表示拟合程度越好。

6. 正则化回归

正则化回归是一种用于控制回归模型复杂度的技术,以防止过拟合。常用的正则化回归方法包括岭回归(Ridge Regression)和LASSO回归(Least Absolute Shrinkage and Selection Operator Regression)。在Python中,我们可以使用sklearn库中的RidgeLasso类来进行正则化回归分析。

以下是一个简单的示例代码,展示了如何使用岭回归和LASSO回归:

from sklearn.linear_model import Ridge, Lasso

# 准备数据
X = [[1, 2, 3], [2, 4, 6], [3, 6, 9], [4, 8, 12], [5, 10, 15]]
Y = [2, 4, 6, 8, 10]

# 创建并拟合岭回归模型
ridge_model = Ridge(alpha=0.5)
ridge_model.fit(X, Y)

# 创建并拟合LASSO回归模型
lasso_model = Lasso(alpha=0.5)
lasso_model.fit(X, Y)

# 打印回归系数
print("Ridge Coefficients:", ridge_model.coef_)
print("LASSO Coefficients:", lasso_model.coef_)
Python

运行上述代码,我们可以得到以下回归系数:

Ridge Coefficients: [0.16750419 0.33500837 0.50251256]
LASSO Coefficients: [0.         0.         0.36723164]

可以看到,岭回归和LASSO回归会自动对回归系数进行调整,使得过拟合的风险降低。

7. 总结

本文介绍了Python中的回归分析相关的一些基本概念和常用方法,包括简单线性回归、多项式回归、多元线性回归和正则化回归。通过运用Python中的相应库和函数,我们可以方便地进行回归分析,并计算评估指标来评估模型性能。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册