📜  使用 OLS 摘要解释线性回归的结果(1)

📅  最后修改于: 2023-12-03 14:49:44.080000             🧑  作者: Mango

使用 OLS 摘要解释线性回归的结果

线性回归简介

线性回归是将一个或多个自变量与一个或多个因变量之间的关系建模为线性函数的方法。 这个模型可以用来预测因变量的值,也可以用来了解自变量与因变量之间的关系。

OLS 简介

最小二乘法(OLS)是一种用于估计线性回归模型参数的方法。 OLS 通过最小化残差平方和来找到最优拟合直线。 残差是预测值与实际值之间的差异。

解释线性回归结果

OLS 可以用来评估线性回归模型的性能及其参数的显着性。 我们可以使用 OLS 摘要来解释模型的结果。

导入必要的库

首先,我们需要导入 pandas、statsmodels 和 matplotlib 库。

import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt
加载数据

接下来,我们将加载我们的数据。 我们将使用 statsmodels 中的几个内置数据集之一 - 鸢尾花数据集。

from statsmodels.api import datasets

iris = datasets.get_rdataset("iris").data
构建线性回归模型

我们将使用 iris 数据集中的一个特征(萼片长度)来预测另一个特征(花瓣长度)。

X = iris[['Sepal.Length']]
y = iris[['Petal.Length']]

X = sm.add_constant(X)  # 添加截距项

model = sm.OLS(y, X).fit()  # 构建线性回归模型
分析结果

现在我们可以使用以下代码来输出 OLS 摘要:

print(model.summary())

这将给出以下输出:

                            OLS Regression Results                            
==============================================================================
Dep. Variable:           Petal.Length   R-squared:                       0.759
Model:                            OLS   Adj. R-squared:                  0.757
Method:                 Least Squares   F-statistic:                     386.5
Date:                Wed, 09 Dec 2020   Prob (F-statistic):           2.84e-40
Time:                        11:30:48   Log-Likelihood:                -101.51
No. Observations:                 150   AIC:                             207.0
Df Residuals:                     148   BIC:                             213.3
Df Model:                           1                                         
Covariance Type:            nonrobust                                         
==============================================================================
                 coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
const          1.0836      0.159      6.803      0.000       0.769       1.398
Sepal.Length   2.2299      0.113     19.658      0.000       2.006       2.453
==============================================================================
Omnibus:                        0.257   Durbin-Watson:                   1.962
Prob(Omnibus):                  0.879   Jarque-Bera (JB):                0.412
Skew:                           0.049   Prob(JB):                        0.814
Kurtosis:                       2.697   Cond. No.                         9.50
==============================================================================

Warnings:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.

我们会看到以下内容:

  • R-squared 和 Adjusted R-squared:两个指标都衡量模型的拟合优度。R-squared 表示模型可以解释多少响应变量的方差,Adjusted R-squared 考虑到了模型的复杂性。这两个指标都在 0 到 1 之间,越高越好。
  • F-statistic 和 Prob(F-statistic):F-statistic 测量模型是否显著。 Prob(F-statistic)小于 0.05 意味着我们可以拒绝零假设,即模型显著。
  • coef:我们要预测的因变量的斜率(β1)和截距(β0)。
  • std err 和 t:std err 是标准误差,t 是 t 统计检验值。 t 值越高,我们可以拒绝零假设(即该系数不显著)的证据就越强。
  • P>|t|:这是我们执行 t 统计检验的时间。如果 p 值小于阈值(通常为 0.05),则我们将拒绝零假设,即该系数显著。
  • [0.025 0.975]:这些是 95% 置信区间的下限和上限。斜率的真实值将以 95% 的概率落在这两个值之间。
  • Omnibus 和 Prob(Omnibus):这些是 Omnibus 和概率 Omnibus 测试的结果。 Omnibus 测试检验残差是否正态分布。Prob(Omnibus)小于 0.05 意味着残差不是正态分布的。
  • Skew 和 Kurtosis:它们测量残差分布的偏斜和峰度。
  • Durbin-Watson:检查残差之间是否存在自相关。
  • Cond. No.:它表示数据集中特征之间的共线性。较高的数字意味着共线性问题较严重。
可视化结果

我们可以使用 matplotlib 库来绘制真实值与预测值的散点图,并将拟合线添加到图表中。

plt.scatter(X['Sepal.Length'], y, alpha=0.5)  # 绘制散点图
plt.plot(X['Sepal.Length'], model.predict(X), color='red')  # 绘制拟合线
plt.title('Linear Regression')  # 添加标题
plt.xlabel('Sepal Length')  # 添加 x 轴标签
plt.ylabel('Petal Length')  # 添加 y 轴标签
plt.show()  # 显示图形

这将给出以下输出:

Linear Regression

结论

线性回归是一种用于预测和了解变量之间关系的强大技术。 OLS 摘要提供了许多有关模型性能和因变量的特征重要性的信息。 我们还可以使用可视化技术来更好地理解我们的模型。