《R语言实战》

r-in-action

由统计之都三位成员高涛肖楠陈钢翻译的《R语言实战》现已正式出版。请点击这里下载随书代码。如果读书在阅读过程中遇到什么问题,可以留言提问。您也可以访问本书在图灵社区的主页,阅读部分试读章节。我们还会不定期地在这里发布本书的勘误,请读者留意@统计之都的微博。近期统计之都还有其他图书出版,请关注本站图书出版栏目。

有热心读者在论坛上贴出了学习笔记

内容介绍

R是一个开源项目,具有强大的统计计算及制图能力,是从大数据中获取有用信息的绝佳工具,在各种主流操作 系统上都可以安装使用,其基本安装就提供了数以百计的数据管理、统计和图形函数。另外,社区开发的数以千计的扩展(包)为R增加了更多强大功能。《R语言实战》注重实用性,是一本全面而细致的R指南,高度概括了该软件和它的强大功能,展示了实用的统计示例,且对于难以用传统方法处理的凌乱、不完整和非正态 的数据给出了优雅的处理方法。作者不仅仅探讨统计分析,还阐述了大量探索和展示数据的图形功能。《R语言实战》适合数据分析人员及R用户学习参考。

作者简介

Robert I. Kabacoff R语言社区著名学习网站Quick-R(http://www.statmethods.net/)的幕后维护者,现为全球化开发与咨询公司Management研究集团研发副总裁。此前,Kabacoff博士是佛罗里达诺瓦东南大学的教授,讲授定量方法和统计编程的研究生课程。Kabacoff还是临床心理学博士、统计顾问,擅长数据分析,在健康、金融服务、制造业、行为科学、政府和学术界有20余年的研究和统计咨询经验。

目录

第一部分 入门

第1章 R语言介绍 3
1.1 为何要使用R? 4
1.2 R的获取和安装 6
1.3 R的使用 7
1.3.1 新手上路 7
1.3.2 获取帮助 10
1.3.3 工作空间 10
1.3.4 输入和输出 12
1.4 包 14
1.4.1 什么是包 14
1.4.2 包的安装 14
1.4.3 包的载入 14
1.4.4 包的使用方法 15
1.5 批处理 15
1.6 将输出用为输入——结果的重用 16
1.7 处理大数据集 16
1.8 示例实践 17
1.9 小结 18

第2章 创建数据集 19
2.1 数据集的概念 19
2.2 数据结构 20
2.2.1 向量 21
2.2.2 矩阵 22
2.2.3 数组 23
2.2.4 数据框 24
2.2.5 因子 27
2.2.6 列表 29
2.3 数据的输入 30
2.3.1 使用键盘输入数据 31
2.3.2 从带分隔符的文本文件导入数据 32
2.3.3 导入Excel数据 33
2.3.4 导入XML数据 34
2.3.5 从网页抓取数据 34
2.3.6 导入SPSS数据 34
2.3.7 导入SAS数据 34
2.3.8 导入Stata数据 35
2.3.9 导入netCDF数据 35
2.3.10 导入HDF5数据 35
2.3.11 访问数据库管理系统 36
2.3.12 通过Stat/Transfer导入数据 37
2.4 数据集的标注 37
2.4.1 变量标签 38
2.4.2 值标签 38
2.5 处理数据对象的实用函数 38
2.6 小结 39

第3章 图形初阶 40
3.1 使用图形 40
3.2 一个简单的例子 42
3.3 图形参数 43
3.3.1 符号和线条 45
3.3.2 颜色 46
3.3.3 文本属性 47
3.3.4 图形尺寸与边界尺寸 49
3.4 添加文本、自定义坐标轴和图例 50
3.4.1 标题 51
3.4.2 坐标轴 52
3.4.3 参考线 54
3.4.4 图例 54
3.4.5 文本标注 56
3.5 图形的组合 58
3.6 小结 64

第4章 基本数据管理 65
4.1 一个示例 65
4.2 创建新变量 67
4.3 变量的重编码 68
4.4 变量的重命名 69
4.5 缺失值 70
4.5.1 重编码某些值为缺失值 71
4.5.2 在分析中排除缺失值 72
4.6 日期值 73
4.6.1 将日期转换为字符型变量 74
4.6.2 更进一步 74
4.7 类型转换 74
4.8 数据排序 75
4.9 数据集的合并 76
4.9.1 添加列 76
4.9.2 添加行 76
4.10 数据集取子集 77
4.10.1 选入(保留)变量 77
4.10.2 剔除(丢弃)变量 77
4.10.3 选入观测 78
4.10.4 subset()函数 79
4.10.5 随机抽样 79
4.11 使用SQL语句操作数据框 80
4.12 小结 81

第5章 高级数据管理 82
5.1 一个数据处理难题 82
5.2 数值和字符处理函数 83
5.2.1 数学函数 83
5.2.2 统计函数 84
5.2.3 概率函数 86
5.2.4 字符处理函数 89
5.2.5 其他实用函数 90
5.2.6 将函数应用于矩阵和数据框 91
5.3 数据处理难题的一套解决方案 93
5.4 控制流 96
5.4.1 重复和循环 97
5.4.2 条件执行 97
5.5 用户自编函数 99
5.6 整合与重构 101
5.6.1 转置 101
5.6.2 整合数据 101
5.6.3 reshape包 102
5.7 小结 105

第二部分 基本方法

第6章 基本图形 108
6.1 条形图 108
6.1.1 简单的条形图 109
6.1.2 堆砌条形图和分组条形图 110
6.1.3 均值条形图 111
6.1.4 条形图的微调 112
6.1.5 棘状图 113
6.2 饼图 114
6.3 直方图 116
6.4 核密度图 118
6.5 箱线图 120
6.5.1 使用并列箱线图进行跨组比较 121
6.5.2 小提琴图 124
6.6 点图 125
6.7 小结 128

第7章 基本统计分析 129
7.1 描述性统计分析 130
7.1.1 方法云集 130
7.1.2 分组计算描述性统计量 133
7.1.3 结果的可视化 136
7.2 频数表和列联表 136
7.2.1 生成频数表 137
7.2.2 独立性检验 142
7.2.3 相关性的度量 144
7.2.4 结果的可视化 144
7.2.5 将表转换为扁平格式 144
7.3 相关 146
7.3.1 相关的类型 146
7.3.2 相关性的显著性检验 148
7.3.3 相关关系的可视化 150
7.4 t检验 150
7.4.1 独立样本的t检验 150
7.4.2 非独立样本的t检验 151
7.4.3 多于两组的情况 152
7.5 组间差异的非参数检验 152
7.5.1 两组的比较 152
7.5.2 多于两组的比较 153
7.6 组间差异的可视化 155
7.7 小结 155

第三部分 中级方法

第8章 回归 158
8.1 回归的多面性 159
8.1.1 OLS回归的适用情境 159
8.1.2 基础回顾 160
8.2 OLS回归 160
8.2.1 用lm()拟合回归模型 161
8.2.2 简单线性回归 162
8.2.3 多项式回归 164
8.2.4 多元线性回归 167
8.2.5 有交互项的多元线性回归 169
8.3 回归诊断 171
8.3.1 标准方法 171
8.3.2 改进的方法 175
8.3.3 线性模型假设的综合验证 180
8.3.4 多重共线性 181
8.4 异常观测值 181
8.4.1 离群点 182
8.4.2 高杠杆值点 182
8.4.3 强影响点 183
8.5 改进措施 186
8.5.1 删除观测点 186
8.5.2 变量变换 186
8.5.3 增删变量 187
8.5.4 尝试其他方法 188
8.6 选择“最佳”的回归模型 188
8.6.1 模型比较 188
8.6.2 变量选择 189
8.7 深层次分析 193
8.7.1 交叉验证 193
8.7.2 相对重要性 194
8.8 小结 197

第9章 方差分析 198
9.1 术语速成 198
9.2 ANOVA模型拟合 201
9.2.1 aov()函数 201
9.2.2 表达式中各项的顺序 201
9.3 单因素方差分析 202
9.3.1 多重比较 204
9.3.2 评估检验的假设条件 206
9.4 单因素协方差分析 208
9.4.1 评估检验的假设条件 209
9.4.2 结果可视化 210
9.5 双因素方差分析 211
9.6 重复测量方差分析 214
9.7 多元方差分析 216
9.7.1 评估假设检验 217
9.7.2 稳健多元方差分析 219
9.8 用回归来做ANOVA 219
9.9 小结 221

第10章 功效分析 222
10.1 假设检验速览 222
10.2 用pwr包做功效分析 225
10.2.1 t检验 225
10.2.2 方差分析 227
10.2.3 相关性 227
10.2.4 线性模型 228
10.2.5 比例检验 229
10.2.6 卡方检验 229
10.2.7 在新情况中选择合适的效应值 230
10.3 绘制功效分析图形 232
10.4 其他软件包 234
10.5 小结 235

第11章 中级绘图 236
11.1 散点图 237
11.1.1 散点图矩阵 239
11.1.2 高密度散点图 244
11.1.3 三维散点图 247
11.1.4 气泡图 250
11.2 折线图 252
11.3 相关图 255
11.4 马赛克图 259
11.5 小结 261

第12章 重抽样与自助法 263
12.1 置换检验 263
12.2 用coin包做置换检验 265
12.2.1 独立两样本和K样本检验 266
12.2.2 列联表中的独立性 267
12.2.3 数值变量间的独立性 268
12.2.4 两样本和K样本相关性检验 268
12.2.5 深入探究 269
12.3 lmPerm包的置换检验 269
12.3.1 简单回归和多项式回归 269
12.3.2 多元回归 271
12.3.3 单因素方差分析和协方差分析 271
12.3.4 双因素方差分析 272
12.4 置换检验点评 273
12.5 自助法 273
12.6 boot包中的自助法 274
12.6.1 对单个统计量使用自助法 275
12.6.2 多个统计量的自助法 277
12.7 小结 279

第四部分 高级方法

第13章 广义线性模型 282
13.1 广义线性模型和glm()函数 282
13.1.1 glm()函数 283
13.1.2 连用的函数 284
13.1.3 模型拟合和回归诊断 285
13.2 Logistic回归 285
13.2.1 解释模型参数 288
13.2.2 评价预测变量对结果概率的影响 289
13.2.3 过度离势 290
13.2.4 扩展 291
13.3 泊松回归 291
13.3.1 解释模型参数 293
13.3.2 过度离势 294
13.3.3 扩展 295
13.4 小结 297

第14章 主成分和因子分析 298
14.1 R中的主成分和因子分析 299
14.2 主成分分析 300
14.2.1 判断主成分的个数 300
14.2.2 提取主成分 302
14.2.3 主成分旋转 305
14.2.4 获取主成分得分 306
14.3 探索性因子分析 307
14.3.1 判断需提取的公共因子数 308
14.3.2 提取公共因子 309
14.3.3 因子旋转 310
14.3.4 因子得分 313
14.3.5 其他与EFA相关的包 313
14.4 其他潜变量模型 314
14.5 小结 314

第15章 处理缺失数据的高级方法 316
15.1 处理缺失值的步骤 317
15.2 识别缺失值 318
15.3 探索缺失值模式 319
15.3.1 列表显示缺失值 319
15.3.2 图形探究缺失数据 320
15.3.3 用相关性探索缺失值 322
15.4 理解缺失数据的来由和影响 324
15.5 理性处理不完整数据 325
15.6 完整实例分析(行删除) 326
15.7 多重插补 327
15.8 处理缺失值的其他方法 331
15.8.1 成对删除 331
15.8.2 简单(非随机)插补 332
15.9 小结 332

第16章 高级图形进阶 333
16.1 R中的四种图形系统 333
16.2 lattice包 334
16.2.1 条件变量 338
16.2.2 面板函数 339
16.2.3 分组变量 342
16.2.4 图形参数 345
16.2.5 页面摆放 346
16.3 ggplot2包 347
16.4 交互式图形 351
16.4.1 与图形交互:鉴别点 351
16.4.2 playwith 352
16.4.3 latticist 353
16.4.4 iplots包的交互图形 354
16.4.5 rggobi 355
16.5 小结 356

后记:探索R的世界 357

附录A 图形用户界面 359
附录B 自定义启动环境 362
附录C 从R中导出数据 364
附录D 制作出版级品质的输出 366
附录E R中的矩阵运算 374
附录F 本书中用到的扩展包 376
附录G 处理大数据 381
附录H 更新R 383

参考文献 385

《R语言实战》》有43个想法

  1. 刚买了没一周,平摊在桌上,合起来后才发现封面不知道什么时候被划了一道,问题是划痕位置有点微妙,用室友的话说就是——“来自XXX的男人”变成了“被切JJ的男人”T_T

  2. [code]
    # 代码清单7-7 使用by()分组计算描述性统计量
    > vars dstats by(mtcars[vars], mtcars$am, dstats)
    [/code]

    Error in is.data.frame(x) :
    (list) object cannot be coerced to type ‘double’
    In addition: Warning message:
    In mean.default(x) : argument is not numeric or logical: returning NA

  3. # 代码清单7-7 使用by()分组计算描述性统计量
    > vars dstats by(mtcars[vars], mtcars$am, dstats)

    Error in is.data.frame(x) :
    (list) object cannot be coerced to type ‘double’
    In addition: Warning message:
    In mean.default(x) : argument is not numeric or logical: returning NA

    1. 请问你这个问题解决了吗?7-7代码这个报错的问题。求教啊!

      1. mean(x),sd(x)的参数必须是numeric/logical 的。
        这里mtcars[vars]是个list。作为参数使用时,类型错误,is.numeric(mtcars[vars]) 输出 FALSE

        需要修改为mtcars[vars][[1]],就是去list的第一个元素,is.numeric(mtcars[vars][[1]]) 输出TRUE

      2. 抱歉,刚才写的有些错误。
        可以这个修改。
        dstats<-function(x)(c(mean=sapply(x,mean),sd=sapply(x,sd)))

        by(mtcars[vars],mtcars$am,dstats)

  4. p137 表7-1 用于创建和处理列联表的函数
    Margin.table(table, margins)
    其中首字母大写了,是不是刊误?
    实际使用时应是小写。margin.table()

  5. p137 表7-1 用于创建和处理列联表函数
    Addmargins(table, margins)
    Xtabs(formula, data)
    这两个函数的首字母也是大写,应是刊误。
    addmargins(table, margins)
    xtabs(formula, data)

  6. p141
    代码清单7-12 三维列联表
    ftable(mytable)得到的结果与书中有差异(变量顺序上的差异)

  7. p148 偏相关 pcor()
    install.packages(“graph”)
    ## Warning in install.packages :
    ## package ‘graph’ is not available (for R version 3.0.1)
    ## Warning in install.packages :
    ## package ‘graph’ is not available (for R version 3.0.1)
    install.packages(“ggm”)
    library(ggm)
    ## Loading required package: graph
    ## Error: package ‘graph’ could not be loaded
    ## In addition: Warning message:
    ## In library(pkg, character.only = TRUE, logical.return = TRUE, lib.loc = lib.loc) :
    ## there is no package called ‘graph’

  8. p149
    代码清单7-19 通过corr.test计算相关矩阵并进行显著性检验
    书中提供的Probability value 与实际运行结果不一致
    Probability values (Entries above the diagonal are adjusted for multiple tests.)
    Population Income Illiteracy Life Exp Murder HS Grad
    Population 0.00 0.59 1.00 1.0 0.10 1
    Income 0.15 0.00 0.01 0.1 0.54 0
    Illiteracy 0.46 0.00 0.00 0.0 0.00 0
    Life Exp 0.64 0.02 0.00 0.0 0.00 0
    Murder 0.01 0.11 0.00 0.0 0.00 0
    HS Grad 0.50 0.00 0.00 0.0 0.00 0

  9. 这本书的代码在网上无法下载,书的主页上没有内容,请译者或作者解决一下!谢谢!

      1. 找到了,谢谢!
        我对统计之都越来越喜欢了!是一个活跃的学习园地!有很多高手!

      1. 我第一次安装的时候采用的是单个输入语句install.packages(“vcd”),结果提示让我选一个站点下载,我选择的是北京1,然后就出错了,后来再次输入的时候,没有选择下载所用的站点,就没有出错了,不知道你们两位是不是遇见同样的问题,你们可以尝试下其他站点下载试试

  10. 本书中第一章,第三章出现的mtcar数据,为什么没有找到?

      1. 亲,我也是初学者,找了好久没找到,请问是在哪的?

      2. 应该是mtcars吧,直接调用就好了,是R里面的数据

  11. 代码错误?书本p145页和p146页的代码得不到针对书中p145页下面那个例子的结果,请问是代码哪里的问题?

  12. latticist包怎么总是显示
    Warning in install.packages :
    package ‘latticist’ is not available (for R version 3.3.0)

发表评论

电子邮件地址不会被公开。 必填项已用*标注