Introduction to Scientific Programming and Simulation Using R, Second Edition: 2nd Edition (Hardback) book cover

Introduction to Scientific Programming and Simulation Using R, Second Edition

By Owen Jones, Robert Maillardet, Andrew Robinson

© 2014 – Chapman and Hall/CRC

606 pages | 133 B/W Illus.

Purchasing Options:$ = USD
Hardback: 9781466569997
pub: 2014-06-12
eBook (VitalSource) : 9781466570016
pub: 2014-06-12
from $37.95

FREE Standard Shipping!
e–Inspection Copy


Learn How to Program Stochastic Models

Highly recommended, the best-selling first edition of Introduction to Scientific Programming and Simulation Using R was lauded as an excellent, easy-to-read introduction with extensive examples and exercises. This second edition continues to introduce scientific programming and stochastic modelling in a clear, practical, and thorough way. Readers learn programming by experimenting with the provided R code and data.

The book’s four parts teach:

  • Core knowledge of R and programming concepts
  • How to think about mathematics from a numerical point of view, including the application of these concepts to root finding, numerical integration, and optimisation
  • Essentials of probability, random variables, and expectation required to understand simulation
  • Stochastic modelling and simulation, including random number generation and Monte Carlo integration

In a new chapter on systems of ordinary differential equations (ODEs), the authors cover the Euler, midpoint, and fourth-order Runge-Kutta (RK4) schemes for solving systems of first-order ODEs. They compare the numerical efficiency of the different schemes experimentally and show how to improve the RK4 scheme by using an adaptive step size.

Another new chapter focuses on both discrete- and continuous-time Markov chains. It describes transition and rate matrices, classification of states, limiting behaviour, Kolmogorov forward and backward equations, finite absorbing chains, and expected hitting times. It also presents methods for simulating discrete- and continuous-time chains as well as techniques for defining the state space, including lumping states and supplementary variables.

Building readers’ statistical intuition, Introduction to Scientific Programming and Simulation Using R, Second Edition shows how to turn algorithms into code. It is designed for those who want to make tools, not just use them. The code and data are available for download from CRAN.


"The Introduction to Scientific Programming and Simulation Using R (2nd Edition) is a useful and well organized book. The writing is orderly, logical, consistent, intriguing, and engaging. We have read many programming and simulation oriented books that vary in context, scope, and difficulty level. This one turned out to be one of our favorites. It stands out in the sense that a decent dose of theory is given in addition to the programming related aspects. It covers an immense amount of material, yet manages to do so both thoroughly and clearly."

~Hakan Demirtas, Rachel Nordgren, University of Illinois at Chicago

"Computation has become so central to the field of statistics that any practicing statistician must have a basic understanding of scientific programming and stochastic modeling. Introduction to Scientific Programming and Simulation Using R provides an excellent entry-level text on the subject. This is a well written and well-designed book that will appeal to a wide readership and prove useful for several different types of courses. It provides a very good introduction to programming using the R language that has become widely used in statistical education and practice. It also introduces the fundamental tools needed for stochastic modeling: numerical analysis, probability, and simulation.

~Christopher H. Schmid, Journal of the American Statistical Association

Praise for the First Edition:

"Overall, the authors have produced a highly readable text. As prerequisites do not go beyond first-year calculus, the book should appeal to a wide audience; it should also be eminently suitable for self-study. On a somewhat larger scale, it may help to further establish R as a kind of Swiss Army knife for computational science. I strongly recommend it."

~C. Kleiber, Universität Basel, Basel, Switzerland, in Statistical Papers, March 2012

"This book is a good resource for someone who wants to learn R and use R for statistical computing and graphics. It will also serve well as a textbook or a reference book for students in a course related to computational statistics."

~Hon Keung Tony Ng, Technometrics, May 2011

"… a very coherent and useful account of its chosen subject matter. … The programming section … is more comprehensive than Braun & Murdoch (2007), but more accessible than Venables & Ripley (2000). … The book deserves a place on university library shelves … One very useful feature of the book is that nearly every chapter has a set of exercises. There are also plenty of well-chosen examples throughout the book that are used to explain the material. I also appreciated the clear and attractive programming style of the R code presented in the book. I found very little in the way of typos or solecisms. … I can strongly recommend the book for its intended audience. If I ever again have to teach our stochastic modelling course, I will undoubtedly use some of the exercises and examples from Scientific Programming and Simulation Using R."

~David Scott, Australian & New Zealand Journal of Statistics, 2011

"It is not often that I think that a statistics text is one that most scientifc statisticians should have in their personal libraries. Introduction to Scientific Programming and Simulation Using R is such a text. … This text provides scientific researchers with a working knowledge of R for both reviewing and for engaging in the statistical evaluation of scientific data. …It is particularly useful for understanding and developing modeling and simulation software. I highly recommend the text, finding it to be one of the most useful books I have read on the subject."

Journal of Statistical Software, September 2010, Volume 36

"The authors have written an excellent introduction to scientific programming with R. Their clear prose, logical structure, well-documented code and realistic examples made the book a pleasure to read. One particularly useful feature is the chapter of cases studies at the end, which not only demonstrates complete analyses but also acts as a pedagogical tool to review and integrate material introduced throughout the book. … I would strongly recommend this book for readers interested in using R for simulations, particularly for those new to scientific programming or R. It is also very student-friendly and would be suitable either as a course textbook or for self-study."

Significance, September 2009

"I think that the techniques of scientific programming presented will soon enable the novice to apply statistical models to real-world problems. The writing style is easy to read and the book is suitable for private study. If you have never read a book on scientific programming and simulation, then I recommend that you start with this one."

International Statistical Review, 2009

Table of Contents

Table of Contents


How to use this book


Setting up

Installing R

Starting R

Working directory

Writing scripts


Supporting material

R as a calculating environment





Missing data: NA

Expressions and assignments

Logical expressions


The workspace


Basic programming


Branching with if

Looping with for

Looping with while

Vector-based programming

Program flow

Basic debugging

Good programming habits


Input and output


Input from a file

Input from the keyboard

Output to a file



Programming with functions



Vector-based programming using functions

Recursive programming

Debugging functions


Sophisticated data structures





Better graphics


Graphics parameters: par

Graphical augmentation

Mathematical typesetting


Grouped graphs: lattice


Pointers to further programming techniques


Frames and environments

Debugging again

Identifying bottlenecks

Object-oriented programming: S3

Object-oriented programming: S4

Manipulation of data

Compiled code

Further reading


Numerical accuracy and program efficiency

Machine representation of numbers

Significant digits


Loops versus vectors

Parallel processing






Fixed-point iteration

The Newton–Raphson method

The secant method

The bisection method


Numerical integration

Trapezoidal rule

Simpson’s rule

Adaptive quadrature 210

11.4 Exercises 214


Newton’s method for optimisation

The golden-section method

Multivariate optimisation

Steepest ascent

Newton’s method in higher dimensions

Optimisation in R and the wider world

A curve-fitting example


Systems of ordinary differential equations

Euler’s method

Midpoint method

Fourth-order Runge–Kutta


Adaptive step size



The probability axioms

Conditional probability


The Law of Total Probability

Bayes’ theorem


Random variables

Definition and distribution function

Discrete and continuous random variables

Empirical cdf’s and histograms

Expectation and finite approximations


Variance and standard deviation

The Weak Law of Large Numbers


Discrete random variables

Discrete random variables in R

Bernoulli distribution

Binomial distribution

Geometric distribution

Negative binomial distribution

Poisson distribution


Continuous random variables

Continuous random variables in R

Uniform distribution

Lifetime models: exponential and Weibull

The Poisson process and the gamma distribution

Sampling distributions: normal, χ2, and t


Parameter estimation

Point estimation

The Central Limit Theorem

Confidence intervals

Monte Carlo confidence intervals




Markov chains

Introduction to discrete time chains

Basic formulae: discrete time

Classification of states

Limiting behaviour: discrete time

Finite absorbing chains

Introduction to continuous time chains

Rate matrix and associated equations

Limiting behaviour: continuous time

Defining the state space



Estimating the mean of the limiting distribution



Simulating iid uniform samples

Simulating discrete random variables

Inversion method for continuous rv

Rejection method for continuous rv

Simulating normals


Monte Carlo integration

Hit-and-miss method

(Improved) Monte Carlo integration


Variance reduction

Antithetic sampling

Importance sampling

Control variates


Case studies




Seed dispersal

Student projects

The level of a dam

Runoff down a slope


Buffon’s needle and cross

The pipe spiders of Brunswick

Insurance risk


Stock prices

Conserving water

Glossary of R commands

Programs and functions developed in the text


About the Series

Chapman & Hall/CRC The R Series

Learn more…

Subject Categories

BISAC Subject Codes/Headings:
MATHEMATICS / Number Systems
MATHEMATICS / Probability & Statistics / General