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.
Table of Contents
How to use this book
R as a calculating environment
Missing data: NA
Expressions and assignments
Branching with if
Looping with for
Looping with while
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
Sophisticated data structures
Graphics parameters: par
Grouped graphs: lattice
Pointers to further programming techniques
Frames and environments
Object-oriented programming: S3
Object-oriented programming: S4
Manipulation of data
Numerical accuracy and program efficiency
Machine representation of numbers
Loops versus vectors
The Newton–Raphson method
The secant method
The bisection method
Adaptive quadrature 210
11.4 Exercises 214
Newton’s method for optimisation
The golden-section method
Newton’s method in higher dimensions
Optimisation in R and the wider world
A curve-fitting example
Systems of ordinary differential equations
Adaptive step size
The probability axioms
The Law of Total Probability
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
Negative binomial distribution
Continuous random variables
Continuous random variables in R
Lifetime models: exponential and Weibull
The Poisson process and the gamma distribution
Sampling distributions: normal, χ2, and t
The Central Limit Theorem
Monte Carlo confidence intervals
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
Monte Carlo integration
(Improved) Monte Carlo integration
The level of a dam
Runoff down a slope
Buffon’s needle and cross
The pipe spiders of Brunswick
Glossary of R commands
Programs and functions developed in the text
"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 AssociationPraise 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