回归分析:多元线性回归模型 白话解析与案例实现

线性学习

回归分析是研究自变量x与因变量y的关系的方法。
上一节我们介绍了一元线性回归,经验公式为:

$ \hat{y}=\hat{\beta}1 x+\hat{\beta}0 $

在实际生活中,我们要研究的因变量y可以同时受多个自变量的影响,比如一个地区的用电量y,同时与人口数x1,天气文档x2有关;股票价格y,与成交量x1、股东数量x2、市值x3等多个变量有关。

多元线性回归模型

如果涉及多个自变量的关系,可以用多元线性方程来表示:

y = a x 1 + b x 2 + . . . + z y=ax1+bx2+...+z y=ax1+bx2+...+z

经过统计学估计后,同样可以得到经验回归方程:

$ \hat{y}=\hat{\beta}1 x1+\hat{\beta}2 x2+\hat{\beta}3 x3+…+\hat{\beta}0 $

为了方便书写,通常用矩阵$ \hat{\beta}$的转置与变量X矩阵的相乘去表示:

$ \hat{y}=\hat{\beta}^T X$

借用一个手写图片:

在这里插入图片描述

多元线性回归模型的python实现

我们以方程y=x1+0.5x2+0.5为依据,加入噪声,生成了100个随机样本,经过估计得到多元线性回归模型参数如下

  • 回归方程的斜率为: [[0.99915343 0.49771742]]
  • 回归方程的截距为: [0.50248829]
  • 回归方程为:y = 0.9991534305437673x1 +0.4977174222422542x1 + 0.5024882887129338

在这里插入图片描述

## 多元线性回归
import numpy as np
import pandas as pd
import  matplotlib.pyplot as plt #类似 MATLAB 中绘图函数的相关函数
## 绘制三维散点图
from mpl_toolkits.mplot3d import Axes3D
np.random.seed(1)
count=100
data=[]
for i in range(count):
    x1=np.random.normal(0.00,0.55)
    x2=np.random.normal(0.00,0.55)
    y1=x1+x2*0.5+0.5+np.random.normal(0.00,0.02)
    data.append([x1,x2,y1])

data =pd.DataFrame(data)
# print(data[:,:2])
x_data=np.array(data.iloc[:,:2])

x1_data=np.array(data[0])
x2_data=np.array(data[1])
y_data=np.array(data[2])


fig = plt.figure()
ax = fig.gca(projection="3d")

ax.scatter(x1_data,x2_data, zs=y_data, zdir="z", c="#00DDAA", marker="o", s=40)
ax.set(xlabel="X", ylabel="Y", zlabel="Z")
plt.show()

from sklearn.linear_model import LinearRegression
regr = LinearRegression()

x_data=x_data
y_data=y_data.reshape(-1,1)
#拟合方程
regr.fit(x_data,y_data)

t =regr.coef_
print('回归方程的斜率为:', regr.coef_)
print('回归方程的截距为:', regr.intercept_)
print('回归方程为:y = {}*x1 +{}*x2 +  {}'.format(t[0][0],t[0][1],regr.intercept_[0]))
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值