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 Preface How to use this book Programming Setting up Installing R Starting R Working directory Writing scripts Help Supporting material R as a calculating environment Arithmetic Variables Functions Vectors Missing data: NA Expressions and assignments Logical expressions Matrices The workspace Exercises Basic programming Introduction Branching with if Looping with for Looping with while Vector-based programming Program flow Basic debugging Good programming habits Exercises Input and output Text Input from a file Input from the keyboard Output to a file Plotting Exercises Programming with functions Functions Arguments Vector-based programming using functions Recursive programming Debugging functions Exercises Sophisticated data structures Factors Dataframes Lists Exercises Better graphics Introduction Graphics parameters: par Graphical augmentation Mathematical typesetting Permanence Grouped graphs: lattice Exercises Pointers to further programming techniques Packages Frames and environments Debugging again Identifying bottlenecks Object-oriented programming: S3 Object-oriented programming: S4 Manipulation of data Compiled code Further reading Exercises Numerical accuracy and program efficiency Machine representation of numbers Significant digits Time Loops versus vectors Parallel processing Memory Caveat Exercises Root-finding Introduction Fixed-point iteration The Newton-Raphson method The secant method The bisection method Exercises Numerical integration Trapezoidal rule Simpson's rule Adaptive quadrature 210 11.4 Exercises 214 Optimisation 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 Exercises Systems of ordinary differential equations Euler's method Midpoint method Fourth-order Runge-Kutta Efficiency Adaptive step size Exercises Probability The probability axioms Conditional probability Independence The Law of Total Probability Bayes' theorem Exercises Random variables Definition and distribution function Discrete and continuous random variables Empirical cdf's and histograms Expectation and finite approximations Transformations Variance and standard deviation The Weak Law of Large Numbers Exercises Discrete random variables Discrete random variables in R Bernoulli distribution Binomial distribution Geometric distribution Negative binomial distribution Poisson distribution Exercises 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 Exercises Parameter estimation Point estimation The Central Limit Theorem Confidence intervals Monte Carlo confidence intervals Exercises ? ? 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 Simulation Estimation Estimating the mean of the limiting distribution Exercises Simulation Simulating iid uniform samples Simulating discrete random variables Inversion method for continuous rv Rejection method for continuous rv Simulating normals Exercises Monte Carlo integration Hit-and-miss method (Improved) Monte Carlo integration Exercises Variance reduction Antithetic sampling Importance sampling Control variates Exercises Case studies Introduction Epidemics Inventory Seed dispersal Student projects The level of a dam Runoff down a slope Roulette Buffon's needle and cross The pipe spiders of Brunswick Insurance risk Squash Stock prices Conserving water Glossary of R commands Programs and functions developed in the text Index