线性回归:衡量两个变量之间线性关系的一种建模技术
一元线性模型:y = α + βx + ε, 其中ε 是均值为0,方差为固定常数,满足正态分布,与自变量x相互独立的白噪音。β:回归系数,即斜率;α:截距
回归系数的显著性检验
目的是检测自变量对于回归模型是否有必要。
假设: H0:β = 0, H1:β≠0 ; 临界值: Tα/2(n-2)
判断:若 |t| < tα/2, 接受H0,自变量不显著; 若 |t| ≥ tα/2, 拒绝H0,回归系数对方程的影响显著
最小二乘法OLS
使实际值y与估计值yc的离差平方和最小,又称最小平方法。Σ(y - yc)² =min最小值
一元线性回归实例:
import numpy as np
import statsmodels.api as sm
# 线性方程: y = 1 + beta * x + mu
# 模拟数据
nsample = 200 #nsample为样本数量
x = np.linspace(0,10,nsample) # 生成自变量数组x,其值在1-10等差排列
X = sm.add_constant(x) # sm.add_constant是在向量左侧加上一列1
beta = np.array([1,10]) # 设置beta_0,beta_1真值为0,1
mu = np.random.normal(size=nsample) # 生成误差项mu,其值取自标准正态分布
#建立一元线性方程
y = np.dot(X,beta)+mu
# 一元线性方程拟合
model = sm.OLS(y,x)
results = model.fit()
print(results.params)
results.summary()
检验结果为:
在jupyter notebook上实现的结果
将样本数据和拟合数据可视化:
y_fitted = results.fittedvalues # 线性方程拟合的y值
import matplotlib.pyplot as plt
plt.figure(figsize = (12,4)) #设定图片大小
plt.axis((0,2, 0,25)) #设定x和y坐标轴数值,注意为元组形式
plt.plot(x,y, 'o', label = 'data')
plt.plot(x, y_fitted, 'r--.', label = 'OLS')
plt.legend(loc = 'best')
结果如图:
在jupyter notebook上实现的结果
参数和估计值
估计值:通过线性回归估计的参数只是估计值, 非稳定,很可能两次运行得出的参数都不一样
真实参数:知道数据产生的具体过程,可以获得真实参数。但即使是真实参数,也会不断地变化
因此,在使用线性回归时,要关注参数估计的标准误差。
估计标准误:对观测数据在回归直线周围分散程度的一个度量值。观测数据越靠近回归直线,估计标准误越小,对数据的代表性就越好。Syx 是对误差项ε的标准差σ的估计值,越小说明回归模型的代表性越好
滚动数据窗口:了解估计值的稳定性
R square
回归平方和/总离差平方和,r² = SSR/ SST (判定系数是相关系数的平方)
表示总离差平方和可以由回归平方和解释的比例,比例越大,模型越精确
R suqare越接近1,回归拟合效果越好,一般超过0.8的模型拟合优度较高
注意:R方高时会出现过拟合的状况,即该模型过于匹配目前情况,但预测其他情况时不会准确。
拟合优度
回归方程和观测数据的接近程度
拟合的常用指标:coefficient of determination,决定系数、判定系数