《数据分析实战》--用R做多元回归分析
《数据分析实战》——用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做多元回归分析相关推荐
- 如何用excel做多元回归分析
有个亲戚写论文要做回归分析, 只会用excel, 我帮她写了一个教程, 图文并茂的版本到这里下载或拷贝链接: http://download.csdn.net/detail/game41/359240 ...
- Python自学第5周反馈:python做多元回归分析,预测某支股票未来的最高最低价
python做多元回归分析,预测某支股票未来的最高最低价 上一次简单的做了大盘股指的移动平滑预测,但在实际中,变化时受到多种因素影响的 所以这次基于上次的基础,用python来进行股票价格的多元线性预 ...
- 【R语言与数据分析实战】R软件编程
目录 1.流程控制 (1) if语句 (2) 循环语句 2.运算 (1) 数值运算 (2) 向量运算 (3) NA处理 3.定义函数 (1) 可变长函数 (2) 嵌套函数 4.作用域 5.对象的不变性 ...
- R语言做如何做多元回归分析(逐步回归)之 提取回归结果参数-调整R方,标准化回归系数
setwd("D:\R\myrfile") getwd() –逐步回归提取回归结果参数-调整R方,标准化回归系数-- read.table("demo.csv" ...
- R语言学习之数据分析实战(一)
R语言学习之数据分析实战(一) 一.线性回归 回归(regression):通常指那些用一个或多个预测变量,也称自变量或解释变量,来预测响应变量,也称为因变量.效标变量或结果变量的方法. 普通最小二乘 ...
- R语言explore包进行探索性数据分析实战(EDA、exploratory data analysis):基于iris数据集
R语言explore包进行探索性数据分析实战(EDA.exploratory data analysis):基于iris数据集 目录
- 三十四、R语言数据分析实战
@Author : By Runsen @Date : 2020/5/14 作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件.导致翘 ...
- 《R与Hadoop大数据分析实战》一1.6 HDFS和MapReduce架构
本节书摘来自华章出版社<R与Hadoop大数据分析实战>一书中的第1章,第1.6节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区"华章计算机&qu ...
- 《R与Hadoop大数据分析实战》一2.6 小结
本节书摘来自华章出版社<R与Hadoop大数据分析实战>一书中的第2章,第2.6节,作者 (印)Vignesh Prajapati,更多章节内容可以访问云栖社区"华章计算机&qu ...
最新文章
- python爬取网页上的特定链接_python3下scrapy爬虫(第三卷:初步抓取网页内容之抓取网页里的指定数据)...
- 【Linux 操作系统】 Secure CRT 终端配置 -- 配置语法高亮 光标 和 字体
- 提交MTBF eservice以及log注意事项
- gradle引入依赖:_Gradle入门:依赖管理
- 【转】8 个效果惊人的 WebGL/JavaScript 演示
- 思科首席技术官解析:统一计算及战略
- LOTO示波器---1G采样率的USB示波器OSCH02的优势
- 微信小游戏开发新手教程1-人人都能做游戏
- 教室录播系统方案_校园录播教室搭建方案?
- 机器学习之实现一元线性回归模型
- AI各领域产业发展现状
- 以开发之名|线上家装新美学——梦想之家,由你来定
- sql注入之——SQLMap常见语句
- 基于目标检测的海上舰船图像超分辨率研究
- Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声
- 分治(二)——三分法学习笔记
- 普通qq客服,不加好友临时会话
- 欧姆龙 PLC CP1E 与电子称重仪表“柯力XK3101”Modbus RTU通信
- 用python写 祝你生日快乐英文_八种祝你生日快乐英文表达,太实用了!
- 搭建一个网站都需要那些东西