描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302526629丛书名: 大数据应用与技术丛书
■使读者能够设计数据清洗过程,用于进行一次性分析或者设置生产系统以便定期进行数据清洗。
■探索各种统计技术,以便解决诸如不完整、矛盾和离群等方面的问题,更好地进行数据清洗组件的集成和质量监控。
■图书配套网站提供特征数据和R范例代码。
第1章 数据清洗 1
1.1 统计价值链 1
1.1.1 原始数据 2
1.1.2 输入数据 2
1.1.3 有效数据 3
1.1.4 统计数据 3
1.1.5 输出 3
1.2 《R统计数据清洗及应用》使用的表示法和约定 3
第2章 R语言简介 5
2.1 命令行中的R语言 5
2.2 向量 7
2.2.1 向量计算 9
2.2.2 数组和矩阵 10
2.3 数据帧 11
2.3.1 公式-数据接口 12
2.3.2 选择行和列,布尔运算符 13
2.3.3 使用索引进行选择 13
2.3.4 数据帧操纵:dplyr软件包 15
2.4 特殊值 16
2.5 在R中导入和导出数据 19
2.5.1 R中的文件路径 20
2.5.2 软件包提供的格式 20
2.5.3 从数据库读取数据 21
2.5.4 处理R外部的数据 21
2.6 函数 22
2.6.1 使用函数 22
2.6.2 编写函数 23
2.7 《R统计数据清洗及应用》中使用的软件包 24
第3章 数据的技术表示 27
3.1 数值数据 28
3.1.1 整数 28
3.1.2 R中的整数 30
3.1.3 实数 31
3.1.4 双精度数 31
3.1.5 机器精度的概念 33
3.1.6 处理浮点数的不良结果 34
3.1.7 处理不良结果 35
3.1.8 R中的数值数据 37
3.2 文本数据 38
3.2.1 术语和编码 38
3.2.2 Unicode 39
3.2.3 一些常见的编码方案 40
3.2.4 R中的文本数据:character类的对象 43
3.2.5 R中的编码方案 45
3.2.6 使用非本地编码方案进行数据的读取和写入 46
3.2.7 检测编码方案 48
3.2.8 排序规则和排序 49
3.3 时间和日期 51
3.3.1 TAI、UTC以及POSIX从Epcoch开始的秒数 51
3.3.2 时间和日期表示法 52
3.3.3 R中的时间和日期存储 54
3.3.4 R中的时间和日期转换 55
3.3.5 闰日、时区和夏令时 57
3.4 区域设置注意事项 58
第4章 数据结构 61
4.1 简介 61
4.2 表格数据 61
4.2.1 data.frame对象 62
4.2.2 数据库 62
4.2.3 dplyr 64
4.3 矩阵数据 65
4.4 时间序列 66
4.5 图表数据 68
4.6 Web数据 70
4.6.1 网页爬取 70
4.6.2 Web API 70
4.7 其他数据 73
4.8 整理表格数据 73
4.8.1 每列变量 75
4.8.2 单个观测值存储在多个表中 75
第5章 清洗文本数据 77
5.1 字符规范化 78
5.1.1 编码转换和Unicode规范化 78
5.1.2 字符转换和音译 80
5.2 使用正则表达式进行模式匹配 82
5.2.1 基本正则表达式 82
5.2.2 实用的正则表达式 85
5.2.3 在R中生成正则表达式 93
5.3 R中的常见字符串处理任务 94
5.4 近似文本匹配 99
5.4.1 字符串指标 101
5.4.2 R中的字符串指标和近似文本匹配 110
第6章 数据验证 121
6.1 简介 121
6.2 初识validate软件包 122
6.2.1 使用check_that快速检查 122
6.2.2 基本工作流程:validator和confront 124
6.2.3 validate和DSL背景简介 126
6.3 定义数据验证 127
6.3.1 数据验证的正式定义 128
6.3.2 验证函数的运算 130
6.3.3 验证和缺失值 132
6.3.4 验证函数的结构 133
6.3.5 界定validate中的验证规则 134
6.4 数据验证函数的形式类型 135
6.4.1 深入了解测量 135
6.4.2 验证规则的分类 137
6.5 使用validate软件包验证数据 139
6.5.1 控制台和validator对象中的验证规则 139
6.5.2 在管道中验证 141
6.5.3 抛出错误或警告 141
6.5.4 测试线性方程式的公差 142
6.5.5 设置和重置选项 143
6.5.6 从文件导入验证规则/将验证规则导出到文件 144
6.5.7 检查变量类型和元数据 146
6.5.8 检查值范围和代码列表 147
6.5.9 检查记录中一致性规则 148
6.5.10 检查跨记录验证规则 150
6.5.11 检查函数依赖 151
6.5.12 跨数据集验证 152
6.5.13 宏、变量组、键 153
6.5.14 分析输出:validation对象 154
6.5.15 输出维度和输出选择 156
第7章 在数据记录中定位错误 159
7.1 错误定位 159
7.2 使用R进行错误定位 162
7.3 以MIP问题的形式进行错误定位 164
7.3.1 错误定位和混合整数规划 165
7.3.2 线性限制 166
7.3.3 分类限制 167
7.3.4 混合类型限制 169
7.4 数值稳定性问题 171
7.4.1 解决MIP问题 172
7.4.2 缩放数值记录 174
7.4.3 设置数值阈值 174
7.5 实际问题 176
7.5.1 设置可靠性权重 176
7.5.2 简化条件验证规则 177
7.6 结论 181
第8章 规则集的维护和简化 185
8.1 验证规则的质量 185
8.1.1 完备性 185
8.1.2 多余的规则和不可行性 186
8.2 以逻辑语言表述规则 186
8.3 规则集问题 188
8.3.1 不可行规则集 188
8.3.2 固定值 190
8.3.3 冗余规则 191
8.3.4 非松弛子句 191
8.3.5 非约束子句 191
8.4 检测和简化过程 192
8.4.1 混合整数规划 193
8.4.2 检测可行性 193
8.4.3 查找导致不可行的规则 193
8.4.4 检测冲突规则 194
8.4.5 检测部分不可行性 194
8.4.6 检测固定值 194
8.4.7 检测非松弛子句 195
8.4.8 检测非约束子句 195
8.4.9 检测冗余规则 195
8.5 结论 196
第9章 基于领域知识模型的方法 197
9.1 使用数据修改规则进行校正 197
9.1.1 修改函数 198
9.1.2 针对数值数据的一类修改函数 202
9.2 使用dcmodify进行基于规则的校正 206
9.2.1 从文件中读取规则 207
9.2.2 修改规则语法 208
9.2.3 缺失值 209
9.2.4 顺序执行和与顺序无关的执行 209
9.2.5 选项设置管理 210
9.3 演绎校正 210
9.3.1 校正数值数据中的键入错误 211
9.3.2 使用线性限制进行演绎插补 214
第10章 插补和调整 221
10.1 缺失数据 221
10.1.1 缺失数据机制 221
10.1.2 使用R可视化和测试缺失数据中的模式 222
10.2 基于模型的插补 226
10.3 R中基于模型的插补 228
10.3.1 使用simputation指定插补方法 228
10.3.2 基于线性回归的插补 229
10.3.3 M估计 231
10.3.4 Lasso回归、岭回归和弹性网络回归 233
10.3.5 分类和回归树 233
10.3.6 随机森林 236
10.4 使用R进行赋值元素插补 237
10.4.1 随机和顺序热卡插补 238
10.4.2 k最近邻和预测均值匹配 239
10.5 simputation软件包中的其他方法 240
10.6 基于EM算法的插补 241
10.6.1 EM算法 242
10.6.2 假定多变量正态分布情况下的EM插补 244
10.7 插补下的抽样方差 245
10.8 多重插补 246
10.8.1 基于EM算法的多重插补 249
10.8.2 Amelia软件包 249
10.8.3 基于链式方程的多变量插补 253
10.8.4 使用mice软件包进行插补 254
10.9 用于估计插补方差的分析方法 257
10.10 选择插补方法 257
10.11 约束值调整 260
10.11.1 形式化描述 260
10.11.2 对插补数据的应用 263
10.11.3 使用rspa软件包调整插补值 263
第11章 示例:一个小型数据清洗系统 265
11.1 设置 266
11.1.1 确定性方法 267
11.1.2 错误定位 268
11.1.3 插补 269
11.1.4 调整插补数据 271
11.2 监控数据更改 273
11.2.1 数据差异(Daff) 273
11.2.2 汇总单元格更改 275
11.2.3 按照验证规则汇总更改 276
11.2.4 使用lumberjack自动跟踪数据更改 278
11.3 集成和自动化 282
11.3.1 使用RScript 282
11.3.2 docopt软件包 283
11.3.3 自动化数据清洗 283
在数据分析中,数据清洗往往是最为耗时的部分。在“官方统计”(Official Statistics)社区,很久以前就已经开始将数据清洗作为一个单独的学科进行研究(在该社区,数据清洗被称为“数据编辑”)。此外,在研究中还引入了数据库的相关知识,尽管如此,针对大型统计社区的文献著作还是非常有限。正是因为这个原因,当出版方邀请我们对之前为useR!2013大会编写的《R数据清洗简介》教程进行扩展,进而编纂成一《R统计数据清洗及应用》时,我们毫不犹豫就答应了,这也是我们的心声。一方面,我们认为,过去50年中在“官方统计”社区发布的一些方法应该为更多的用户所了解和使用,而《R统计数据清洗及应用》或许可以为此助一臂之力。另一方面,我们正在从基于调查的数据源过渡到管理型“大”数据源,希望《R统计数据清洗及应用》能够帮助为“官方统计”社区增加一些(通常是预先存在的)相关技术。
对于我们来说,通过编写《R统计数据清洗及应用》也可以帮助我们系统地梳理相关知识,进一步完善之前针对这一主题所编写的软件。回过头来看,我们最终不仅成功完成了《R统计数据清洗及应用》的编写,还重新开发并普及了很多之前编写的数据清洗R软件包。为什么要这样做呢?其中一个原因是,我们发现了一些很好的方法,能够普及和扩展我们的软件和方法;另一个原因就是,我们希望将最近出现的“tidyverse”接口风格与R功能联系起来。
《R统计数据清洗及应用》包含的内容
《R统计数据清洗及应用》包含一系列精选的主题,我们认为这些主题对于开发数据清洗(也称为数据编辑)系统非常有用。主题范围非常广泛,与计算机科学、数字方法、技术标准、统计以及数据建模和编程等相关的主题,全部涵盖其中。
《R统计数据清洗及应用》涵盖“技术数据清洗”方面的主题,包括数字、文本和日期类型的转换和解释。同时对与这些数据类型相关的技术标准也做了较为详细的介绍。在对象的数据内容方面,相关主题包括数据验证(数据检查)、错误定位、各种错误校正方法以及缺失值插补方法。
对于《R统计数据清洗及应用》中讨论的理论知识,为了便于用户理解,我们会尽可能地提供可执行的R代码进行举例说明。此外,我们还提供了相应的练习,希望可以指导读者进一步加强对软件和对应方法的理解。
广泛的主题既反映出这一课题涵盖范围之广,同时也体现了作者广博的专业知识。当然,还有很多主题并未在书中进行介绍,其中,最重要的主题可能要算清洗时间序列对象和离群值检测。
《R统计数据清洗及应用》面向的读者
《R统计数据清洗及应用》的读者应该对数学和统计学有基本的了解,同时还应该具备一定的编程经验。我们假定读者已经了解期望值、方差、基础微积分和线性代数方面的知识。如果具备一定的R语言知识,那么对理解《R统计数据清洗及应用》中的内容会有很大的帮助,因为《R统计数据清洗及应用》就是使用R语言进行说明介绍的。不过,为了便于读者理解和参考,我们还是利用一章内容简要介绍了相关的基础知识。
致谢
《R统计数据清洗及应用》最终能够顺利出版,离不开很多人的辛勤工作。在这里,我们要感谢荷兰统计局的同事们,他们在百忙之中抽出时间与我们就数据验证、插补和错误定位进行了卓有成效的讨论,为我们提供了很多真知灼见。《R统计数据清洗及应用》中的部分章节参考了合著者所发表的论文和报告。我们要感谢Jeroen Pannekoek、Sander Scholtus和Jacco Daalmans的帮助,没有你们的密切合作,就没有《R统计数据清洗及应用》的成功出版。此外,R核心团队、软件包开发人员也为我们提供了非常大的帮助,当然,还有R社区的大力支持,在此,一并表示感谢。
最后,还要感谢我们的家人,感谢他们的关爱与支持。
2017年6月
Mark和Edwin
评论
还没有评论。