数据分析 | 多元线性回归
多元线性回归模型
- 一、相关关系
- 01 相关分析
- 二、一元线性回归模型
- 01 简介
- 02 代码实现
- 三、多元线性回归模型
- 01 模型参数求解
- 02 代码实现
一、相关关系
相关关系是客观现象存在的一种非确定的相互依存关系,即自变量的每一个取值,因变量由于受随机因素影响,与其所对应的数值是非确定性的。相关分析中的自变量和因变量没有严格的区别,可以互换。
01 相关分析
相关系数计算公式:
ρ=Σ(Xi−Xˉ)(Yi−Yˉ)Σ(Xi−Xˉ)2(Yi−Yˉ)2\rho = \frac{\Sigma(X_i-\bar X)(Y_i-\bar Y)}{\sqrt{\Sigma(X_i-\bar X)^2(Y_i-\bar Y)^2}} ρ=Σ(Xi−Xˉ)2(Yi−Yˉ)2Σ(Xi−Xˉ)(Yi−Yˉ)
其中:
∣ρ∣≥0.8,高度相关0.5≤∣ρ∣<0.8,中度相关0.3≤∣ρ∣<0.5,弱相关∣ρ∣<0.3,几乎不相关|\rho|\geq 0.8 ,高度相关\\ 0.5\leq|\rho|<0.8,中度相关\\ 0.3\leq|\rho|<0.5,弱相关\\ |\rho|<0.3,几乎不相关 ∣ρ∣≥0.8,高度相关0.5≤∣ρ∣<0.8,中度相关0.3≤∣ρ∣<0.5,弱相关∣ρ∣<0.3,几乎不相关
注意:不相关的意思是不存在线性关系!
相关系数代码实现:
income = pd.read_csv(r'Salary_Data.csv', engine='python')
income.Salary.corr(income.YearExperience)
获得Salary与YearExperience之间的相关系数。
Profit.drop('State', axis=1).corrwith(Profit['Profit'])
去除Profit数据集中的State分类型变量,然后获取Profit变量与其他变量之间的相关系数。
二、一元线性回归模型
01 简介
一元线性回归分析预测法,是根据自变量x和因变量Y的相关关系,建立x与Y的线性回归方程进行预测的方法。由于市场现象一般是受多种因素的影响,而并不是仅仅受一个因素的影响。所以应用一元线性回归分析预测法,必须对影响市场现象的多种因素做全面分析。只有当诸多的影响因素中,确实存在一个对因变量影响作用明显高于其他因素的变量,才能将它作为自变量,应用一元相关回归分析市场预测法进行预测 。
一元线性回归分析法的预测模型为:
Yt=axt+bY_t = ax_t+b Yt=axt+b
式中,x**t代表t期自变量的值;
YtY_tYt代表t期因变量的值;
a、b代表一元线性回归方程的参数。
a、b参数由下列公式求得(用代表):
b=ΣYin−aΣxin;b=\frac{\Sigma Y_i}{n}-a\frac{\Sigma x_i}{n}; b=nΣYi−anΣxi;
a=nΣxiYi−ΣxiΣYinΣxi2−(Σxi)2a=\frac{n\Sigma x_iY_i-\Sigma x_i\Sigma Y_i}{n\Sigma x_i^2-(\Sigma x_i)^2} a=nΣxi2−(Σxi)2nΣxiYi−ΣxiΣYi
02 代码实现
导入第三方库:import statsmodel.api as sm
sm.ols(formula, data, subset=None, drop_cols=None)
- formula:以字符串的形式指定线性回归模型的公式,如’y~x’就表示简单线性回归模型
- data:指定建模的数据集
- subset:通过bool类型的数组对象,获取data的子集用于建模
- drop_cols:指定需要从data中删除的变量
import pandas as pd
import statsmodels.api as smincome = pd.read_csv(r'Salary_Data.csv', engine='python')# 利用收入数据集,构建回归函数
fit = sm.formula.ols('Salary ~ YearsExperience', data = income).fit()
# 返回模型的参数值
fit.params
得到结果:
Intercept 25792.200199
YearsExperience 9449.962321
dtype: float64
即结果为:Salary = 25792.200199 + 9449.962321YearsExperience
三、多元线性回归模型
对于一元线性回归来说,其反映的是单个自变量对因变量的影响,而当自变量不只一个时,则需要将一元线性回归模型扩展到多元线性回归模型。
y={y1y2⋮yn,X={x11x12⋯x1px21x22⋯x2p⋮xn1xn2⋯xnpy=\begin{cases}y_1\\y_2\\\vdots\\y_n\end{cases},\,X=\begin{cases}x_{11}\,\,x_{12}\,\,\cdots\,\,x_{1p}\\x_{21}\,\,x_{22}\,\,\cdots\,\,x_{2p}\\\,\,\,\vdots\\x_{n1}\,\,x_{n2}\,\,\cdots\,\,x_{np}\end{cases} y=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧y1y2⋮yn,X=⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧x11x12⋯x1px21x22⋯x2p⋮xn1xn2⋯xnp
其中,xijx_{ij}xij表示第i行第j列的变量值,多元线性回归模型即为因变量y 与自变量X的线性组合,即:
y=β0+β1x1+β2x2+⋯+βpxp+ϵy\,=\,\beta_0+\beta_1x_1+\beta_2x_2+\cdots+\beta_px_p+\epsilon y=β0+β1x1+β2x2+⋯+βpxp+ϵ
化为矩阵形式即为:y=Xβ+ϵy\,=\,X\beta\,+\,\epsilony=Xβ+ϵ
01 模型参数求解
构造目标函数:
J(β)=Σϵ2=Σ(y−Xβ)2J(\beta)=\Sigma\epsilon^2=\Sigma(y-X\beta)^2 J(β)=Σϵ2=Σ(y−Xβ)2
展开平方项:
J(β)=(y−Xβ)′(y−Xβ)=(yy′−y′Xβ−β′X′y+β′X′Xβ)J(\beta)=(y-X\beta)'(y-X\beta)=(yy'-y'X\beta-\beta'X'y+\beta 'X'X\beta) J(β)=(y−Xβ)′(y−Xβ)=(yy′−y′Xβ−β′X′y+β′X′Xβ)
求偏导:
∂J(β)∂β=(0−X′y−X′y+2XX′β)=0\frac{\partial\,J(\beta)}{\partial\beta}=(0-X'y-X'y+2XX'\beta)=0 ∂β∂J(β)=(0−X′y−X′y+2XX′β)=0
计算偏回归系数:
β=(X′X)−1X′y\beta=(X'X)^{-1}X'y β=(X′X)−1X′y
02 代码实现
# 多元线性回归模型的预测
from sklearn import model_selection# 导入数据
Profit = pd.read_excel(r'Predict to Profit.xlsx')# 将数据区分为训练集和测试集
train,test = model_selection.train_test_split(Profit, test_size = 0.2, random_state = 1234)
# 根据train数据集建模
model = sm.formula.ols('Profit~RD_Spend+Administration+Marketing_Spend+C(State)', data = train).fit()print('模型的偏回归系数分别为:\n', model.params)
# 删除test数据集中的Profit变量,用剩下的自变量进行预测
test_X = test.drop(labels = 'Profit', axis = 1)
pred = model.predict(exog = test_X)print('对比预测值与实际值的差异:\n', pd.DataFrame({'Prediction':pred,'Real':test.Profit}))
结果为:
模型的偏回归系数分别为:Intercept 58581.516503
C(State)[T.Florida] 927.394424
C(State)[T.New York] -513.468310
RD_Spend 0.803487
Administration -0.057792
Marketing_Spend 0.013779
dtype: float64
对比预测值与实际值的差异:Prediction Real
8 150621.345801 152211.77
48 55513.218079 35673.41
14 150369.022458 132602.65
42 74057.015562 71498.49
29 103413.378282 101004.64
44 67844.850378 65200.33
4 173454.059691 166187.94
31 99580.888894 97483.56
13 128147.138396 134307.35
18 130693.433835 124266.90
注意:State为离散分类型变量,需要前加C。对于分类变量,由于其不是数值无法直接计算,需要:
如果分类变量只有两个水平(例如性别,男和女),我们只需要定义一个虚拟变量就可以了,用0表示男,用1表示女。当一个分类变量超过两个水平时,我们必须在定义虚拟变量和解释虚拟变量两方面谨慎从事。重点是要牢记:在多元回归分析中,如果一个分类变量有k个水平,那么需要在多元回归分析中定义k-1个虚拟变量。
当然,在分类变量多于两个水平时,也可以人为的丢弃,如下:
# 生成由State变量衍生出的哑变量
dummies = pd.get_dummies(Profit.State)
# 将哑变量与原始数据集水平合并
Profit_New = pd.concat([Profit,dummies], axis = 1)
# 删除State和Califonia变量(因为State变量已经被分解为哑变量,New York变量需要作为参照组)
Profit_New.drop(labels = ['State','New York'], axis = 1, inplace = True)
# 拆分数据集Profit_New
train,test = model_selection.train_test_split(Profit_New, test_size = 0.2, random_state = 1234)
# 建模
model2 = sm.formula.ols('Profit~RD_Spend+Administration+Marketing_Spend+Florida+California', data=train).fit()
print("模型的偏回归系数分别为:\n", model2.params)
结果为:
模型的偏回归系数分别为:Intercept 58068.048193
RD_Spend 0.803487
Administration -0.057792
Marketing_Spend 0.013779
Florida 1440.862734
California 513.468310
dtype: float64
Profit = 0.803487RD_Spend - 0.057792Administration + 0.013779Marketing_Spend + 1140.862734Florida + 513.468310Califonia
数据分析 | 多元线性回归相关推荐
- Python数据分析案例-利用多元线性回归与随机森林回归算法预测笔记本新品价格
1.前言 目的: 本文通过多元线性回归与随机森林算法预测笔记本新品的发售价 工具: 语言:Python 3.8 软件:Jupyter Notebook 库:pandas.numpy.matplotli ...
- 数据分析记录(六)--多元线性回归在SPSS中的实现(步骤及指标含义)
数据分析记录(六)–多元线性回归在SPSS中的实现(步骤及指标含义) 本文仅作为自己的学习记录以备以后复习查阅 在回归分析中,如果有两个或两个以上的自变量,就称为多元回归.事实上,一种现象常常是与多个 ...
- 基于多元线性回归的Boston房价数据分析
Boston房价数据是R语言中一类重要的数据,常被用来做各种方法分析,即它是波士顿不同地区的506个家庭住房信息,其中包括影响房价的14个因素如城镇的人均犯罪率.氮氧化合物浓度.城镇黑人的比例.低教育 ...
- 大数据分析机器学习(二)之直方图和多元线性回归
上一次的文章一元线性回归 数据例子 以下是一个plt画出房子,人口,年龄等数据的直方图,为什么要画直方图呢?因为直方图本身是一种统计数据,比如年龄为45的总共有几个,年龄为30的总共有几个,学会画直方 ...
- python多元线性回归实例_利用Python进行数据分析之多元线性回归案例
线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量).例如,餐厅根据每天的营业数据(包括菜谱价格.就餐人数.预定人数.特价菜折扣等)预测就餐规 ...
- python多元非线性回归_利用Python进行数据分析之多元线性回归案例
线性回归模型属于经典的统计学模型,该模型的应用场景是根据已知的变量(自变量)来预测某个连续的数值变量(因变量).例如,餐厅根据每天的营业数据(包括菜谱价格.就餐人数.预定人数.特价菜折扣等)预测就餐规 ...
- 小福利,带你快速了解数据分析之一元线性回归模型和多元线性回归模型
大家好,我是天空之城,今天给大家带来小福利,带你快速了解一元线性回归方程模拟和多元线性回归方程模拟 主要用来进行数据的相关性分析 之前在研究生阶段用过一个叫origin的数据处理软件,只要是科研数据都 ...
- 南航数据分析与挖掘课设1(上)——基于多元线性回归模型,ARIMA序列的中国GDP增长影响因素研究及预测(R语言)
基于多元线性回归模型,ARIMA序列的中国GDP增长影响因素研究及预测 摘要 在国民经济发展的过程中,国内生产总值(GDP)是指按国家市场价格计算的一个国家(或地区)所有常驻单位在一定时期内生产活动的 ...
- 线性回归 - 多元线性回归案例 - 分析步骤、输出结果详解、与Python的结果对比 -(SPSS建模)
现在用 Python 写线性回归的博客都快烂大街了,为什么还要用 SPSS 做线性回归呢?这就来说说 SPSS 存在的原因吧. SPSS 是一个很强大的软件,不用编程,不用调参,点巴两下就出结果了,而 ...
- 线性回归(二)---多元线性回归
多元线性回归 一个因变量依赖两个或两个以上自变量变化而变化的回归模型称为多元线性回归● 一元线性回归: y(x)=theta0 + theta1* x 1● 多元线性回归: y(x)=theta0 + ...
最新文章
- python3语音识别模块_语音识别(LSTM+CTC)
- 程序安装包制作工具 v1.0官方版
- java建造_java建造者模式
- yolov5的3.0版本代码在训练的时候报错:ImportError: cannot import name ‘amp‘ from ‘torch.cuda‘ 以及yolov5的3.0环境安装
- 李宏毅线性代数笔记9:对角化
- uos系统断网怎么安装mysql_[学习笔记] UOS安装MySQL
- mysql提权_mysql提权总结
- Java 7:如何编写非常快速的Java代码
- Delphi7调用dll(图文教程)2021最新
- 【致远FAQ】致远OA启动不起来了(下集)
- 除了赚钱,腾讯游戏还有诗和远方!
- 云服务优缺点_云服务器优点和缺点详细介绍
- php cnzz api demo,PHP curl抓取cnzz统计数据
- Win10完全卸载MySQL
- Hbase——常见错误
- Android 如何通过menu id来得到menu item 控件
- 南开大学20秋c语言程序设计,[南开大学]20秋学期《C语言程序设计》在线作业-2...
- 微型计算机原理与接口技术ppt,单片机原理与接口技术课件ppt
- SOLIDWORKS Simulation可用做有限元分析,你还不知道?
- ES 常用查询命令汇总
热门文章
- Linux挂载硬盘(容量大于2T)
- opencv读取海康威视摄像头
- Mybatis(1)----------简介及第一开发程序
- windows系统C盘扩容详解
- linux mint怎么切换输入法,Linux Mint安装ibus五笔和拼音输入法简明教程(示例代码)...
- linux下如何给home目录分配空间,Linux 分配/home的磁盘空间给根目录
- git生成sshkey 并添加SSH key
- 小白linux学习[1]__虚拟机NAT方式共享电信拨号上网
- el-upload 上传 照片墙上传照片,上传一张之后,上传框就消失
- 关于安装软件时x86 ,x64,x86_64,ARM 64, ARM 32 的选择