New feature: Kalman filter with missing (NaN) values #94
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Hi Thore, I saw it on your to-do list.
I always wished to be contributor to your wonderful project, thus I decided to make it happen, not the least it comes handy in my own work.
The change is super simple and works. In the Kalman iteration just replace:
ℒ.axpby!(1, data_in_deviations[:, t], -1, z)
with:
z = replace(ℒ.axpby!(1, data_in_deviations[:, t], -1, z),NaN=>0) # v = data_in_deviations[:, t] - z
Using julia's missing gave me type errors and headache with Turing. Changing to NaN -s opened a shortcut to just call a replace whenever a missing value it is encountered in the KF iteration, due to missing data, then the prediction error is set to zero, leading to no update. Let me know what you think!