前 言
自20多年前发源于学术界以来,R语言已经成为统计分析的通用语言,活跃于众多产业领域。目前,越来越多的商业项目开始使用R,兼之R用户开发了数以千计易于上手的开发包,都使得R成为数据分析工程师及科学家最常用的工具。
本书将帮助读者熟悉R语言这一开源生态系统,并介绍一些基本的统计背景知识,以及一小部分相关的数学知识。我们将着重探讨使用R语言解决实际的问题。
由于数据科学家在数据的采集、清洗及重构上将耗费大量时间,因此本书首先将通过第一手实例来重点探讨从文件、数据库以及在线资源中导入数据的方法,然后再介绍数据的重构和清洗——不包含实际的数据分析,最后几章将对一些特殊的数据类型以及经典的统计模型和部分机器学习算法进行说明。
本书主要内容
第1章从与所有数据相关项目都有关的关键性的第一步——从文本文件和数据库中导入数据开始。重点探讨使用优化的CSV分析器把数据载入R,预筛选数据,并对不同数据库后台对R的支持能力进行比较。
第2章介绍如何使用面向Web服务和API通信的包实现数据的导入,包括如何从主页上整理和抽取数据。还将对处理XML和JSON格式数据进行概括性说明。
第3章继续介绍基础的数据处理知识,包括多种数据筛选和聚集,并对data.table和dplyr这两个常见开发包在性能和使用语法方面进行比较。
第4章介绍更多有关复杂数据类型的转换方法,相关函数包括处理数据子集、数据合并、长宽表数据格式到适合用户需要的工作流源数据格式之间的转换等。
第5章开始介绍真实的统计模型,包括回归的概念、常用回归模型等。这一章篇幅不长,还介绍了模型测试的方法以及基于真实数据集如何解释某个多元线性回归模型结果。
第6章在前述章节的基础上,探讨了预测变量的非线性关联,以及诸如逻辑回归和泊松回归等广义线性模型的样例。
第7章介绍一些新的非结构化数据类型,读者将通过实践文本挖掘算法及对结果的可视化处理,了解使用统计模型来处理类似这样一些非结构化数据的方法。
第8章探讨有关原始数据集的另一个常见问题。大多数时候,数据科学家需要处理脏数据,包括去掉错误数据、孤立点以及其他不正确的值,同时又要将缺失值带来的影响降到最低。
第9章介绍如何从大数据中进行特征提取,假设我们已经装载了一个干净的数据集,并且完成了格式转换,当我们开始处理高维变量时,需要采用一些统计方法来进行降维以及其他包括主成分分析、因子分析和多维尺度分析等方法完成连续变量的转换。
第10章讨论使用监督及非监督统计和机器学习方法来处理样本分组问题。这些方法包括层次聚类、k均值聚类、潜类别模型、判别分析、逻辑回归和k近邻算法,以及分类树和回归树。
第11章重点探讨一类特殊的数据结构,包括其基本概念以及可视化网络分析技术,igraph包是该章的重点。
第12章展示如何通过平滑、季节性分解以及ARIMA等方法处理分析时间-日期数据及其相关值,同时还将讨论有关预测和孤立点检测等技术。
第13章探讨一类重要的数据维度——空间维,重点会放在通过主题图、交互图、等高线和冯洛诺伊图完成空间数据的可视化。
第14章提供了一个更完整的样例,该样例中包含了很多前述章节中提到的方法来帮助读者复习这本书所学习到的主要内容,以及应对未来工作中可能遇到的问题和困难。
附录给出了R语言的帮助索引,以及对前述章节中涉及内容的补充阅读。
除了基础的R包,我们还会使用到部分用户自己提供的R包,它们大多都可以很容易地从R综合典藏网(Comprehensive R Archive Network,CRAN)处下载安装。附录中列出了本书用到的开发包以及多个版本。
如果要从CRAN安装包,读者要确保网络通畅。假如要下载二进制文件,可以在R控制台调用install.packages命令:
本书中所提到的部分包在CRAN上下载不了,但也许可以从Bitbucket或者GitHub处找到安装文件,然后再通过调用devtools包的install_bitbucket和install_github函数完成安装。Windows用户则需首先从https://cran.r-project.org/bin/windows/Rtools处安装rtools包。
安装完毕后,我们应该在使用包之前先将其装载到R会话中,附录中列出了所有包的目录,而每一章的一开始则对相关的源码和R命令做了介绍:
我们极力建议读者下载安装本书的样例源码(可以参考前言的“样例源码下载”小节),这样读者就可以在R控制台很容易地复制和粘贴相关命令,而不需要再按照书中文字输入代码。
如果读者之前没用过R语言,最好能够先从R主页上阅读一些免费的介绍性文章和帮助手册,本书附录中也列出了一些推荐阅读材料。
读者人群
如果你是数据科学家或者是R开发人员,希望更多地了解有关R的高级功能及工具,那么这本书就是为你而写。本书希望读者已经具备基础的R语言知识,了解数据库的逻辑。如果你是数据科学家、工程师或分析师,希望提高自己对R语言的开发能力,那么这本书也适合你。尽管需要掌握一些基本的R知识,本书还是为你提供了相关参考文档,能够帮助你快速进入角色并掌握相关技术。
本书约定
本书中任何将在R控制台输入或输出的命令行将采用如下格式:
符号“>”有提示的意思,指此处R控制台正在等待要输入执行的命令。如果命令长度超过一行,则第一行还是用“>”开头,但剩下的其余行都要在行首添加符号“+”,代表该行不是一个完整的命令(例如,缺圆括号或引号)。命令的输出不需要增加任何首字母,字体采用和输入文本相同的等宽字体。
新出现的术语和重要的文字将用粗体表示。
警告或重要提示将跟在这样的符号后面。
目 录
译者序
前言
第1章 你好,数据!
1.1 导入一个大小合适的文本文件
1.2 文本文件编译测试平台
1.3 导入文本文件的子集
1.4 从数据库中导入数据
1.4.1 搭建测试环境
1.4.2 MySQL和MariaDB
1.4.3 PostgreSQL
1.4.4 Oracle数据库
1.4.5 访问ODBC数据库
1.4.6 使用图形化用户面连接数据库
1.4.7 其他数据库后台
1.5 从其他统计系统导入数据
1.6 导入Excel电子表格
1.7 小结
第2章 从Web获取数据
2.1 从Internet导入数据集
2.2 其他流行的在线数据格式
2.3 从HTML表中读取数据
2.4 从其他在线来源获取数据
2.5 使用R包与数据源API交互
2.5.1 Socrata的开源数据API
2.5.2 金融API
2.5.3 使用Quandl获取时序数据
2.5.4 Google文档和统计数据
2.5.5 在线搜索的发展趋势
2.5.6 天气历史数据
2.5.7 其他在线数据源
2.6 小结
第3章 数据筛选和汇总
3.1 去掉多余的数据
3.1.1 快速去掉多余数据
3.1.2 快速去掉多余数据的其他方法
3.2 聚集
3.2.1 使用基础的R命令实现快速聚集
3.2.2 方便的辅助函数
3.2.3 高性能的辅助函数
3.2.4 使用data.table完成聚集
3.3 测试
3.4 汇总函数
3.5 小结
第4章 数据重构
4.1 矩阵转置
4.2 基于字符串匹配实现数据筛选
4.3 数据重排序
4.4 dplyr包和data.table包的比较
4.5 创建新变量
4.5.1 内存使用分析
4.5.2 同时创建多个变量
4.5.3 采用dplyr包生成新变量
4.6 数据集合并
4.7 灵活地实现数据整形
4.7.1 将宽表转换为长表
4.7.2 将长表转换为宽表
4.7.3 性能调整
4.8 reshape包的演变
4.9 小结
第5章 建模
5.1 多元模型的由来
5.2 线性回归及连续预测变量
5.2.1 模型解释
5.2.2 多元预测
5.3 模型假定
5.4 回归线的拟合效果
5.5 离散预测变量
5.6 小结
第6章 线性趋势直线外的知识
6.1 工作流建模
6.2 逻辑回归
6.2.1 数据思考
6.2.2 模型拟合的好处
6.2.3 模型比较
6.3 计数模型
6.3.1 泊松回归
6.3.2 负二项回归
6.3.3 多元非线性模型
6.4 小结
第7章 非结构化数据
7.1 导入语料库
7.2 清洗语料库
7.3 展示语料库的高频词
7.4 深度清洗
7.4.1 词干提取
7.4.2 词形还原
7.5 词条关联说明
7.6 其他一些度量
7.7 文档分段
7.8 小结
第8章 数据平滑
8.1 缺失值的类型和来源
8.2 确定缺失值
8.3 忽略缺失值
8.4 去掉缺失值
8.5 在分析前或分析中筛选缺失值
8.6 填补缺失值
8.6.1 缺失值建模
8.6.2 不同填补方法的比较
8.6.3 不处理缺失值
8.6.4 多重填补
8.7 异常值和孤立点
8.8 使用模糊方法
8.9 小结
第9章 从大数据到小数据
9.1 充分性测试
9.1.1 正态性
9.1.2 多元变量正态性
9.1.3 变量间的依赖关系
9.1.4 KMO和Barlett检验
9.2 主成分分析
9.2.1 PCA算法
9.2.2 确定成分数
9.2.3 成分解释
9.2.4 旋转方法
9.2.5 使用PCA检测孤立点
9.3 因子分析
9.4 主成分分析和因子分析
9.5 多维尺度分析
9.6 小结
第10章 分类和聚类
10.1 聚类分析
10.1.1 层次聚类
10.1.2 确定簇的理想个数
10.1.3 k均值聚类
10.1.4 可视化聚类
10.2 潜类别模型
10.2.1 潜类别分析
10.2.2 LCR模型
10.3 判别分析
10.4 逻辑回归
10.5 机器学习算法
10.5.1 k近邻算法
10.5.2 分类树
10.5.3 随机森林
10.5.4 其他算法
10.6 小结
第11章 基于R的社会网络分析
11.1 装载网络数据
11.2 网络中心性度量
11.3 网络数据的展现
11.3.1 交互网络图
11.3.2 绘制层次图
11.3.3 使用R包来解释包的依赖关系
11.4 更多网络分析资源
11.5 小结
第12章 时序数据分析
12.1 创建时序对象
12.2 展现时序数据
12.3 季节性分解
12.4 Holt-Winters筛选
12.5 自回归积分滑动平均模型
12.6 孤立点检测
12.7 更复杂的时序对象
12.8 高级时序数据分析
12.9 小结
第13章 我们身边的数据
13.1 地理编码
13.2 在空间中展示数据点
13.3 找出数据点的多边形重叠区域
13.4 绘制主题图
13.5 围绕数据点绘制多边形
13.5.1 等高线
13.5.2 冯洛诺伊图
13.6 卫星图
13.7 交互图
13.7.1 查询Google地图
13.7.2 Java脚本地图库
13.8 其他绘图方法
13.9 空间数据分析
13.10 小结
第14章 分析R社区
14.1 R创始团队的成员
14.2 R开发包的维护人员
14.3 R-help邮件列表
14.3.1 R-help邮件列表的规模
14.3.2 预测未来的邮件规模
14.4 分析用户列表的重叠部分
14.5 社交媒体内的R用户数
14.6 社交媒体中与R相关的贴子
14.7 小结
附录