《深入浅出数据分析》一书要点记录(三):第10章到第13章

10. 回归——预测

要点:

(1)算法:为了完成某个计算而执行的任何过程。

(2)散点图:见第4章,用于显示观察结果的成对关系。

(3)平均值图:一种散点图,显示了与X轴上的每个区间相对应的Y轴数值。

(4)回归线:最准确地贯穿平均值图中各个点的直线,可以用等式来表达,用来预测某个范围内的X变量对应的Y变量。

斜率b的计算如下(其中r是相关系数,σ是标准偏差):

b=r \times \sigma _{y }/\sigma _{x }

(5)相关性:两种变量之间的线性关系,对应的散点图上的点会大致沿着直线分布。相关系数叫做r,范围为-1到1,0表示无相关性。

案例:

根据过去提过的加薪要求和对应的加薪结果,制作了一个加薪数据回归方程,用于替客户预测给定加薪要求的加薪结果。

R指令:

employees <- read.csv("xxx/hfda_ch10_employees.csv", header=TRUE): 加载csv文件

plot(employees$requested[employees$negotiated==TRUE], employees$received[employees$negotiated==TRUE]): 绘制散点图,[]内的条件是要求加薪的

cor(employees$requested[employees$negotiated==TRUE], employees$received[employees$negotiated==TRUE]): 计算加薪要求和加薪结果之间的相关系数

myLm <- lm(received[negotiated==TRUE]~requested[negotiated==TRUE], data=employees): 创建一个线性模型

myLm$coefficients: 显示截距a和斜率b

my_raise <- 5, 2.3 + 0.7*my_raise: 已知x (my_raise),使用线性回归方程(y = 2.3 + 0.7x)计算y

数据:

hfda_ch10_employees.csv加薪数据表

11. 误差——合理误差

要点:

(1)外插法:用回归方程预测数据范围以外的数值。因为对这里的情况不了解,所以如果要使用此法,就需要指定附加假设条件,明确表示不考虑数据集外发生的情况。

(2)内插法:对数据范围内的点进行预测。

(3)机会误差(残差):实际结果与预测结果之间的偏差。可以用均方根误差定量表示线性回归方程的残差分布。

均方根误差的计算如下(其中r是相关系数,σ是标准偏差):

\sigma _{y }\times \sqrt{1-r^{2}}

(4)分割:将数据分拆为几个组成为分割。如果为几个分组分别创建预测模型比单独使用一个模型更能减小误差,则应进行分割。

案例:

通过把加薪数据分割为两组,创建了两个拥有更低均方根误差和更靠谱斜率的回归方程模型,并指出了加薪方程式应用范围,让客户可以更好地预测加薪结果。

R指令:

employees <- read.csv("xxx/hfda_ch10_employees.csv", header=TRUE): 同上一章

myLm <- lm(received[negotiated==TRUE]~requested[negotiated==TRUE], data=employees): 同上一章

summary(myLm): 显示模型的统计汇总

summary(myLm)$sigma:显示均方根误差

myLmBig <- lm(received[negotiated==TRUE & requested > 10]~requested[negotiated==TRUE & requested > 10], data=employees):以高出10%的加薪数据创建一个线性模型,是激进谈判者的新模型

myLmSmall <- lm(received[negotiated==TRUE & requested <= 10]~requested[negotiated==TRUE & requested <= 10], data=employees):以低于或等于10%的加薪数据创建一个线性模型,是胆小谈判者的新模型

summary(myLmSmall)$coefficients:显示截距a和斜率b

summary(myLmSmall)$sigma:显示均方根误差

summary(myLmBig)$coefficients

summary(myLmBig)$sigma

数据:

hfda_ch10_employees.csv加薪数据表(同上一章)

12. 关系数据库——你能关联吗?

要点:

(1)数据库:一张表格或一组表格,表格以某种方式对数据进行管理,是数据之间的相互关系显而易见。数据库软件对表格进行管理。比如Oracle、MySQL等。

(2)关系数据库管理系统(Relational Database Management System, RDBMS): 最重要最有效地数据管理方法之一。每一行都有一把钥匙,通常称为ID(标识),钥匙可以确保这些量化关系不被破坏。其中的数据可以进行无穷无尽的比较。

(3)SQL(Structured Query Language): 结构化查询语言,是一种关系数据库检索方法,可以通过输入代码或使用能创建SQL代码的图形界面,令数据库回答你的SQL问题。

案例:

通过关联数据库和散点图,帮助《数据邦新闻》一刊找到了最佳文章数目用来确保最高销量,以及最受欢迎的作者用来提高销量。

Excel公式:

(1)Article count列公式,用来计算issues表格里的issueID(A2)在articles表格里的issueID一列里(B:B)的出现次数,即计算该期刊的文章数目:

=COUNTIF(hfda_ch12_articles.csv!B:B,hfda_ch12_issues.csv!A2)

(2)Sales列公式,用来计算当issues表格里的issueID(A2)在sales表格里的issueID一列里(B:B)出现时,对应lotSize一列里(C:C)的销量总和,即每一期的总销量:

=SUMIF(hfda_ch12_sales.csv!B:B, hfda_ch12_issues.csv!A2, hfda_ch12_sales.csv!C:C)

(3)关于如何自动填充一列的公式,可参考网页如下:

https://zhidao.baidu.com/question/152933969.html

R指令:

dispatch <- read.csv("xxx/dispatch analysis.csv", header=TRUE): 加载csv文件

plot(Sales~jitter(Article.count),data=dispatch): 绘制散点图,并利用jitter使数据相互分隔,更容易识别

articleHitsComments <- read.csv("xxx/hfda_ch12_articleHitsComments.csv",header=TRUE)

library(lattice): 加载lattice数据包

xyplot(webHits~commentCount|authorname,data=articleHitsComments): 根据作者名称authorname,创建散点图

数据:

hfda_ch12_issues.csv期数表格,hfda_ch12_sales.csv销量表格,hfda_ch12_articles.csv文章表格 -> 数据需要汇总到dispatch.csv

hfda_ch12_articleHitsComments.csv评论率和点击率表格

13. 整理数据——井然有序

要点:

(1)清理混乱数据的步骤:

保存原始数据副本 -> 设想数据集的最终外观 -> 区分混乱数据中重复出现的模式 -> 整理并重新构造 -> 使用最终数据

(2)正则表达式:一种编程工具,可以用这个工具指定复杂的模式以便匹配和替换文本字符串。

案例:

通过分隔数据、删除不必要的字符及数据列和删除重复数据,为Head First猎头公司整理了一份求职人员名单。

Excel指令:

(1)选择A列数据,点击数据选项卡下的“分列”按钮,用“#”作为分隔符号,将数据分为多个列。

(2)NewFirstName列公式,用来把FirstName(B2)里的"^"符号替换成"",即删去FirstName里的"^"符号:

=SUBSTITUTE(B2,"^","")

R指令:

hfhh <- read.csv("xxx/hfda_data_for_R.csv",header=TRUE): 加载csv文件

NewLastName <- sub("\\(.*\\)","",hfhh$LastName):把带有"()"和其中包括的所有字符替换成""

hfhh$LastName <- NULL: 删除原有的LastName矢量

hfhh("LastName") <- NewLastName: 在hfhh中增加LastName矢量

write.csv(hfhh, file="hfhh.csv"): 将结果写入csv文件

hfhhSorted <- hfhh[order(hfhh$PersonID), ]: 根据PersonID一列对数据框架排序

hfhhNamesOnly <- hfhhSorted: 创建新数据框架

hfhhNamesOnly$CallID <- NULL: 删除不必要数列CallerID

hfhhNamesOnly$Time <- NULL: 删除不必要数列Time

hfhhNamesOnly <- unique(hfhhNamesOnly): 删除重复数据

write.csv(hfhhNamesOnly, file="hfhhNamesOnly.csv")

数据:

hfda_ch13_raw_data.csv原始求职人员名单

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值