Is the `hmm_smoother` function missing a time-step when there are time-dependent transition functions?
mikewojnowicz opened this issue · 1 comments
mikewojnowicz commented
In the "non-stationary" setting (which seems to be operationally defined here as referring to time-dependent parameters), the hmm_smoother
function applied to a time-series of T elements returns T-2 transition probabilities, rather than T-1 transition probabilities.
E.g. if one enters into the unit tests here, and adds the two assertions below, both pass.
assert jnp.shape(post.trans_probs)[0]==num_timesteps-2
assert jnp.shape(post2.trans_probs)[0]==num_timesteps-2
Isn't this a mistake?
- I expected T-1 such probabilities based on the math
- The
hmm_expected_states
function in the oldssm
repo, which performed a similar role, returned anexpected_joints
value that had T-1, not T-2, entries.
DBraun commented
I'm trying to make a toy example of a non-stationary model (if you have one I'd like to see it too). I noticed the same pattern of shapes you noticed. In my case it's related to these two lines:
where each line takes 1 away from the length of the transition probabilities. Maybe the -1
in len(filtered_probs)-1
isn't necessary?