多元线性回归模型

我们在使用多元线性回归模型之前需要对变量做以下处理:

1.对因变量进行正态分布检验,若符合则我们才可以使用,不符合则不选择。

2.对自变量进行多重共线性检验,方法很多:

(1)辅助回归模型检验

(2)VIF膨胀系数检验

(3)皮尔逊相关系数,相关系数的攫取,取决于自变量的分布,可用欧式平方距离择最优系数

3.对变量进行T- test、F- test,目的是为了发现两者之前是否有统计学意义,是否有差异,以0.05为界限,若P大于0.05,则在统计学上无意义,但不能不代表无实际意义,比如在某个领域做出0-0.01的变化,人类的一小步,世界的一大步。

4.当变量较多时,我们用T-test的推广,F-test,可以看出多变量对总体的贡献大小。

以下为多元线性回归模型的部分步骤及代码

from sklearn import model_selection
import pandas as pd
import statsmodels.api as sm
import seaborn as sns
from matplotlib import pyplot as plt
from sklearn.preprocessing import MinMaxScaler
import numpy as np
from scipy.stats import f
from scipy import stats
from statsmodels.stats.outliers_influence import variance_inflation_factor

#导入数据
MEDV = pd.read_excel(r'housing.xlsx')
#切分数据集
train, test = model_selection.train_test_split(MEDV, test_size=0.2, random_state= 1234)
#根据train数据集建模
model = sm.formula.ols('MEDV ~ RM + LSTAT + PTRATIO +C(AREA)', data=train).fit()
print('模型的偏回归系数分别为:\n',model.params)


#删除test数据集中的MEDV变量,用剩下的自变量进行预测
test_X = test.drop(labels = 'MEDV' , axis = 1)
pred = model.predict(exog = test_X)
#print('对比预测值和实际值的差异:\n',pd.DataFrame({'Prediction':pred,'True':test.MEDV}))
df_output = pd.DataFrame(columns=['MEDV_true', 'MEDV_pred'])
#df_output['RM'] = df['RM']
#df_output['LSTAT'] = df['LSTAT']
#df_output['PTRATIO'] = df['PTRATIO']
#df_output['x4'] = X_validation['x4']
df_output['MEDV_true'] = test.MEDV
df_output['MEDV_pred'] = pred
df_output.to_excel('MEDV_true_pred.xlsx')


#生成由AREA变量衍生的哑变量
dummies = pd.get_dummies(MEDV.AREA)
#print(dummies)
#将哑变量与原始数据集水平合并
dfile_New = pd.concat([MEDV, dummies], axis=1)
#print('dfile_New:\n',dfile_New)
df2_output = pd.DataFrame(columns=['RM','LSTAT','PTRATIO','AREA','MEDV','beijing','guangzhou','shanghai'])
df2_output['RM'] = dfile_New['RM']
df2_output['LSTAT'] = dfile_New['LSTAT']
df2_output['PTRATIO'] = dfile_New['PTRATIO']
#df_output['x4'] = X_validation['x4']
df2_output['AREA'] = dfile_New['AREA']
df2_output['MEDV'] = dfile_New['MEDV']
df2_output['beijing'] = dfile_New['beijing']
df2_output['guangzhou'] = dfile_New['guangzhou']
df2_output['shanghai'] = dfile_New['shanghai']
df2_output.to_excel('dfile_New.xlsx')

#为了分析相关性需要生成除了AREA的自变量
df4_output = pd.DataFrame(columns=['RM','LSTAT','PTRATIO','MEDV','beijing','guangzhou','shanghai'])
df4_output['RM'] = dfile_New['RM']
df4_output['LSTAT'] = dfile_New['LSTAT']
df4_output['PTRATIO'] = dfile_New['PTRATIO']
df4_out

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一帆1018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值