《数据分析实战》——用R做多元回归分析

本文参考的是《数据分析实战》的第六章。

背景:针对某公司对产品的不同广告平台投放,基于过去的新增用户数据和投放数据,希望获得更好的广告投放方式,以此建立数据模型。

现状:不同的广告平台投放,广告效果不同。

预期:对不同的广告平台加以比例,达到最佳效果。

明确问题:通过过去的投放数据和新增用户数据,用多元回归方程来确定不同平台的投放广告比例。

在商业领域,通常的做法是在充分考虑成本的前提下预估一个结果,再采取相应的对策。也就是说,通常我们会先确定结果,再反过来考虑相应对策的成本。放在本次案例中,我们需要先构筑一个可以预估各广告媒体能带来的用户量的模型,再决定广告的投放方式。

线性回归方程思想很简单:我们将数据描绘在图上,每个点表示一个数据,其中横坐标表示的变量称为自变量,纵坐标表示的变量称为因变量。然后我们在图上画出一条与这些数据点最为拟合的直线,根据这条直线上任何一点的横坐标(自变量)的值就可以得到纵坐标(因变量)的值,这就是线性回归分析。


读取数据

用R来读取相关数据:

> ad_data <- read.csv('ad_result.csv',header = T,stringsAsFactors = F)
> ad_datamonth  tvcm magazine install
1  2013-01  6358     5955   53948
2  2013-02  8176     6069   57300
3  2013-03  6853     5862   52057
4  2013-04  5271     5247   44044
5  2013-05  6473     6365   54063
6  2013-06  7682     6555   58097
7  2013-07  5666     5546   47407
8  2013-08  6659     6066   53333
9  2013-09  6066     5646   49918
10 2013-10 10090     6545   59963

由于上面的数据已经满足我们对数据分析的需求,故无需做数据处理,直接开始数据分析


数据分析

1.首先确认相关性:
首先,我们需要确认广告和新用户数之间是否存在关系。如果二者之间的关系不那么强,就不能断言用户数量的增加是由广告带来的。我们将数据之间的关系的强弱称为“相关性”。为了确认这种相关性,一般来说首先需要观察数据的散点图。

我们先观察tvcm(电视广告费)和install(新用户)之间的散点图:

library(ggplot2)
library(scales)
ggplot(ad_data,aes(x=tvcm,y=install))+geom_point()+xlab("电视广告费")+ylab('新用户')+scale_x_continuous(labels = comma)+scale_y_continuous(labels = comma)

其中,电视广告费和新用户的散点图如下:

我们再观察magazine(杂志广告费)和install(新用户)之间的散点图:

ggplot(ad_data,aes(x=magazine,y=install))+geom_point()+xlab("杂志广告费")+ylab('新用户')+scale_x_continuous(labels = comma)+scale_y_continuous(labels = comma)

其中,杂志广告费和新用户的散点图如下:

可以看出,电视广告和杂志广告分别与新用户的增加有着正相关性,下面我们来确定函数关系

2.进行回归分析
在R语言中,进行回归分析通常使用lm 函数。

lm (A ~ . , data = ZZ[, c(“A”,”B”,”C”)])

首先,通过data= 来指明进行回归分析所需要用到的是ZZ 数据中的属性A、B 和C,并在这之前指明所需要用到的回归模型。
上式中的“A ~ .”表示回归模型为A=B+C。其中“~”相当于数学中的等号,“.”是一个省略记号,表示在data 中声明使用的所有属性里将除属性A 之外的其他所有属性相加。因此上式等同于lm(A~B+C,data=ZZ[, c(“A”,”B”,”C”)])。又因为上式中除属性A 外只有2 个属性,所以不用省略直接列出其他所有属性也是可以的,但当用到的属性数量多达几十个时,使用省略记号“.”还是很方便的。

> fit <- lm(install~.,data=ad_data[,c("install","tvcm","magazine")])
> fitCall:
lm(formula = install ~ ., data = ad_data[, c("install", "tvcm", "magazine")])Coefficients:
(Intercept)         tvcm     magazine  188.174        1.361        7.250

这里要注意的是:选择列的时候,使用双引号(“”)

通过输入fit 就能确定多元回归方程的系数,从而构建出多元回归模型。例如从上面的结果我们可以得到以下模型。

新用户数= 1.36× 电视广告费+ 7.25× 杂志广告费+ 188.17

Intercept为截距(即常量),另外的两个为系数。

3.对回归分析结果的解释:

> summary(fit)Call:
lm(formula = install ~ ., data = ad_data[, c("install", "tvcm", "magazine")])Residuals:
     Min       1Q   Median       3Q      Max
-1406.87  -984.49   -12.11   432.82  1985.84 Coefficients:
             Estimate Std. Error t value Pr(>|t|)
(Intercept)  188.1743  7719.1308   0.024  0.98123
tvcm           1.3609     0.5174   2.630  0.03390 *
magazine       7.2498     1.6926   4.283  0.00364 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1Residual standard error: 1387 on 7 degrees of freedom
Multiple R-squared:  0.9379,    Adjusted R-squared:  0.9202
F-statistic: 52.86 on 2 and 7 DF,  p-value: 5.967e-05

① Residuals
残差也就是预测值和实际值之差,我们将残差的分布用四分位数的方式表示出来,就可以据此来判断是否存在较大的偏差。

② Coefficients
这里是与预估的常数项和斜率相关的内容。每行内容都按照预估值、标准误差、t 值、p 值的顺序给出。我们可以由此得知各个属性的斜率是多少,以及是否具有统计学意义。

③ Multiple R-squared、Adjusted R-squared
判定系数越接近于1,表示模型拟合得越好。

结论:
通过观察残差的分布,我们发现1Q(第1 四分位数)的绝对值比3Q(第3 四分位数)的绝对值要大,这表明某些数据的分布偏差过大。但由于自由度校正判定系数的值高达0.92,因此之前所决定的广告策略应该没有什么问题。

所以建立的数据模型是:
新用户数= 1.361× 电视广告费+ 7.250× 杂志广告费+ 188.174

至此,数据分析结束~


《数据分析实战》--用R做多元回归分析相关推荐

  1. 如何用excel做多元回归分析

    有个亲戚写论文要做回归分析, 只会用excel, 我帮她写了一个教程, 图文并茂的版本到这里下载或拷贝链接: http://download.csdn.net/detail/game41/359240 ...

  2. Python自学第5周反馈:python做多元回归分析,预测某支股票未来的最高最低价

    python做多元回归分析,预测某支股票未来的最高最低价 上一次简单的做了大盘股指的移动平滑预测,但在实际中,变化时受到多种因素影响的 所以这次基于上次的基础,用python来进行股票价格的多元线性预 ...

  3. 【R语言与数据分析实战】R软件编程

    目录 1.流程控制 (1) if语句 (2) 循环语句 2.运算 (1) 数值运算 (2) 向量运算 (3) NA处理 3.定义函数 (1) 可变长函数 (2) 嵌套函数 4.作用域 5.对象的不变性 ...

  4. R语言做如何做多元回归分析(逐步回归)之 提取回归结果参数-调整R方,标准化回归系数

    setwd("D:\R\myrfile") getwd() –逐步回归提取回归结果参数-调整R方,标准化回归系数-- read.table("demo.csv" ...

  5. R语言学习之数据分析实战(一)

    R语言学习之数据分析实战(一) 一.线性回归 回归(regression):通常指那些用一个或多个预测变量,也称自变量或解释变量,来预测响应变量,也称为因变量.效标变量或结果变量的方法. 普通最小二乘 ...

  6. R语言explore包进行探索性数据分析实战(EDA、exploratory data analysis):基于iris数据集

    R语言explore包进行探索性数据分析实战(EDA.exploratory data analysis):基于iris数据集 目录

  7. 三十四、R语言数据分析实战

    @Author : By Runsen @Date : 2020/5/14 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...

  8. 《R与Hadoop大数据分析实战》一1.6 HDFS和MapReduce架构

    本节书摘来自华章出版社<R与Hadoop大数据分析实战>一书中的第1章,第1.6节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区"华章计算机&qu ...

  9. 《R与Hadoop大数据分析实战》一2.6 小结

    本节书摘来自华章出版社<R与Hadoop大数据分析实战>一书中的第2章,第2.6节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区"华章计算机&qu ...

最新文章

  1. python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...
  2. 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
  3. 提交MTBF eservice以及log注意事项
  4. gradle引入依赖:_Gradle入门:依赖管理
  5. 【转】8 个效果惊人的 WebGL/JavaScript 演示
  6. 思科首席技术官解析:统一计算及战略
  7. LOTO示波器---1G采样率的USB示波器OSCH02的优势
  8. 微信小游戏开发新手教程1-人人都能做游戏
  9. 教室录播系统方案_校园录播教室搭建方案?
  10. 机器学习之实现一元线性回归模型
  11. AI各领域产业发展现状
  12. 以开发之名|线上家装新美学——梦想之家,由你来定
  13. sql注入之——SQLMap常见语句
  14. 基于目标检测的海上舰船图像超分辨率研究
  15. Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
  16. 分治(二)——三分法学习笔记
  17. 普通qq客服,不加好友临时会话
  18. 欧姆龙 PLC CP1E 与电子称重仪表“柯力XK3101”Modbus RTU通信
  19. 用python写 祝你生日快乐英文_八种祝你生日快乐英文表达,太实用了!
  20. 搭建一个网站都需要那些东西

热门文章

  1. 牛客IOI周赛27-普及组
  2. web前端是什么?需要掌握什么技术
  3. EXCEL中空白单元格如何快速填充为0
  4. CentOS7 Java应用文件名乱码问题解决(文件下载和创建文件导致的文件名乱码)
  5. 语义分割中的mIoU计算函数解读
  6. pandas中drop用法_机器学习笔记:Pandas的delete、drop函数的用法
  7. 查壳去壳和加壳的使用指南
  8. ubuntu快捷复制粘贴
  9. Excel 对象模型
  10. Swoole 介绍以及三步快速安装 swoole 教程