There is something to satisfy everyone in this new book on data assimilation, which has become a highly useful mathematical technique with applications ranging from weather forecasting to medicine. Data assimilation is used primarily to determine information about the true behavior of a possibly stochastic dynamical system (typically a time signal of one or more system variables) given that only sparse (in time, space, and/or system dimension) and generally noisy observations of that system are available. Mathematically, this amounts to solving a problem of conditioning a random variable corresponding to the true signal on the observational data.
The book contains a healthy balance of mathematical foundations, practical examples, and Matlab scripts. In general, the theory is discussed first, and this holds as well for the first chapter of the book, which gives a review of relevant mathematical background in probability and dynamical systems, including notation conventions used throughout the book. Throughout, data assimilation is presented from a Bayesian perspective rather than from a control theoretic one (although in practice it was developed as an outgrowth of the latter field). The Bayesian context provides a useful framework for understanding the basic concepts of data assimilation and serves to motivate the development of the algorithms presented. Although the authors emphasize mathematical rigor and include formal proofs when possible, they also make a point of explaining the practical implications of these proofs, which helps to connect theory and application.
The book is organized primarily by categorizing problems as involving dynamical systems and data that are both discrete or both continuous in time (applications with continuous-time dynamical systems but with discrete-time data are reformulated as discrete-time problems). Examples used for discrete-time systems include linear dynamical systems, the logistic map, and the Lorenz ’63 and Lorenz-96 models (continuous-time systems are treated as having discrete-time signals). For continuous-time systems, examples include linear systems with different time scales, noise-driven motion in a double-well potential, and the same two Lorenz models. Within each category, both smoothing and filtering algorithms are discussed in separate chapters. Smoothing attempts to find the probability distribution of the underlying signal given (potentially) all the observations, including observations made later in time than individual signal points. Filtering addresses a similar problem but includes only past observations up to the present time. Thus, in filtering, the distribution is updated sequentially. Filtering generally is the only practical option when models include a large number of unknowns (for example, 3D models of systems with many state variables) and a large number of observations. Smoothing algorithms include Markov Chain-Monte Carlo methods like Metropolis-Hastings as well as variational methods, while filtering algorithms include the 3DVAR variational method, the extended and ensemble Kalman filters, and the particle filter. Illustrative examples are discussed thoroughly at the ends of the chapters, and separate chapters containing Matlab scripts with descriptive comments conclude the discrete and continuous sections. The scripts can be used to reproduce examples in the book and to experiment with various dynamics and algorithmic settings to understand the algorithms more completely. In addition, the scripts can be modified or extended relatively easily to consider new examples.
Overall, this book contains a lot of useful information for learning about data assimilation. For those with a more rigorous background in probability, the organization of the book should work well. Given my own interests and background, which are more rooted in dynamical systems, I found myself skimming much of the theory at first in order to see motivating examples earlier, and then returning to the theory later as needed. I found this strategy to be pretty effective and well supported by the book’s content. Personally, I also would have welcomed an introductory chapter that discussed more about what data assimilation is, along with its history and range of applications. Some information along these lines is included in the extensive bibliographic notes at the ends of later chapters. For those without at least some prior casual exposure to data assimilation and with limited probability training, the book may be a difficult place to start learning about data assimilation, as the formal language and notation of probability takes some getting used to, and understanding the examples requires some idea of what data assimilation is about. Nevertheless, the book could be used as the basis of or supplement for an introductory graduate- or advanced undergraduate-level course on data assimilation, and it includes exercises that would be helpful to assign to students or to work through in class.
Data assimilation is a difficult topic to treat in a comprehensive manner. This book admirably includes material that should appeal to everyone and contains both the theoretical and practical material needed to understand how and why data assimilation works.