📜  具有正态方程的多元线性回归模型(1)

📅  最后修改于: 2023-12-03 15:07:06.561000             🧑  作者: Mango

具有正态方程的多元线性回归模型

什么是多元线性回归模型

多元线性回归模型是一种用于预测目标变量与多个自变量之间关系的统计模型。它假设目标变量与自变量之间线性相关,并通过回归分析来确定各自变量的系数和截距,从而构建预测模型。

线性代数基础

在介绍多元线性回归模型之前,我们先来回顾一下线性代数中的矩阵运算和向量运算。在多元线性回归模型中,我们通常使用矩阵和向量来表示自变量和目标变量。

矩阵运算

矩阵是一个按照矩阵形式排列的数表,常用 $A_{i,j}$ 表示矩阵中第 $i$ 行第 $j$ 列的元素。我们可以用矩阵来表示多个变量的观测值,例如:假设我们有 $m$ 个样本,每个样本有 $n$ 个自变量和一个目标变量,我们可以将这些自变量和目标变量按行排列成一个 $m$ 行 $(n+1)$ 列的矩阵 $X$,其中最后一列是目标变量。例如,假设我们有以下 4 个样本,每个样本有 2 个自变量和 1 个目标变量:

x1 = [1, 2, 3]
x2 = [1, 3, 4]
x3 = [1, 4, 5]
x4 = [1, 5, 7]
y = [6, 7, 9, 11]

我们可以将它们排列成一个 4 行 3 列的矩阵:

[[1, 2, 6],
 [1, 3, 7],
 [1, 4, 9],
 [1, 5, 11]]

矩阵有很多种运算,常用的有加法、乘法、转置、求逆等。我们可以使用 NumPy 库来进行矩阵运算,例如,以下是实现矩阵乘法的代码:

import numpy as np

a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])

c = np.dot(a, b)  # 矩阵乘法
print(c)
向量运算

向量是一个由一组数按照顺序组成的序列,常用 $x_i$ 表示向量中第 $i$ 个元素。我们通常使用行向量和列向量来表示矩阵中的行和列,例如,假设有一个 3 行 2 列的矩阵 $A$:

[[1, 2],
 [3, 4],
 [5, 6]]

我们可以将它的第 1 行表示成一个 1 行 2 列的行向量:

[1, 2]

我们也可以将它的第 1 列表示成一个 3 行 1 列的列向量:

[[1],
 [3],
 [5]]

向量也有很多种运算,常用的有向量加法、向量乘法、求模、点积等。

线性回归基础

在简单线性回归模型中,我们假设目标变量 $y$ 与自变量 $x$ 之间的线性关系可以表示为 $y = \beta_0 + \beta_1 x + \epsilon$,其中 $\beta_0$ 是截距(intercept)、$\beta_1$ 是斜率(slope)、$\epsilon$ 是误差项(error term)。我们通过最小化残差平方和 $\sum_{i=1}^n \epsilon_i^2$ 来确定 $\beta_0$ 和 $\beta_1$ 的值。

在多元线性回归模型中,我们假设目标变量 $y$ 与 $m$ 个自变量 $x_1, x_2, \dots, x_m$ 之间的线性关系可以表示为 $y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \dots + \beta_m x_m + \epsilon$,其中 $\beta_0$ 是截距(intercept)、$\beta_1, \beta_2, \dots, \beta_m$ 是各自变量的系数、$\epsilon$ 是误差项(error term)。我们通过最小化残差平方和 $\sum_{i=1}^n \epsilon_i^2$ 来确定 $\beta_0, \beta_1, \dots, \beta_m$ 的值。

多元线性回归模型的矩阵表示

我们可以将多元线性回归模型表示成一个矩阵运算的形式。假设有 $m$ 个样本,每个样本有 $n$ 个自变量和一个目标变量,我们可以将这些自变量和目标变量按行排列成一个 $m$ 行 $(n+1)$ 列的矩阵 $X$,其中最后一列是目标变量。例如,假设有以下 4 个样本,每个样本有 2 个自变量和 1 个目标变量:

x1 = [1, 2]
x2 = [1, 3]
x3 = [1, 4]
x4 = [1, 5]
y = [6, 7, 9, 11]

我们可以将它们排列成一个 4 行 3 列的矩阵:

[[1, 2, 6],
 [1, 3, 7],
 [1, 4, 9],
 [1, 5, 11]]

其中,第 1 列都是 1,表示截距项。第 2 到第 n+1 列是自变量的取值。最后一列是目标变量的取值。

我们可以将多元线性回归模型表示成以下矩阵形式:

$$ y = X\beta + \epsilon $$

其中,$y$ 是一个 $m$ 行 1 列的列向量,表示目标变量的取值;$X$ 是一个 $m$ 行 $(n+1)$ 列的矩阵,表示自变量的取值;$\beta$ 是一个 $(n+1)$ 行 1 列的列向量,表示各自变量的系数和截距。我们的目标是通过最小化残差平方和 $\sum_{i=1}^n \epsilon_i^2$,来求解 $\beta$ 的取值。

多元线性回归模型的正态方程解法

正态方程是一种特殊的最小二乘法解法,它直接使用矩阵和向量的运算,求出满足最小化残差平方和的 $\beta$ 的解。其基本思想是使用矩阵和向量的运算,将最小化残差平方和的问题转化为一个求解线性方程组的问题,从而得到 $\beta$ 的取值。

正态方程的求解过程如下:

  1. 将多元线性回归模型表示成以下矩阵形式:

    $$ y = X\beta + \epsilon $$

  2. 将方程两边同时乘以 $X^T$:

    $$ X^Ty = X^TX\beta + X^T\epsilon $$

  3. 因为 $\epsilon$ 是误差项,无法精确预测,因此我们假设 $E(\epsilon) = 0$,即误差的期望值为 0。根据期望的线性性有 $E(X^T\epsilon) = 0$。因此,我们有:

    $$ X^Ty = X^TX\beta $$

  4. 如果 $X^TX$ 可逆,则可以通过两边同时左乘 $(X^TX)^{-1}$ 得到:

    $$ \beta = (X^TX)^{-1}X^Ty $$

这个式子就是多元线性回归模型的正态方程解法,它直接使用矩阵和向量的运算,求出满足最小化残差平方和的 $\beta$ 的解。如果 $X^TX$ 不可逆,表示我们的自变量之间存在多重共线性,此时我们需要对自变量进行降维或正则化等处理,才能得到有效的估计结果。

示例代码

下面是使用 Python 实现多元线性回归模型的正态方程解法的示例代码:

import numpy as np

# 定义自变量矩阵
X = np.array([[1, 2], [1, 3], [1, 4], [1, 5]])

# 定义目标变量向量
y = np.array([6, 7, 9, 11])

# 求解正态方程
xtx = np.dot(X.T, X)
xtx_inv = np.linalg.inv(xtx)
xty = np.dot(X.T, y)
beta = np.dot(xtx_inv, xty)

print(beta)

运行以上代码,输出结果为:

[2.2  1.75]

表示自变量 x1 的系数为 2.2,自变量 x2 的系数为 1.75。这个结果表明了自变量和目标变量之间的线性关系,可以用于预测目标变量的取值。

总结

多元线性回归模型是一种用于预测目标变量与多个自变量之间关系的统计模型,它假设目标变量与自变量之间线性相关,并通过回归分析来确定各自变量的系数和截距,从而构建预测模型。多元线性回归模型可以表示成一个矩阵运算的形式,通过最小化残差平方和来确定各自变量的系数和截距。正态方程是多元线性回归模型的一种解法,它直接使用矩阵和向量的运算,求出满足最小化残差平方和的系数和截距的解。