前言

统计学是研究如何有效地搜集、整理和分析带有随机性的数据, 以及对所观察的问题作出推断或预测, 直至为采取一定的决策和行动提供依据和建议的学科。 统计学用于实际数据的建模和分析, 需要把统计建模过程变成适当的计算机算法, 并编程实现。 这样, 学习统计学专业的学生, 不仅需要学习高等数学、概率论、数理统计、回归分析、多元统计分析、时间序列分析、生存分析等许多数学和概率统计专业课程, 还需要了解统计学有关的计算机算法的理论和实现细节, 这样才能了解统计建模计算中的各种问题, 不至于滥用、错用统计方法, 在自己研究新的统计模型以及进行数据分析建模时才能开发出正确、可靠、高效的算法和程序。

本书包含了传统的统计计算基本概念与算法, 如误差分析、矩阵计算、最优化、随机数生成、随机模拟等。 在统计学相关的算法中, 有很多算法可以归入所谓“计算统计”范畴, 这些算法主要是借助于现代计算机的强大性能进行统计推断, 比如自助法、MCMC方法、序贯重要抽样方法、置换检验等。 本书对这类方法也进行了部分论述。

本书的网页版本中的数学公式需要MathJax程序库的支持, 用如下数学公式测试浏览器中数学公式显示是否正常:

\[ \text{定积分} = \int_a^b f(x) \,dx \]

如果显示不正常, 可以在公式上右键单击, 选择“Math Settings–Math Renderer”, 依次使用改成“Common HTML”,“SVG”等是否可以变成正常显示。

本书使用R语言和Julia语言作为算法的实现和描述语言。 选用R的原因是R特别适用于统计计算方法的开发, 统计学家普遍地使用R作为统计计算和统计算法的开发语言, 而且R也很容易自学。 Julia语言则是和R一样易学易用的科学计算语言, 同时又克服了R在执行迭代计算时速度慢的缺点。 教材的附录给出了简短的R编程入门和Julia语言入门讲解, 这一部分在授课时可以让学生自学。 本书作为教材使用时, 教师也可以选用其它的计算机语言, 如Python、Matlab、C++、JAVA、C、FORTRAN等。

本书包含大量的例题和习题,其中大部分需要编程实现。 读者应该多动手实现, 并与标准的算法程序进行比较。 R软件和Julia语言中包含了许多种标准的算法, 可以用来检查读者的编程计算结果是否正确。

本书可以作为高校统计学本科专业统计计算课程的教材, 也可以作为统计学以及其它专业的本科生、研究生和研究人员关于统计计算算法的参考书。 在作为本科生教材使用时, 由于课时的限制需要教师适当选择讲授。 建议标星号“(*)”的部分可以略去。

书中使用了其它教材的一些例子和习题, 没有一一指明出处, 在此感谢原作者。

本书已经在2016年由高等教育出版社出版, 但是统计计算是不断发展的学科, 作者感到有必要随时更新书的内容, 尤其是计算实例、详细的计算程序, 新的重要算法, 这样的更新用网页形式更为及时, 也能接触到更多的读者。 欢迎提出宝贵意见。