基础铺垫

  • 多重线性回归(Multiple Linear Regression)

    • 研究一个因变量与多个自变量间线性关系的方法

    • 在实际工作中,因变量的变化往往受几个重要因素的影响,此时就需要用2个或2个以上的影响因素作为自变量来解释因变量的变化,这就是多重线性回归;

多重线性回归模型

1.模型

y=α+β1x1+β2x2+...+βnxn+e
数据分析部落公众号:shujudata
方程式中:
y−因变量
xn−第n个自变量
α−常数项(回归直线在y轴上的截距)
βn−第n个偏回归系数
e−随机误差

2.模型关键词解析

  • 偏回归系数

    • 多重线性模型中包含多个自变量,它们同时对因变量y发生作用,如果要考察一个自变量对因变量y的影响,就必须假设其他自变量保持不变;因此,多重线性模型中的回归系数称为偏回归系数,偏回归系数β_1是指在其他自变量保持不变的情况下,自变量x_1每变动一个单位,引起的因变量y的平均变化;β_2到β_n依次类推;

回顾-回归分析步骤

  • 根据预测目标,确定自变量和因变量

  • 绘制散点图,确定回归模型类型

  • 估计模型参数,建立回归模型

  • 对回归模型进行检验

  • 利用回归模型进行预测

案例实操-金融场景

下面,jacky通过一个金融场景的案例,开始我们的分享:某金融公司打算新开一类金融产品,现有9个金融产品的数据,包括用户购买金融产品的综合年化利率,以及公司收取用户的佣金(手续费);如下表所示,产品利率为11%,佣金为50,我们需要预测这款金融产品的销售额

产品编号 百分比利率 抽取用户佣金 金融产品销售额
1 9 75 500
2 7 30 370
3 7 20 375
4 5 30 270
5 6 0 360
6 7 21 379
7 8 50 440
8 6 20 300
9 9 60 510
10 11 50
import pandas
data = pandas.read_csv(
'file:///Users/apple/Desktop/jacky_1.csv',encoding='GBK'
)

第一步 确定变量

  • 根据预测目标,确定自变量和因变量

    • 因变量:销售额

    • 自变量:利率、佣金

第二步 确定类型

  • 绘制散点图,确定回归模型类型

    • 从散点图和相关系数结果表可以看出,产品利率和销售额是强正相关;佣金与销售额是强负相关;因此,我们可以使用多重线性模型来解决这个问题;

我们对自变量和因变量绘制散点图,因为需要绘制多个变量两两之间的散点图,在这里介绍一个更先进的绘图方法scatter_matrix:我们把自变量和因变量从data中选取出来,然后设置好对应的参数。第一个是图片的大小,如果变量太多,我们就要把图片的尺寸设置的足够大才能够展示出来;第二个参数diagonal是变量与变量本身的绘图方式,我们选择kde,是绘制直方图,这个参数是什么意思,我们执行代码就知道了,代码如下:

import matplotlib
from pandas.tools.plotting import scatter_matrix
font = {
'family':'SimHei'
}
matplotlib.rc('font',**font) scatter_matrix(
data[["百分比利率","抽取用户佣金","金融产品销售额"],
figsize =(10,10),diagonal = 'kid'
) data[["百分比利率","抽取用户佣金","金融产品销售额"]].corr()
x = data[["百分比利率","抽取用户佣金"]]
y = data[["金融产品销售额"]]

第三步 建立模型

  • 估计模型参数,建立回归模型

    • 多重线性回归模型参数的估计方法与简单线性回归模型参数的估计方法是相同的:都是采用最小二乘法进行估计(对最小二乘法更详细的解析,请参见Python回归分析五步曲(一)—简单线性回归)
#建模
from sklearn.linear_model import LinearRegression
lrModel = LinearRegression() #训练模型
lrModel.fit(x,y)

第四步 模型检验

  • 对回归模型进行检验

    判定系数=相关系数R2=ESSTSS=1−RSSTSS
调整判定系数=相关系数R¯2=1−RSS/(n−k−1)TSS/(n−1)
其中,数据分析部落公众号(shujudata)
TSS=∑(Yi−Y¯)2总离差平方和
ESS=∑(Yi−Y¯)2回归差平方和
RSS=∑(Yi−Y¯)2残差平方和
n样本个数
k自变量个数
  • jacky解析:拟合完方程的参数之后,我们就要对回归模型进行检验,在简单线性回归的分享中,我们用判定系数来验证方程的拟合程度,而在多重线性回归中,如果在模型中增加一个自变量,模型中R平方往往也会相应增加,这就会给我们一个错觉:要使得模型拟合的好,只要增加自变量即可。因此,使用判定系数R平方来验证方程的拟合程度是不够科学的,需要自变量个数进行修正和调整,也就是调整判定系数;以上,我们只要理解原理即可,公式记不住也不要紧,知道多重线性模型需要用调整判定系数来判定方程的拟合程度,会用Python看结果就可以了。

第五步 模型预测

  • 利用回归模型进行预测

    • 根据已有的自变量数据,预测需要的因变量对应的结果
#预测
lrModel.predict([11,50]) #查看参数
lrModel.coef_ #查看截距
lrModel.intercept_

总结-完整代码

#---author:朱元禄---
import pandas
data = pandas.read_csv(
'file:///Users/apple/Desktop/jacky_1.csv',encoding='GBK'
) import matplotlib
from pandas.tools.plotting import scatter_matrix
font = {
'family':'SimHei'
}
matplotlib.rc('font',**font) scatter_matrix(
data[["百分比利率","抽取用户佣金","金融产品销售额"],
figsize =(10,10),diagonal = 'kid'
) data[["百分比利率","抽取用户佣金","金融产品销售额"]].corr()
x = data[["百分比利率","抽取用户佣金"]]
y = data[["金融产品销售额"]] #建模
from sklearn.linear_model import LinearRegression
lrModel = LinearRegression() #训练模型
lrModel.fit(x,y) #预测
lrModel.predict([11,50]) #查看参数
lrModel.coef_ #查看截距
lrModel.intercept_

Python回归分析五部曲(二)—多重线性回归的更多相关文章

  1. python回归分析五部曲

    Python回归分析五部曲(一)—简单线性回归 https://blog.csdn.net/jacky_zhuyuanlu/article/details/78878405?ref=myread Py ...

  2. Python回归分析五部曲(一)—简单线性回归

    回归最初是遗传学中的一个名词,是由英国生物学家兼统计学家高尔顿首先提出来的,他在研究人类身高的时候发现:高个子回归人类的平均身高,而矮个子则从另一方向回归人类的平均身高: 回归分析整体逻辑 回归分析( ...

  3. Python回归分析五部曲(三)—一元非线性回归

    (一)基础铺垫 一元非线性回归分析(Univariate Nonlinear Regression) 在回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条曲线近似表示,则称为一元非线性回归 ...

  4. SPSS实例教程:多重线性回归,你用对了么

    SPSS实例教程:多重线性回归,你用对了么 在实际的医学研究中,一个生理指标或疾病指标往往受到多种因素的共同作用和影响,当研究的因变量为连续变量时,我们通常在统计分析过程中引入多重线性回归模型,来分析 ...

  5. Python的单元测试(二)

    title: Python的单元测试(二) date: 2015-03-04 19:08:20 categories: Python tags: [Python,单元测试] --- 在Python的单 ...

  6. SPSS数据分析—多重线性回归

    只有一个自变量和因变量的线性回归称为简单线性回归,但是实际上,这样单纯的关系在现实世界中几乎不存在,万事万物都是互相联系的,一个问题的产生必定多种因素共同作用的结果. 对于有多个自变量和一个因变量的线 ...

  7. 机器学习算法与Python实践之(二)支持向量机(SVM)初级

    机器学习算法与Python实践之(二)支持向量机(SVM)初级 机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/ ...

  8. Python爬虫学习:二、爬虫的初步尝试

    我使用的编辑器是IDLE,版本为Python2.7.11,Windows平台. 本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:二.爬虫的初步尝试 1.尝试抓取指定网页 ...

  9. python机器学习实战(二)

    python机器学习实战(二) 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7159775.html 前言 这篇noteboo ...

随机推荐

  1. [第二季ZYNQ] [南京米联]ZYNQ第二季更新完毕课程共计16节课

    ZYNQ第二季更新完毕课程共计16节课全部免费 [第二季ZYNQ]                                                                    ...

  2. SpringCloud多网卡配置(转)

    https://blog.csdn.net/lixiang987654321/article/details/88134324 docker部署过程中遇到如下问题: (1)docker容器创建之后,进 ...

  3. 13.MySQL锁机制

    锁的分类 从对数据的类型 (读\写)分: 1.读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响 2.写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁 从对数据操作的粒度 ...

  4. Spring Data JPA 大纲归纳

    第一天: springdatajpa day1:orm思想和hibernate以及jpa的概述和jpa的基本操作 day2:springdatajpa的运行原理以及基本操作 day3:多表操作,复杂查 ...

  5. 【jekins】安装jdk遇到的坑

    首先我电脑版本为win10 64 在安装JDK时先安装了jdk包,安装路径为D:\Java\jdk1.8.0_171,装完jdk后,自动安装jre,我将其安装在D:\Java\jre1.8.0_171 ...

  6. C# Winfrom GDI+ 自定义控件

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  7. kubernetes之download api

    download api作用: 可以通过环境变量或Volume挂载将pod信息注入到容器内部 apiVersion: apps/v1 kind: Deployment metadata: name: ...

  8. 微信小程序开发(四)页面跳转

    承接上篇博客. 通过点击按钮跳转到新的页面. 先创建新页面home: 代码如下: // home.js Page({}) // 注册页面 // home.json {} // home.wxml &l ...

  9. Struts2自定义标签重写(转)

    TagSupport的学习 1 TagSupport与BodyTagSupport的区别 TagSupport与BodyTagSupport的区别主要是标签处理类是否需要与标签体交互,如果不需要交互的 ...

  10. Mac环境下使用Appium Inspector进行元素定位

    一.摘要 本篇博文介绍在Mac系统上使用AppiumI Inspector进行App页面元素定位 二.Finding elements by xpath WebElement digit_9 = dr ...