Kalman-and-Bayesian-Filters-in-Python
Kalman-and-Bayesian-Filters-in-Python copied to clipboard
Ch.8 NEES at run-time
In chapter 8 (Evaluating Filter Performance - NEES section) it says:
This is an excellent measure of the filter's performance, and should be used whenever possible, especially in production code when you need to evaluate the filter while it is running.
How can it be possible to compute NEES in production? It requires the knowledge of the ground truth which is available, obviously, only in simulations.
Am I missing something here?
So I studied a little bit more the topic and, indeed, the NEES can be computed only when the ground truth values are available (i.e. during a simulation)
The run-time equivalent of the NEES is called NIS (Normalized Innovation Squared) and is computed similarly to the NEES, however S (System uncertainty) is used instead of P and the residuals are used instead of the estimation error. It is therefore using variables that are actually available at runtime.
I think the section in the chapter should be updated and maybe a new section related to NIS should be added.
Also, in the following section called "Likelihood function" the NIS is actually used when computing the gaussian function (in the exponential there is the y' S^-1 y
term). So here the likelihood is computed using the NIS under the hood. What happens if the NEES is used to compute the likelihood?
I think these two paragraphs can be expanded to better clarify the NEES/NIS concepts and how they relate to the likelihood function