Ⅰ预备知识 1
1 R软件概况 3
1.1 R软件基本情况介绍 3
1.1.1 起源 3
1.1.2 为什么要使用R? 3
1.2 R与统计学 4
1.3 R与绘图 5
1.4 R的图形用户界面(GUI) 6
1.5 R的第一步 7
1.5.1 使用RCommander 7
1.5.1.1 启动RCommander 7
1.5.1.2 使用RCommander来处理数据 9
1.5.1.3 使用RCommander完成一些统计分析任务 13
1.5.1.4 给RCommander界面添加功能 17
1.5.2 通过控制台(console)来使用R 18
1.5.2.1 R在一个实例中展现出的优势 18
1.5.2.2 键入一些指令来对R的语法做一个简介 21
2 若干数据集和研究问题 27
2.1 儿童的体重指数 27
2.2 婴儿出生时的体重 28
2.3 内膜-中膜厚度 28
2.4 老年人的饮食及营养 29
2.5 心肌梗死的案例研究 30
2.6 用到的数据集的汇总表 31
Ⅱ R的基础知识 33
3 基本概念与数据结构 35
3.1 使用R的第一步 35
3.1.1 R是一个计算器 36
3.1.2 结果展示及变量赋值 37
3.1.3 工作策略 38
3.1.4 使用函数 41
3.2 R中的数据 44
3.2.1 数据的性质(或类型,或模式) 44
3.2.1.1 数值类型(numeric) 44
3.2.1.2 复数类型(complex) 44
3.2.1.3 布尔型或逻辑型(logical) 45
3.2.1.4 缺失数据(NA) 46
3.2.1.5 字符串类型(character) 46
3.2.1.6 原始数据(raw) 47
3.2.1.7 小结 47
3.2.2 数据结构 48
3.2.2.1 向量(vector) 48
3.2.2.2 矩阵(matrix)和阵列(array) 49
3.2.2.3 列表(list) 51
3.2.2.4 个体×变量表(data.frame) 52
3.2.2.5 因子(factor)和有序变量(ordered) 53
3.2.2.6 日期(date) 54
3.2.2.7 时间序列(time series) 54
3.2.2.8 小结 55
备忘录 55
练习题 55
工作簿 56
4 输入、输出及生成数据 59
4.1 输入数据 59
4.1.1 从一个ASCII文本文件来输入数据 59
4.1.1.1 使用read.table()读取数据 60
4.1.1.2 使用read.ftable()读取数据 62
4.1.1.3 使用函数scan()读取数据 63
4.1.2 从Excel或OpenOffice电子表格输入数据 64
4.1.2.1 复制-粘贴(copy-pasting) 64
4.1.2.2 使用一个媒介的ASCII文件 65
4.1.2.3 使用专门的程序包 65
4.1.3 从SPSS,Minitab,SAS或Matlab输入数据 65
4.1.4 大数据文件 66
4.2 输出数据 67
4.2.1 输出数据为一个ASCII文本文件 67
4.2.2 输出数据到Excel或OpenOffice Calc 67
4.3 创建数据 68
4.3.1 输入趣味型的数据 68
4.3.2 产生伪随机数 69
4.3.3 从一个硬拷贝(hard copy)来键入数据 69
4.4 数据库中的读/写操作 70
4.4.1 创建一个数据库和一个表格 71
4.4.2 创建一个与MySQL兼容的数据源 71
4.4.3 在一个表格中进行写操作 73
4.4.4 读取一个表格 73
备忘录 74
练习题 74
工作簿 75
5 数据操作及函数 79
5.1 对向量、矩阵和列表的操作 79
5.1.1 向量运算 79
5.1.2 再循环(recycling) 80
5.1.3 基本函数 80
5.1.4 对矩阵和数据框进行运算 81
5.1.4.1 有关总体结构(arccture)的信息 82
5.1.4.2 合并表格(merging tables) 82
5.1.4.3 函数apply() 86
5.1.4.4 函数sweep() 87
5.1.4.5 函数stack() 87
5.1.4.6 函数aggregate() 88
5.1.4.7 函数transform() 88
5.1.5 列表的运算 89
5.2 逻辑和关系运算 90
5.3 集合的运算 91
5.4 提取和插入元素 92
5.4.1 从向量提取/对向量插入元素 92
5.4.2 从矩阵提取/对矩阵插入元素 94
5.4.3 从数组提取/对数组插入元素 97
5.4.4 从列表提取/对列表插入元素 98
5.5 对字符串进行操作 100
5.6 管理日期和时间单位 103
5.6.1 显示当前的日期 103
5.6.2 提取日期 103
5.6.3 对日期进行操作 105
5.7 控制流 107
5.7.1 条件指令 107
5.7.2 循环(loop)指令 110
5.8 创建函数 112
5.9 定点数与浮点数表示法 118
5.9.1 将一个数表示为某个基数的形式 118
5.9.2 浮点计数法 119
5.9.2.1 定义 119
5.9.2.2 浮点计数法因有效数字引致的局限 120
5.9.2.3 避免某些数值上的陷阱 121
5.9.2.4 浮点计数法因指数引致的局限 122
备忘录 124
练习题 125
工作簿 126
6 R及其帮助文件 131
6.1 综合帮助 131
6.1.1 使用命令help() 131
6.1.2 一些补充的命令 133
6.2 网络上的帮助信息 135
6.2.1 搜索引擎 135
6.2.2 留言板 135
6.2.3 邮件列表 135
6.2.4 互联网多线交谈(IRC) 136
6.2.5 维基(Wiki) 136
6.3 关于R的文献 136
6.3.1 在线方式 136
6.3.2 印刷资料 137
备忘录 137
练习题 138
工作簿 138
7 绘制曲线和图像 139
7.1 图形窗口 139
7.1.1 基本的图形窗口;操作;保存 139
7.1.2 分割图形窗口:layout() 141
7.2 低水平绘图函数 143
7.2.1 函数plot()和points() 143
7.2.2 函数segments(),lines()和abline() 145
7.2.3 函数arrows() 146
7.2.4 函数polygon() 147
7.2.5 函数curve() 147
7.2.6 函数box() 148
7.3 管理颜色 148
7.3.1 函数colors() 148
7.3.2 十六进制颜色编码 149
7.3.3 函数image() 152
7.4 添加文本 153
7.4.1 函数text() 153
7.4.2 函数mtext() 154
7.5 标题,数轴与说明文字 155
7.5.1 函数title() 155
7.5.2 函数axis() 156
7.5.3 函数legend() 157
7.6 与图形进行互动 158
7.6.1 函数locator() 158
7.6.2 函数identify() 159
7.7 ?微调图形参数:par() 159
7.8 ?高级绘图命令:rgl,lattice和ggplot2 169
备忘录 170
练习题 170
工作簿 171
8 R中编程 175
8.1 引言 175
8.2 编写函数 176
8.2.1 快速开始:声明、创建及调用函数 176
8.2.2 关于函数的基本概念 177
8.2.2.1 函数主体 177
8.2.2.2 正式和有效参变量的列表 177
8.2.2.3 由函数返回的对象 180
8.2.2.4 函数主体中变量的范围 181
8.2.3 应用到实际问题 183
8.2.4 运算符(operators) 183
8.2.5 R视为一种函数型语言 185
8.3 面向对象编程 185
8.3.1 R内部的面向对象机制的工作原理 185
8.3.1.1 一个对象的类别及声明一个对象 185
8.3.1.2 声明对象并使用方法 187
8.3.2 回到实际问题 190
8.3.3 关于方法的信息 192
8.3.4 继承类 193
8.4 ?R编程的进一步探讨 196
8.4.1 R属性 196
8.4.1.1 类(class)属性 198
8.4.1.2 属性dim 198
8.4.1.3 属性names和dimnames 201
8.4.2 其他R对象 203
8.4.2.1 R表达式 203
8.4.2.2 R公式 206
8.4.2.3 R环境 207
8.5 ?R与C/C++或Fortran的接口 209
8.5.1 创建并运行一个C/C++或Fortran函数 210
8.5.2 从R来调用C/C++(或Fortran) 215
8.5.3 调用外部的C/C++或Fortran库 220
8.5.3.1 R的API 221
8.5.3.2 newmat库 224
8.5.3.3 程序包BLAS和LAPACK 226
8.5.3.4 混合C/C++和Fortran程序包 228
8.5.4 从一个被R调用的C/C++程序中调用R代码 230
8.5.5 从Fortran调用R代码 232
8.5.6 一些有用的函数 232
8.6 ?调试函数 232
8.6.1 在纯粹的R环境中调试函数 232
8.6.2 R代码中的错误 234
8.6.3 C/C++或Fortran代码中的错误 235
8.6.4 使用GDB进行调试 235
8.6.4.1 使用Emacs进行调试 238
8.6.4.2 使用DDD进行调试 240
8.6.4.3 使用Insight进行调试 241
8.6.4.4 检测内存泄漏 246
8.7 并行计算及图形卡上的计算 248
8.7.1 并行计算 248
8.7.2 图形卡上的计算 250
备忘录 251
练习题 251
工作簿 253
9 管理会话 259
9.1 R命令、对象及其存储 259
9.2 工作空间:.RData文件 260
9.3 命令历史:.Rhistory文件 263
9.4 保存图像 264
9.5 管理程序包 265
9.6 管理R对象的访问路径 266
9.7 ?其他有用的命令 267
9.8 ?内存管理中的问题 267
9.8.1 RAM的组织架构 268
9.8.2 访问内存 269
9.8.2.1 由整数内存管理所引起的问题 270
9.8.2.2 内存的连续分配 271
9.8.3 R中对象的大小 272
9.8.4 被R所使用的总内存 273
9.8.5 一些建议 275
9.9 ?以BATCH模式使用R 276
9.10 ?创建一个简单的R程序包 278
备忘录 279
练习题 279
工作簿 280
Ⅲ 数学和统计基础 283
10 数学基础:矩阵运算、积分及最优化 285
10.1 基本的数学函数 285
10.2 矩阵运算 287
10.2.1 基本的矩阵运算 288
10.2.2 外积 290
10.2.3 Kronecker积 291
10.2.4 三角矩阵 291
10.2.5 向量化运算(vec)和半向量化运算(half vec) 291
10.2.6 行列式、迹、条件数 292
10.2.7 尺度化和中心化数据 293
10.2.8 特征值和特征向量 293
10.2.9 Hermite正定矩阵的平方根 294
10.2.10 奇异值分解 294
10.2.11 Cholesky分解 295
10.2.12 QR分解 296
10.3 数值积分 297
10.4 微分 298
10.4.1 符号微分 298
10.4.2 数值微分 298
10.5 最优化 299
10.5.1 最优化函数 299
10.5.2 函数的根 302
备忘录 303
练习题 303
工作簿 304
11 描述性统计 309
11.1 引言 309
11.2 根据类型来组织变量 310
11.2.1 构造定性变量 311
11.2.2 构造有序变量 312
11.2.3 构造离散的定量数据 312
11.2.4 构造连续的定量变量 313
11.3 数据表 313
11.3.1 个体数据表 313
11.3.2 计数表与频数表 313
11.3.3 分组数据表 314
11.3.4 交叉表 314
11.3.4.1 列联表 314
11.3.4.2 联合分布 315
11.3.4.3 边际分布 316
11.3.4.4 条件分布 316
11.4 数值总结 317
11.4.1 一个分布的位置参数的总结 318
11.4.1.1 众数 318
11.4.1.2 中位数 318
11.4.1.3 均值 320
11.4.1.4 分位数 320
11.4.2 一个分布的散度参数的总结 320
11.4.3 一个分布的形状参数的总结 321
11.5 关联度的测量 322
11.5.1 测量两个定性变量之间的关联 322
11.5.1.1 Pearson χ2统计量 322
11.5.1.2 φ2,Cramer V2以及Pearson列联相关系数 323
11.5.2 测量两个有序变量(或排序)之间的关联 324
11.5.2.1 Kendall τ及τb 324
11.5.2.2 Spearman秩相关系数ρ 325
11.5.3 测量两个定量变量之间的关联 325
11.5.3.1 协方差和Pearson相关系数 325
11.5.4 测量一个定性变量与一个定量变量之间的关联 326
11.5.4.1 相关比η2Y/X 326
11.6 图形表示 327
11.6.1 绘制定性变量的图形 327
11.6.1.1 交叉表 327
11.6.1.2 条形图 328
11.6.1.3 Pareto图 329
11.6.1.4 堆叠条形图 330
11.6.1.5 饼图 331
11.6.2 绘制有序变量的图形 332
11.6.2.1 具有累积频率线的条形图 332
11.6.3 绘制离散定量变量的图形 332
11.6.3.1 交叉表 332
11.6.3.2 条形图 332
11.6.3.3 绘制经验分布函数的图像 333
11.6.3.4 茎叶图 334
11.6.3.5 箱线图 334
11.6.4 绘制连续定量变量的图形 335
11.6.4.1 经验分布函数 335
11.6.4.2 茎叶图 336
11.6.4.3 箱线图 336
11.6.4.4 具有相同或不同组距的密度直方图 337
11.6.4.5 频率多边形 338
11.6.4.6 累积频率多边形 338
11.6.5 一个二元变量的图形表示 339
11.6.5.1 两个定性变量的双向(two-way)图 339
11.6.5.2 两个定量变量的双向图 342
11.6.5.3 一个定性变量与一个定量变量的双向图 342
备忘录 344
练习题 344
工作簿 345
12 利用R的特性来更好地理解随机变量、分布及模拟 349
12.1 关于随机数生成的概念 349
12.2 随机变量的概念 351
12.2.1 随机变量的实现及函数规则 351
12.2.2 独立同分布随机变量 352
12.2.3 一个随机变量的分布特征 353
12.2.3.1 密度函数、分布函数、分位数函数 354
12.2.4 一个随机变量的分布的参数 357
12.3 大数定律和中心极限定理 359
12.3.1 大数定律 359
12.3.2 中心极限定理 359
12.4 统计推断 360
12.4.1 点估计 361
12.4.2 经验累积分布函数 362
12.4.3 极大似然估计 363
12.4.4 抽样变异和估计量的性质 364
12.5 从一个分布中抽样的若干技术 366
12.5.1 从另一个分布进行模拟 367
12.5.2 逆变换方法 367
12.5.3 拒绝抽样 368
12.5.4 离散随机变量的模拟 368
12.6 Bootstrap方法 369
12.7 标准及次标准分布 370
12.7.1 标准分布 370
12.7.2 ?次标准分布 372
12.8 对一个现象建模 375
备忘录 377
练习题 377
工作簿 377
13 置信区间与假设检验 381
13.1 记号 381
13.2 置信区间 382
13.2.1 均值的置信区间 382
13.2.2 比例p的置信区间 383
13.2.3 方差的置信区间 384
13.2.4 中位数的置信区间 385
13.2.5 相关系数的置信区间 386
13.2.6 置信区间的一览表 387
13.3 标准的假设检验 387
13.3.1 参数检验 389
13.3.1.1 均值的检验 389
13.3.1.2 方差的检验 391
13.3.1.3 比例的检验 393
13.3.1.4 相关性检验 395
13.3.2 独立性检验 396
13.3.2.1 独立性的χ2检验 396
13.3.2.2 Yates χ2检验 398
13.3.2.3 Fisher精确检验 398
13.3.3 非参数检验 399
13.3.3.1 拟合优度检验 399
13.3.3.2 位置的检验 402
13.3.4 标准检验的备忘录 406
13.4 其他检验 407
备忘录 408
练习题 409
工作簿 409
14 简单及多重线性回归 415
14.1 引言 415
14.2 简单线性回归 416
14.2.1 目标及模型 416
14.2.2 拟合数据 416
14.2.3 一个新值的置信区间及预测区间 420
14.2.4 残差分析 422
14.2.5 均值和线性模型的t检验 425
14.2.6 小结 426
14.3 多重线性回归 427
14.3.1 目标及模型 427
14.3.2 拟合数据 427
14.3.3 一个新值的置信区间及预测区间 431
14.3.4 检验一个线性子假设:部分F检验 431
14.3.5 具有两种以上可能的取值的定性变量 432
14.3.6 变量间的交互作用 435
14.3.7 多重共线性问题 438
14.3.8 变量选择 439
14.3.9 残差分析 446
14.3.10 多项式回归 451
14.3.11 小结 451
备忘录 452
练习题 452
工作簿 452
15 方差分析基础 457
15.1 单因素方差分析 457
15.1.1 目标、数据和模型 457
15.1.2 实例及图形探查 458
15.1.3 ANOVA表及参数估计 459
15.1.4 假设的验证 462
15.1.5 多重比较和对比 463
15.1.6 小结 465
15.2 双因素方差分析 466
15.2.1 目标、数据和模型 466
15.2.2 实例及图形探查 467
15.2.3 ANOVA表、检验及参数估计 469
15.2.4 验证假设条件 472
15.2.5 对比 472
15.2.6 小结 473
15.3 重复测量的方差分析 474
15.3.1 单因素重复测量ANOVA 474
15.3.2 两个因素都有重复测量的双因素模型 475
15.3.3 其中一个因素有重复测量的双因素模型 477
备忘录 478
练习题 478
工作簿 478
附录:安装R及R程序包 483
A.1 在微软Windows XP下安装R 483
A.2 安装附加的程序包 483
A.2.1 从硬盘上的一个文件来进行安装 484
A.2.2 直接从网络进行安装 485
A.2.3 从命令行来安装 486
A.2.4 在Linux下安装程序包 487
A.3 加载已安装的程序包 487
参考文献 491
索引 493
R命令与符号索引 501
作者索引 513
R程序包列表 515
练习题解答 517
工作簿解答 529