引言
回归分析是统计学中的一种重要方法,用于预测或解释变量之间的关系。它广泛应用于经济学、医学、工程学等领域。为了更好地理解和掌握回归分析,以下是一些实战练习题及其解答,旨在帮助读者深入理解回归分析的理论和实践。
实战练习一:简单线性回归
题目
假设我们有以下数据集,其中 x 代表自变量,y 代表因变量:
| x | y |
|---|---|
| 1 | 2 |
| 2 | 4 |
| 3 | 5 |
| 4 | 4 |
| 5 | 5 |
请使用最小二乘法建立 y 对 x 的线性回归模型,并预测当 x=6 时的 y 值。
解答
- 计算斜率(β)和截距(α)
斜率公式:β = Σ[(xi - x̄)(yi - ȳ)] / Σ[(xi - x̄)²] 截距公式:α = ȳ - βx̄
其中,x̄ 和 ȳ 分别为 x 和 y 的平均值。
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 5, 4, 5])
x_mean = np.mean(x)
y_mean = np.mean(y)
slope = np.sum((x - x_mean) * (y - y_mean)) / np.sum((x - x_mean) ** 2)
intercept = y_mean - slope * x_mean
slope, intercept
- 预测
x=6时的y值
x_predict = 6
y_predict = slope * x_predict + intercept
y_predict
运行以上代码,可得斜率约为 0.5,截距约为 1.5。当 x=6 时,预测的 y 值约为 6。
实战练习二:多元线性回归
题目
假设我们有以下数据集,其中 x1 和 x2 代表自变量,y 代表因变量:
| x1 | x2 | y |
|---|---|---|
| 1 | 2 | 3 |
| 2 | 3 | 4 |
| 3 | 4 | 5 |
| 4 | 5 | 6 |
| 5 | 6 | 7 |
请使用最小二乘法建立 y 对 x1 和 x2 的多元线性回归模型,并预测当 x1=3、x2=5 时的 y 值。
解答
- 计算系数
对于多元线性回归,我们需要计算每个自变量的系数(βi)。
def calculate_coefficients(X, y):
X_transpose = np.transpose(X)
XTX_inv = np.linalg.inv(np.dot(X_transpose, X))
coefficients = np.dot(XTX_inv, X_transpose, y)
return coefficients
X = np.array([[1, 2], [2, 3], [3, 4], [4, 5], [5, 6]])
y = np.array([3, 4, 5, 6, 7])
coefficients = calculate_coefficients(X, y)
coefficients
运行以上代码,可得系数数组 [1.0, 1.0],表示 y 与 x1 和 x2 的关系相同。
- 预测
x1=3、x2=5时的y值
x_predict = np.array([3, 5])
y_predict = np.dot(x_predict, coefficients)
y_predict
运行以上代码,可得预测的 y 值约为 7。
实战练习三:非线性回归
题目
假设我们有以下数据集,其中 x 代表自变量,y 代表因变量:
| x | y |
|---|---|
| 1 | 2 |
| 2 | 4 |
| 3 | 8 |
| 4 | 16 |
| 5 | 32 |
请使用非线性回归方法建立 y 对 x 的模型,并预测当 x=6 时的 y 值。
解答
- 选择非线性模型
由于数据呈现指数增长趋势,我们可以选择指数模型:y = a * e^(b * x)。
- 使用非线性最小二乘法求解参数
from scipy.optimize import curve_fit
def exponential_model(x, a, b):
return a * np.exp(b * x)
x_data = np.array([1, 2, 3, 4, 5])
y_data = np.array([2, 4, 8, 16, 32])
popt, _ = curve_fit(exponential_model, x_data, y_data)
popt
运行以上代码,可得模型参数 [0.25, 1.0]。
- 预测
x=6时的y值
x_predict = 6
y_predict = exponential_model(x_predict, *popt)
y_predict
运行以上代码,可得预测的 y 值约为 64。
总结
通过以上实战练习,我们深入了解了回归分析在简单线性回归、多元线性回归和非线性回归中的应用。这些练习题可以帮助读者更好地理解和掌握回归分析的理论和实践。在实际应用中,选择合适的回归模型和参数求解方法至关重要。希望本文能对读者有所帮助。
