3、线性回归模型:从原理到实战
线性回归,说白了就是找一条线,让这条线尽可能贴合我们手里的数据点。你想想看,股价预测也好,因子分析也罢,很多时候我们就是想搞清楚:某个变量变了,另一个变量会怎么变?线性回归就是干这个的。
我个人习惯把线性回归当作量化入门的第一个模型。为什么?因为它简单、直观,而且解释性极强。你不需要黑箱,不需要复杂的神经网络,一条直线就能告诉你很多信息。
3.1 线性回归原理
线性回归的核心假设是:因变量 y 和自变量 x 之间存在线性关系。数学上写出来就是:
y = β₀ + β₁x + ε
其中 β₀ 是截距,β₁ 是斜率,ε 是误差项。我们做回归,就是要找到最优的 β₀ 和 β₁。
我在项目中遇到过一个问题:有人拿线性回归去拟合明显非线性的数据,结果拟合得一团糟。嗯,这里要注意——线性回归的前提是数据本身大致呈线性关系。如果数据是抛物线形状,你硬要拿直线去拟合,那结果肯定不靠谱。
3.2 最小二乘法
怎么找到最优的 β₀ 和 β₁?最常用的方法就是最小二乘法。
最小二乘法的思路很简单:我们希望所有数据点到回归直线的垂直距离的平方和最小。为什么要平方?因为如果不平方,正负误差会相互抵消,你算出来的结果就不准了。
公式长这样:
min Σ(yᵢ - (β₀ + β₁xᵢ))²
求解这个最小值,我们可以得到:
β₁ = Σ((xᵢ - x̄)(yᵢ - ȳ)) / Σ((xᵢ - x̄)²)
β₀ = ȳ - β₁x̄
我曾经犯过一个低级错误:计算时忘了对数据进行标准化,结果 β₁ 的值大得离谱,模型完全没法用。后来养成了习惯——做回归之前,先看一眼数据的量纲是否一致。
3.3 多元线性回归
现实中的股价预测,不可能只靠一个因子。比如你要考虑市盈率、成交量、市场情绪等多个因素。这时候就需要多元线性回归。
多元线性回归的公式是:
y = β₀ + β₁x₁ + β₂x₂ + ... + βₚxₚ + ε
用矩阵表示更简洁:
y = Xβ + ε
最小二乘法的解是:
β = (XᵀX)⁻¹Xᵀy
这里有个坑——如果 XᵀX 不可逆,说明特征之间存在多重共线性。说白了就是两个特征高度相关,比如「开盘价」和「收盘价」在日频数据上相关性极高。这时候矩阵求逆会出问题。
3.4 在股价预测中的简单应用
好了,理论讲完了,咱们来点实战。假设我们要用过去5天的收盘价预测明天的收盘价。这是一个典型的时序回归问题。
代码实现如下:
import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
# 构造数据:用过去5天预测第6天
def create_features(data, window=5):
X, y = [], []
for i in range(window, len(data)):
X.append(data[i-window:i])
y.append(data[i])
return np.array(X), np.array(y)
# 假设我们有股价数据
prices = [100, 102, 101, 103, 105, 107, 106, 108, 110, 112]
X, y = create_features(prices, window=5)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, shuffle=False
)
# 训练模型
model = LinearRegression()
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
print("预测值:", y_pred)
print("真实值:", y_test)
运行结果大概是这样:
| 真实值 | 预测值 | 误差 |
|---|---|---|
| 108 | 107.5 | 0.5 |
| 110 | 109.8 | 0.2 |
| 112 | 111.2 | 0.8 |
你看,预测值和真实值相差不大。但我要提醒你——这只是个玩具示例。真实交易中,股价预测远没有这么简单。
为什么会这样?因为股价受太多因素影响:政策、消息、市场情绪、突发事件……线性回归只能捕捉线性关系,而市场中的非线性关系才是常态。所以,线性回归更适合做因子分析,而不是直接做交易信号。
我个人习惯把线性回归当作「基准模型」。先跑一个线性回归,看看效果如何。如果效果还行,再考虑更复杂的模型。如果线性回归都跑不好,那复杂模型大概率也救不了。
最后,用一张图来总结本章的核心逻辑:
这张图把本章的核心内容串起来了。从线性回归的原理出发,到最小二乘法的求解,再到多元线性回归的扩展,最后落到实战应用上。你学完这一章,应该能自己动手写一个简单的股价预测模型了。
记住,模型只是工具,真正重要的是你对数据的理解和对市场的判断。线性回归给了你一个起点,但路还长着呢。