回归分析(三)—— 多元线性回归
三、多元线性回归
在实际经济问题中,一个变量往往受到多个变量的影响。例如,家庭消费支出,除了受家庭可支配收入的影响外,还受诸如家庭所有的财富、物价水平、金融机构存款利息等多种因素的影响。也就是说,一个因变量和多个自变量有依存关系,而且有时几个影响因素主次难以区分,或者有的因素虽属次要,但也不能忽略。这时采用一元回归分析进行预测难以奏效,需要多元回归分析。
多元线性回归模型
多元回归分析是指通过对两个或两个以上的自变量与一个因变量的相关分析,建立预测模型进行预测的方法。当自变量与因变量之间存在线性关系时称为多元线性回归分析。
建立多元线性回归模型时,为了保证回归模型具有优良的解释能力和预测效果,应首先注意自变量的选择,其准则是:
(1)自变量对因变量必须有显著的影响,并呈密切的线性相关;
(2)自变量与因变量之间的线性相关必须是真实的,而不是形式上的;
(3)自变量之间应具有一定的互斥性,即自变量之间的相关程度不应高于自变量与因变量之间的相关程度;
(4)自变量应具有完整的统计数据,其预测值容易确定。
多元线性回归模型的参数估计
多元线性回归的假设检验及其评价
1.将回归方程中所有变量作为一个整体来检验它们与因变量之间是否具有线性关系(方差分析法、复相关系数);
2.对回归方程的预测或解释能力做出综合评价(决定系数);
3.在此基础上进一步对各个变量的重要性作为评价(偏回归平方和、t检验和标准回归系数)。
多元线性回归的Python实现
(1)导入数据集
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
d = datasets.load_boston()
data = pd.DataFrame(d.data)
data['price'] = d.target
data.sample(5)
(2)多元线性回归建模
from sklearn.linear_model import LinearRegression
simple2 = LinearRegression()
from sklearn.model_selection import train_test_split
x = d.data # 样本的特征值
y = d.target # 样本的目标值
x_train,x_test,y_train,y_test = train_test_split(x,y,random_state=666)
simple2.fit(x_train,y_train)
print('多元线性回归模型系数:\n',simple2.coef_)
print('多元线性回归模型常数项:',simple2.intercept_)
y_predict = simple2.predict(x_test)
# 多元线性回归模型系数:
# [-7.18193450e-02 5.30929833e-02 8.89401987e-02 2.58828338e+00
# -1.68736702e+01 4.16057016e+00 1.12240087e-02 -1.39942513e+00
# 3.12802694e-01 -1.48923405e-02 -9.90156198e-01 1.30697538e-02
# -5.27263444e-01]
# 多元线性回归模型常数项: 32.26723715046194
(3)模型分析
# sklearn.metrics 评价指标
from sklearn.metrics import mean_absolute_error # 平均绝对误差
from sklearn.metrics import mean_squared_error # 均方误差损失
from sklearn.metrics import r2_score # 回归模型评价指标R2_score
print('预测值的均值误差:',mean_squared_error(y_test,y_predict))
print(r2_score(y_test,y_predict))
print(simple2.score(x_test,y_predict))
print('各特征间的系数矩阵:\n',simple2.coef_)
print('影响房价的特征排序:\n',np.argsort(simple2.coef_))
print('影响房价的特征排序:\n',d.feature_names[np.argsort(simple2.coef_)])
# 预测值的均值误差: 24.995009571399635
# 0.6499762439230528
# 1.0
# 各特征间的系数矩阵:
# [-7.18193450e-02 5.30929833e-02 8.89401987e-02 2.58828338e+00
# -1.68736702e+01 4.16057016e+00 1.12240087e-02 -1.39942513e+00
# 3.12802694e-01 -1.48923405e-02 -9.90156198e-01 1.30697538e-02
# -5.27263444e-01]
# 影响房价的特征排序:
# [ 4 7 10 12 0 9 6 11 1 2 8 3 5]
# 影响房价的特征排序:
# ['NOX' 'DIS' 'PTRATIO' 'LSTAT' 'CRIM' 'TAX' 'AGE' 'B' 'ZN' 'INDUS' 'RAD'
# 'CHAS' 'RM']