  Data assimilation is an iterative approach to the problem of estimating the
state of a dynamical system using both current and past observations of the
system together with a model for the system's time evolution. Rather than
solving the problem from scratch each time new observations become available,
one uses the model to ``forecast'' the current state, using a prior state
estimate (which incorporates information from past data) as the initial
condition, then uses current data to correct the prior forecast to a current
state estimate. This Bayesian approach is most effective when the uncertainty
in both the observations and in the state estimate, as it evolves over time,
are accurately quantified. In this article, we describe a practical method for
data assimilation in large, spatiotemporally chaotic systems. The method is a
type of ``ensemble Kalman filter'', in which the state estimate and its
approximate uncertainty are represented at any given time by an ensemble of
system states. We discuss both the mathematical basis of this approach and its
implementation; our primary emphasis is on ease of use and computational speed
rather than improving accuracy over previously published approaches to ensemble
Kalman filtering. We include some numerical results demonstrating the
efficiency and accuracy of our implementation for assimilating real atmospheric
data with the global forecast model used by the U.S. National Weather Service.
