Bootstrap

多元线性回归


线性回归是一种统计学方法,用于建模和分析两个变量之间的关系:一个因变量和一个或多个自变量。线性回归模型的目的是找到最佳拟合直线(在二维空间中)或超平面(在多维空间中),这条直线(或超平面)可以用来预测输出值。

1.一些基本概念

1.1基本概念

  1. 因变量(响应变量):你想要预测或估计的变量。
  2. 自变量(解释变量):用来预测因变量的变量。
  3. 线性关系:假设因变量和自变量之间存在线性关系。

1.2线性回归模型的形式

线性回归模型基本形式
y=β0​+β1​x1​+β2​x2​+…+βn​xn​+ϵ
其中:

  • 𝑦y 是因变量。
  • 𝑥1,𝑥2,…,𝑥𝑛x1​,x2​,…,xn​ 是自变量。
  • 𝛽0β0​ 是截距项。
  • 𝛽1,𝛽2,…,𝛽𝑛β1​,β2​,…,βn​ 是系数,表示自变量对因变量的影响。
  • 𝜖ϵ 是误差项,表示模型未能解释的变异性。

1.3模型参数的估计

参数 𝛽0,𝛽1,…,𝛽𝑛β0​,β1​,…,βn​ 通常通过最小化误差项的平方和来估计,这个过程称为最小二乘法。

1.4线性回归的类型

  1. 简单线性回归:只有一个自变量。
  2. 多元线性回归:有两个或更多自变量。

1.5线性回归的假设

  1. 线性关系:自变量和因变量之间存在线性关系。
  2. 独立性:自变量之间相互独立。
  3. 同方差性:误差项具有恒定的方差。
  4. 正态分布:误差项服从正态分布。

2.一元线性回归模型

2.1一元线性回归模型表示形式

一元线性回归是线性回归的一种形式,它只涉及一个自变量和一个因变量。这种模型的目的是找到一条直线,这条直线能够最好地拟合数据点,从而可以用于预测因变量的值。
一元线性回归模型可以表示为

𝑦=𝛽0+𝛽1𝑥+𝜖y=β0​+β1​x+ϵ

2.2代码实现(python)

import numpy as np
from sklearn.linear_model import LinearRegression

# 假设有一些数据
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([2, 4, 5, 4, 5])

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X, y)

# 获取截距和斜率
intercept = model.intercept_
slope = model.coef_[0]

print("截距:", intercept)
print("斜率:", slope)

# 预测
X_new = np.array([[6]])
y_pred = model.predict(X_new)

print("预测结果:", y_pred)

3.多元线性回归

3.1多元线性回归模型表示形式

多元线性回归是线性回归的一种扩展,它允许多个自变量(解释变量)来预测一个因变量(响应变量)。这种模型可以处理更复杂的数据关系,并且可以用于评估多个因素如何共同影响结果。
多元线性回归模型可以表示为

y=β0​+β1​x1​+β2​x2​+…+βn​xn​+ϵ

3.2代码实现(python)

import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score, mean_squared_error

# 假设有一些数据
X = np.array([[1, 1], [2, 2], [3, 3], [4, 4], [5, 5]])
y = np.array([2, 4, 5, 4, 5])

# 添加截距项
X = np.hstack([np.ones((X.shape[0], 1)), X])

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()

# 训练模型
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)

# 评估模型
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)

print("R-squared:", r2)
print("Mean Squared Error:", mse)

# 获取截距和系数
intercept = model.intercept_
coefficients = model.coef_

print("截距:", intercept)
print("系数:", coefficients)

;