title: Joint Probabilistic Data Association Filter
text: # Joint Probabilistic Data Association Filter
  
  The joint probabilistic data-association filter (JPDAF) is a statistical approach to the problem of plot association (target-measurement assignment) in a target tracking algorithm. Like the probabilistic data association filter (PDAF), rather than choosing the most likely assignment of measurements to a target (or declaring the target not detected or a measurement to be a false alarm), the PDAF takes an expected value, which is the minimum mean square error (MMSE) estimate for the state of each target. At each time, it maintains its estimate of the target state as the mean and covariance matrix of a multivariate normal distribution. However, unlike the PDAF, which is only meant for tracking a single target in the presence of false alarms and missed detections, the JPDAF can handle multiple target tracking scenarios. A derivation of the JPDAF is given in.
  
  The JPDAF is one of several techniques for radar target tracking and for target tracking in the field of computer vision.
  
  ## The Coalescence Problem
  
  A common problem observed with the JPDAF is that estimates of closely spaced targets tend to coalesce over time. This is because the MMSE estimate is typically undesirable when target identity is uncertain.
  
  Variants of the JPDAF algorithm have been made that try to avoid track coalescence. For example, the Set JPDAF uses an approximate minimum mean optimal sub pattern assignment (MMOSPA) instead of an approximate MMSE estimator. The JPDAF*, modifies how the target-measurement association probabilities are computed, and variants of the global nearest-neighbor JPDAF (GNN-JPDAF) (a best-hypothesis tracker) use the global nearest neighbor (GNN) estimate in place of the mean but compute the covariance matrix as in the normal JPDAF: as a mean-squared error matrix.
  
  ## Implementations
  
  * Matlab: The PDAF, JPDAF, Set JPDAF, JPDAF*, GNN-JPDAF and multiple other exact and approximate variants of the JPDAF are implemented in the singleScanUpdate function that is part of the United States Naval Research Laboratory's free Tracker Component Library. The sample code in demo2DDataAssociation demonstrates how the algorithms can be used in a simple scenario.
  * Python: The PDAF, JPDAF and other data association methods are implemented in Stone-Soup. A tutorial demonstrates how the algorithms can be used.
  