Browse Source

finished intro chapter.
starting on hmm inference chapter.

Kevin P Murphy 3 years ago
parent
commit
8163e57aac
100 changed files with 15767 additions and 913 deletions
  1. BIN
      _build/.doctrees/chapters/blank.doctree
  2. BIN
      _build/.doctrees/chapters/hmm/hmm_filter.doctree
  3. BIN
      _build/.doctrees/chapters/hmm/hmm_index.doctree
  4. BIN
      _build/.doctrees/chapters/learning/learning_index.doctree
  5. BIN
      _build/.doctrees/chapters/lgssm/lgssm_index.doctree
  6. BIN
      _build/.doctrees/chapters/scratch.doctree
  7. BIN
      _build/.doctrees/chapters/ssm/hmm.doctree
  8. BIN
      _build/.doctrees/chapters/ssm/inference.doctree
  9. BIN
      _build/.doctrees/chapters/ssm/lds.doctree
  10. BIN
      _build/.doctrees/chapters/ssm/nlds.doctree
  11. BIN
      _build/.doctrees/chapters/ssm/ssm.doctree
  12. BIN
      _build/.doctrees/chapters/ssm/ssm_index.doctree
  13. BIN
      _build/.doctrees/chapters/ssm/ssm_intro.doctree
  14. BIN
      _build/.doctrees/chapters/ssm/ssm_old.doctree
  15. BIN
      _build/.doctrees/environment.pickle
  16. BIN
      _build/.doctrees/old/ssm.doctree
  17. BIN
      _build/.doctrees/old/ssm_old.doctree
  18. BIN
      _build/.doctrees/root.doctree
  19. 1 1
      _build/html/.buildinfo
  20. 43 16
      _build/html/README.html
  21. BIN
      _build/html/_images/hmm_14_0.png
  22. BIN
      _build/html/_images/hmm_15_0.png
  23. BIN
      _build/html/_images/hmm_15_1.png
  24. BIN
      _build/html/_images/hmm_16_1.png
  25. BIN
      _build/html/_images/hmm_17_0.png
  26. BIN
      _build/html/_images/hmm_18_1.png
  27. BIN
      _build/html/_images/inference-problems-tikz.png
  28. BIN
      _build/html/_images/inference_10_1.png
  29. BIN
      _build/html/_images/inference_11_1.png
  30. BIN
      _build/html/_images/inference_16_1.png
  31. BIN
      _build/html/_images/inference_17_1.png
  32. BIN
      _build/html/_images/inference_9_1.png
  33. BIN
      _build/html/_images/lds_7_1.png
  34. BIN
      _build/html/_images/ssm_old_15_0.png
  35. BIN
      _build/html/_images/ssm_old_16_1.png
  36. BIN
      _build/html/_images/ssm_old_21_1.png
  37. BIN
      _build/html/_images/ssm_old_30_1.png
  38. BIN
      _build/html/_images/ssm_old_31_1.png
  39. 22 2
      _build/html/_sources/chapters/blank.ipynb
  40. 508 12
      _build/html/_sources/chapters/hmm/hmm_filter.ipynb
  41. 3 3
      _build/html/_sources/chapters/hmm/hmm_index.md
  42. 1 1
      _build/html/_sources/chapters/lgssm/lgssm_index.md
  43. 13 7
      _build/html/_sources/chapters/scratch.ipynb
  44. 8 2
      _build/html/_sources/chapters/scratch.md
  45. 748 0
      _build/html/_sources/chapters/ssm/hmm.ipynb
  46. 763 0
      _build/html/_sources/chapters/ssm/inference.ipynb
  47. 589 0
      _build/html/_sources/chapters/ssm/lds.ipynb
  48. 425 0
      _build/html/_sources/chapters/ssm/nlds.ipynb
  49. 1 1
      _build/html/_sources/chapters/ssm/ssm.ipynb
  50. 10 0
      _build/html/_sources/chapters/ssm/ssm_index.md
  51. 285 0
      _build/html/_sources/chapters/ssm/ssm_intro.ipynb
  52. 0 0
      _build/html/_sources/chapters/ssm/ssm_old.ipynb
  53. 1513 0
      _build/html/_sources/old/ssm.ipynb
  54. 1513 0
      _build/html/_sources/old/ssm_old.ipynb
  55. 43 16
      _build/html/bib.html
  56. 43 16
      _build/html/chapters/adf/adf_index.html
  57. 55 16
      _build/html/chapters/blank.html
  58. 43 16
      _build/html/chapters/bnp/bnp_index.html
  59. 43 16
      _build/html/chapters/changepoint/changepoint_index.html
  60. 43 16
      _build/html/chapters/control/control_index.html
  61. 43 16
      _build/html/chapters/ensemble/ensemble_index.html
  62. 43 16
      _build/html/chapters/extended/extended_filter.html
  63. 43 16
      _build/html/chapters/extended/extended_index.html
  64. 43 16
      _build/html/chapters/extended/extended_parallel.html
  65. 43 16
      _build/html/chapters/extended/extended_smoother.html
  66. 43 16
      _build/html/chapters/gp/gp_index.html
  67. 50 39
      _build/html/chapters/hmm/hmm.html
  68. 412 56
      _build/html/chapters/hmm/hmm_filter.html
  69. 59 58
      _build/html/chapters/hmm/hmm_index.html
  70. 46 19
      _build/html/chapters/hmm/hmm_parallel.html
  71. 46 19
      _build/html/chapters/hmm/hmm_sampling.html
  72. 46 19
      _build/html/chapters/hmm/hmm_smoother.html
  73. 46 19
      _build/html/chapters/hmm/hmm_viterbi.html
  74. 43 16
      _build/html/chapters/learning/em.html
  75. 46 54
      _build/html/chapters/learning/learning_index.html
  76. 43 16
      _build/html/chapters/learning/mcmc.html
  77. 43 16
      _build/html/chapters/learning/sgd.html
  78. 43 16
      _build/html/chapters/learning/vb.html
  79. 43 16
      _build/html/chapters/lgssm/kalman_filter.html
  80. 43 16
      _build/html/chapters/lgssm/kalman_parallel.html
  81. 43 16
      _build/html/chapters/lgssm/kalman_sampling.html
  82. 43 16
      _build/html/chapters/lgssm/kalman_smoother.html
  83. 47 47
      _build/html/chapters/lgssm/lgssm_index.html
  84. 43 16
      _build/html/chapters/ode/ode_index.html
  85. 43 16
      _build/html/chapters/pf/pf_index.html
  86. 43 16
      _build/html/chapters/postlin/postlin_index.html
  87. 43 16
      _build/html/chapters/quadrature/quadrature_index.html
  88. 56 23
      _build/html/chapters/scratch.html
  89. 43 16
      _build/html/chapters/smc/smc_index.html
  90. 1177 0
      _build/html/chapters/ssm/hmm.html
  91. 1092 0
      _build/html/chapters/ssm/inference.html
  92. 985 0
      _build/html/chapters/ssm/lds.html
  93. 880 0
      _build/html/chapters/ssm/nlds.html
  94. 99 83
      _build/html/chapters/ssm/ssm.html
  95. 511 0
      _build/html/chapters/ssm/ssm_index.html
  96. 744 0
      _build/html/chapters/ssm/ssm_intro.html
  97. 1806 0
      _build/html/chapters/ssm/ssm_old.html
  98. 43 16
      _build/html/chapters/timeseries/timeseries_index.html
  99. 43 16
      _build/html/chapters/tracking/tracking_index.html
  100. 0 0
      _build/html/chapters/unscented/unscented_filter.html

BIN
_build/.doctrees/chapters/blank.doctree


BIN
_build/.doctrees/chapters/hmm/hmm_filter.doctree


BIN
_build/.doctrees/chapters/hmm/hmm_index.doctree


BIN
_build/.doctrees/chapters/learning/learning_index.doctree


BIN
_build/.doctrees/chapters/lgssm/lgssm_index.doctree


BIN
_build/.doctrees/chapters/scratch.doctree


BIN
_build/.doctrees/chapters/ssm/hmm.doctree


BIN
_build/.doctrees/chapters/ssm/inference.doctree


BIN
_build/.doctrees/chapters/ssm/lds.doctree


BIN
_build/.doctrees/chapters/ssm/nlds.doctree


BIN
_build/.doctrees/chapters/ssm/ssm.doctree


BIN
_build/.doctrees/chapters/ssm/ssm_index.doctree


BIN
_build/.doctrees/chapters/ssm/ssm_intro.doctree


BIN
_build/.doctrees/chapters/ssm/ssm_old.doctree


BIN
_build/.doctrees/environment.pickle


BIN
_build/.doctrees/old/ssm.doctree


BIN
_build/.doctrees/old/ssm_old.doctree


BIN
_build/.doctrees/root.doctree


+ 1 - 1
_build/html/.buildinfo

@@ -1,4 +1,4 @@
 # Sphinx build info version 1
 # Sphinx build info version 1
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done.
-config: 25d7af8a3b2666f61e7e34d94bfa560e
+config: e1b22480b825cc4d693369dcb5b3d1e3
 tags: 645f666f9bcd5a90fca523b33c5a78b7
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 43 - 16
_build/html/README.html

@@ -97,14 +97,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="chapters/ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="chapters/hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="chapters/ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -113,11 +108,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="chapters/hmm/hmm.html">
+    <a class="reference internal" href="chapters/ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="chapters/hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="chapters/hmm/hmm_filter.html">
     <a class="reference internal" href="chapters/hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -148,8 +175,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/lgssm/lgssm_index.html">
   <a class="reference internal" href="chapters/lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -180,8 +207,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/extended/extended_index.html">
   <a class="reference internal" href="chapters/extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -207,8 +234,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/unscented/unscented_index.html">
   <a class="reference internal" href="chapters/unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -259,8 +286,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/learning/learning_index.html">
   <a class="reference internal" href="chapters/learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

BIN
_build/html/_images/hmm_14_0.png


BIN
_build/html/_images/hmm_15_0.png


BIN
_build/html/_images/hmm_15_1.png


BIN
_build/html/_images/hmm_16_1.png


BIN
_build/html/_images/hmm_17_0.png


BIN
_build/html/_images/hmm_18_1.png


BIN
_build/html/_images/inference-problems-tikz.png


BIN
_build/html/_images/inference_10_1.png


BIN
_build/html/_images/inference_11_1.png


BIN
_build/html/_images/inference_16_1.png


BIN
_build/html/_images/inference_17_1.png


BIN
_build/html/_images/inference_9_1.png


BIN
_build/html/_images/lds_7_1.png


BIN
_build/html/_images/ssm_old_15_0.png


BIN
_build/html/_images/ssm_old_16_1.png


BIN
_build/html/_images/ssm_old_21_1.png


BIN
_build/html/_images/ssm_old_30_1.png


BIN
_build/html/_images/ssm_old_31_1.png


+ 22 - 2
_build/html/_sources/chapters/blank.ipynb

@@ -10,14 +10,34 @@
    ]
    ]
   },
   },
   {
   {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "42\n"
+     ]
+    }
+   ],
+   "source": [
+    "print(42)"
+   ]
+  },
+  {
    "cell_type": "markdown",
    "cell_type": "markdown",
    "metadata": {},
    "metadata": {},
    "source": []
    "source": []
   }
   }
  ],
  ],
  "metadata": {
  "metadata": {
+  "interpreter": {
+   "hash": "6407c60499271029b671b4ff687c4ed4626355c45fd34c44476827f4be42c4d7"
+  },
   "kernelspec": {
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3.9.2 ('spyder-dev')",
    "language": "python",
    "language": "python",
    "name": "python3"
    "name": "python3"
   },
   },
@@ -31,7 +51,7 @@
    "name": "python",
    "name": "python",
    "nbconvert_exporter": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
    "pygments_lexer": "ipython3",
-   "version": "3.8.5"
+   "version": "3.9.2"
   }
   }
  },
  },
  "nbformat": 4,
  "nbformat": 4,

+ 508 - 12
_build/html/_sources/chapters/hmm/hmm_filter.ipynb

@@ -4,36 +4,532 @@
    "cell_type": "markdown",
    "cell_type": "markdown",
    "metadata": {},
    "metadata": {},
    "source": [
    "source": [
-    "# HMM filtering (forwards algorithm)\n"
+    "```{math}\n",
+    "\n",
+    "\\newcommand{\\defeq}{\\triangleq}\n",
+    "\\newcommand{\\trans}{{\\mkern-1.5mu\\mathsf{T}}}\n",
+    "\\newcommand{\\transpose}[1]{{#1}^{\\trans}}\n",
+    "\n",
+    "\\newcommand{\\inv}[1]{{#1}^{-1}}\n",
+    "\\DeclareMathOperator{\\dotstar}{\\odot}\n",
+    "\n",
+    "\n",
+    "\\newcommand\\floor[1]{\\lfloor#1\\rfloor}\n",
+    "\n",
+    "\\newcommand{\\real}{\\mathbb{R}}\n",
+    "\n",
+    "% Numbers\n",
+    "\\newcommand{\\vzero}{\\boldsymbol{0}}\n",
+    "\\newcommand{\\vone}{\\boldsymbol{1}}\n",
+    "\n",
+    "% Greek https://www.latex-tutorial.com/symbols/greek-alphabet/\n",
+    "\\newcommand{\\valpha}{\\boldsymbol{\\alpha}}\n",
+    "\\newcommand{\\vbeta}{\\boldsymbol{\\beta}}\n",
+    "\\newcommand{\\vchi}{\\boldsymbol{\\chi}}\n",
+    "\\newcommand{\\vdelta}{\\boldsymbol{\\delta}}\n",
+    "\\newcommand{\\vDelta}{\\boldsymbol{\\Delta}}\n",
+    "\\newcommand{\\vepsilon}{\\boldsymbol{\\epsilon}}\n",
+    "\\newcommand{\\vzeta}{\\boldsymbol{\\zeta}}\n",
+    "\\newcommand{\\vXi}{\\boldsymbol{\\Xi}}\n",
+    "\\newcommand{\\vell}{\\boldsymbol{\\ell}}\n",
+    "\\newcommand{\\veta}{\\boldsymbol{\\eta}}\n",
+    "%\\newcommand{\\vEta}{\\boldsymbol{\\Eta}}\n",
+    "\\newcommand{\\vgamma}{\\boldsymbol{\\gamma}}\n",
+    "\\newcommand{\\vGamma}{\\boldsymbol{\\Gamma}}\n",
+    "\\newcommand{\\vmu}{\\boldsymbol{\\mu}}\n",
+    "\\newcommand{\\vmut}{\\boldsymbol{\\tilde{\\mu}}}\n",
+    "\\newcommand{\\vnu}{\\boldsymbol{\\nu}}\n",
+    "\\newcommand{\\vkappa}{\\boldsymbol{\\kappa}}\n",
+    "\\newcommand{\\vlambda}{\\boldsymbol{\\lambda}}\n",
+    "\\newcommand{\\vLambda}{\\boldsymbol{\\Lambda}}\n",
+    "\\newcommand{\\vLambdaBar}{\\overline{\\vLambda}}\n",
+    "%\\newcommand{\\vnu}{\\boldsymbol{\\nu}}\n",
+    "\\newcommand{\\vomega}{\\boldsymbol{\\omega}}\n",
+    "\\newcommand{\\vOmega}{\\boldsymbol{\\Omega}}\n",
+    "\\newcommand{\\vphi}{\\boldsymbol{\\phi}}\n",
+    "\\newcommand{\\vvarphi}{\\boldsymbol{\\varphi}}\n",
+    "\\newcommand{\\vPhi}{\\boldsymbol{\\Phi}}\n",
+    "\\newcommand{\\vpi}{\\boldsymbol{\\pi}}\n",
+    "\\newcommand{\\vPi}{\\boldsymbol{\\Pi}}\n",
+    "\\newcommand{\\vpsi}{\\boldsymbol{\\psi}}\n",
+    "\\newcommand{\\vPsi}{\\boldsymbol{\\Psi}}\n",
+    "\\newcommand{\\vrho}{\\boldsymbol{\\rho}}\n",
+    "\\newcommand{\\vtheta}{\\boldsymbol{\\theta}}\n",
+    "\\newcommand{\\vthetat}{\\boldsymbol{\\tilde{\\theta}}}\n",
+    "\\newcommand{\\vTheta}{\\boldsymbol{\\Theta}}\n",
+    "\\newcommand{\\vsigma}{\\boldsymbol{\\sigma}}\n",
+    "\\newcommand{\\vSigma}{\\boldsymbol{\\Sigma}}\n",
+    "\\newcommand{\\vSigmat}{\\boldsymbol{\\tilde{\\Sigma}}}\n",
+    "\\newcommand{\\vsigmoid}{\\vsigma}\n",
+    "\\newcommand{\\vtau}{\\boldsymbol{\\tau}}\n",
+    "\\newcommand{\\vxi}{\\boldsymbol{\\xi}}\n",
+    "\n",
+    "\n",
+    "% Lower Roman (Vectors)\n",
+    "\\newcommand{\\va}{\\mathbf{a}}\n",
+    "\\newcommand{\\vb}{\\mathbf{b}}\n",
+    "\\newcommand{\\vBt}{\\mathbf{\\tilde{B}}}\n",
+    "\\newcommand{\\vc}{\\mathbf{c}}\n",
+    "\\newcommand{\\vct}{\\mathbf{\\tilde{c}}}\n",
+    "\\newcommand{\\vd}{\\mathbf{d}}\n",
+    "\\newcommand{\\ve}{\\mathbf{e}}\n",
+    "\\newcommand{\\vf}{\\mathbf{f}}\n",
+    "\\newcommand{\\vg}{\\mathbf{g}}\n",
+    "\\newcommand{\\vh}{\\mathbf{h}}\n",
+    "%\\newcommand{\\myvh}{\\mathbf{h}}\n",
+    "\\newcommand{\\vi}{\\mathbf{i}}\n",
+    "\\newcommand{\\vj}{\\mathbf{j}}\n",
+    "\\newcommand{\\vk}{\\mathbf{k}}\n",
+    "\\newcommand{\\vl}{\\mathbf{l}}\n",
+    "\\newcommand{\\vm}{\\mathbf{m}}\n",
+    "\\newcommand{\\vn}{\\mathbf{n}}\n",
+    "\\newcommand{\\vo}{\\mathbf{o}}\n",
+    "\\newcommand{\\vp}{\\mathbf{p}}\n",
+    "\\newcommand{\\vq}{\\mathbf{q}}\n",
+    "\\newcommand{\\vr}{\\mathbf{r}}\n",
+    "\\newcommand{\\vs}{\\mathbf{s}}\n",
+    "\\newcommand{\\vt}{\\mathbf{t}}\n",
+    "\\newcommand{\\vu}{\\mathbf{u}}\n",
+    "\\newcommand{\\vv}{\\mathbf{v}}\n",
+    "\\newcommand{\\vw}{\\mathbf{w}}\n",
+    "\\newcommand{\\vws}{\\vw_s}\n",
+    "\\newcommand{\\vwt}{\\mathbf{\\tilde{w}}}\n",
+    "\\newcommand{\\vWt}{\\mathbf{\\tilde{W}}}\n",
+    "\\newcommand{\\vwh}{\\hat{\\vw}}\n",
+    "\\newcommand{\\vx}{\\mathbf{x}}\n",
+    "%\\newcommand{\\vx}{\\mathbf{x}}\n",
+    "\\newcommand{\\vxt}{\\mathbf{\\tilde{x}}}\n",
+    "\\newcommand{\\vy}{\\mathbf{y}}\n",
+    "\\newcommand{\\vyt}{\\mathbf{\\tilde{y}}}\n",
+    "\\newcommand{\\vz}{\\mathbf{z}}\n",
+    "%\\newcommand{\\vzt}{\\mathbf{\\tilde{z}}}\n",
+    "\n",
+    "\n",
+    "% Upper Roman (Matrices)\n",
+    "\\newcommand{\\vA}{\\mathbf{A}}\n",
+    "\\newcommand{\\vB}{\\mathbf{B}}\n",
+    "\\newcommand{\\vC}{\\mathbf{C}}\n",
+    "\\newcommand{\\vD}{\\mathbf{D}}\n",
+    "\\newcommand{\\vE}{\\mathbf{E}}\n",
+    "\\newcommand{\\vF}{\\mathbf{F}}\n",
+    "\\newcommand{\\vG}{\\mathbf{G}}\n",
+    "\\newcommand{\\vH}{\\mathbf{H}}\n",
+    "\\newcommand{\\vI}{\\mathbf{I}}\n",
+    "\\newcommand{\\vJ}{\\mathbf{J}}\n",
+    "\\newcommand{\\vK}{\\mathbf{K}}\n",
+    "\\newcommand{\\vL}{\\mathbf{L}}\n",
+    "\\newcommand{\\vM}{\\mathbf{M}}\n",
+    "\\newcommand{\\vMt}{\\mathbf{\\tilde{M}}}\n",
+    "\\newcommand{\\vN}{\\mathbf{N}}\n",
+    "\\newcommand{\\vO}{\\mathbf{O}}\n",
+    "\\newcommand{\\vP}{\\mathbf{P}}\n",
+    "\\newcommand{\\vQ}{\\mathbf{Q}}\n",
+    "\\newcommand{\\vR}{\\mathbf{R}}\n",
+    "\\newcommand{\\vS}{\\mathbf{S}}\n",
+    "\\newcommand{\\vT}{\\mathbf{T}}\n",
+    "\\newcommand{\\vU}{\\mathbf{U}}\n",
+    "\\newcommand{\\vV}{\\mathbf{V}}\n",
+    "\\newcommand{\\vW}{\\mathbf{W}}\n",
+    "\\newcommand{\\vX}{\\mathbf{X}}\n",
+    "%\\newcommand{\\vXs}{\\vX_{\\vs}}\n",
+    "\\newcommand{\\vXs}{\\vX_{s}}\n",
+    "\\newcommand{\\vXt}{\\mathbf{\\tilde{X}}}\n",
+    "\\newcommand{\\vY}{\\mathbf{Y}}\n",
+    "\\newcommand{\\vZ}{\\mathbf{Z}}\n",
+    "\\newcommand{\\vZt}{\\mathbf{\\tilde{Z}}}\n",
+    "\\newcommand{\\vzt}{\\mathbf{\\tilde{z}}}\n",
+    "\n",
+    "\n",
+    "%%%%\n",
+    "\\newcommand{\\hidden}{\\vz}\n",
+    "\\newcommand{\\hid}{\\hidden}\n",
+    "\\newcommand{\\observed}{\\vy}\n",
+    "\\newcommand{\\obs}{\\observed}\n",
+    "\\newcommand{\\inputs}{\\vu}\n",
+    "\\newcommand{\\input}{\\inputs}\n",
+    "\n",
+    "\\newcommand{\\hmmTrans}{\\vA}\n",
+    "\\newcommand{\\hmmObs}{\\vB}\n",
+    "\\newcommand{\\hmmInit}{\\vpi}\n",
+    "\n",
+    "\n",
+    "\\newcommand{\\ldsDyn}{\\vA}\n",
+    "\\newcommand{\\ldsObs}{\\vC}\n",
+    "\\newcommand{\\ldsDynIn}{\\vB}\n",
+    "\\newcommand{\\ldsObsIn}{\\vD}\n",
+    "\\newcommand{\\ldsDynNoise}{\\vQ}\n",
+    "\\newcommand{\\ldsObsNoise}{\\vR}\n",
+    "\n",
+    "\\newcommand{\\ssmDynFn}{f}\n",
+    "\\newcommand{\\ssmObsFn}{h}\n",
+    "\n",
+    "\n",
+    "%%%\n",
+    "\\newcommand{\\gauss}{\\mathcal{N}}\n",
+    "\n",
+    "\\newcommand{\\diag}{\\mathrm{diag}}\n",
+    "```\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": null,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "# meta-data does not work yet in VScode\n",
+    "# https://github.com/microsoft/vscode-jupyter/issues/1121\n",
+    "\n",
+    "{\n",
+    "    \"tags\": [\n",
+    "        \"hide-cell\"\n",
+    "    ]\n",
+    "}\n",
+    "\n",
+    "\n",
+    "### Install necessary libraries\n",
+    "\n",
+    "try:\n",
+    "    import jax\n",
+    "except:\n",
+    "    # For cuda version, see https://github.com/google/jax#installation\n",
+    "    %pip install --upgrade \"jax[cpu]\" \n",
+    "    import jax\n",
+    "\n",
+    "try:\n",
+    "    import distrax\n",
+    "except:\n",
+    "    %pip install --upgrade  distrax\n",
+    "    import distrax\n",
+    "\n",
+    "try:\n",
+    "    import jsl\n",
+    "except:\n",
+    "    %pip install git+https://github.com/probml/jsl\n",
+    "    import jsl\n",
+    "\n",
+    "#try:\n",
+    "#    import ssm_jax\n",
+    "##except:\n",
+    "#    %pip install git+https://github.com/probml/ssm-jax\n",
+    "#    import ssm_jax\n",
+    "\n",
+    "try:\n",
+    "    import rich\n",
+    "except:\n",
+    "    %pip install rich\n",
+    "    import rich\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 4,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "{\n",
+    "    \"tags\": [\n",
+    "        \"hide-cell\"\n",
+    "    ]\n",
+    "}\n",
+    "\n",
+    "\n",
+    "### Import standard libraries\n",
+    "\n",
+    "import abc\n",
+    "from dataclasses import dataclass\n",
+    "import functools\n",
+    "import itertools\n",
+    "\n",
+    "from typing import Any, Callable, NamedTuple, Optional, Union, Tuple\n",
+    "\n",
+    "import matplotlib.pyplot as plt\n",
+    "import numpy as np\n",
+    "\n",
+    "\n",
+    "import jax\n",
+    "import jax.numpy as jnp\n",
+    "from jax import lax, vmap, jit, grad\n",
+    "from jax.scipy.special import logit\n",
+    "from jax.nn import softmax\n",
+    "from functools import partial\n",
+    "from jax.random import PRNGKey, split\n",
+    "\n",
+    "import inspect\n",
+    "import inspect as py_inspect\n",
+    "import rich\n",
+    "from rich import inspect as r_inspect\n",
+    "from rich import print as r_print\n",
+    "\n",
+    "def print_source(fname):\n",
+    "    r_print(py_inspect.getsource(fname))"
    ]
    ]
   },
   },
   {
   {
    "cell_type": "markdown",
    "cell_type": "markdown",
    "metadata": {},
    "metadata": {},
    "source": [
    "source": [
+    "(sec:forwards)=\n",
+    "# HMM filtering (forwards algorithm)\n",
+    "\n",
+    "\n",
+    "The  **Bayes filter** is an algorithm for recursively computing\n",
+    "the belief state\n",
+    "$p(\\hidden_t|\\obs_{1:t})$ given\n",
+    "the prior belief from the previous step,\n",
+    "$p(\\hidden_{t-1}|\\obs_{1:t-1})$,\n",
+    "the new observation $\\obs_t$,\n",
+    "and the model.\n",
+    "This can be done using **sequential Bayesian updating**.\n",
+    "For a dynamical model, this reduces to the\n",
+    "**predict-update** cycle described below.\n",
+    "\n",
+    "\n",
+    "The **prediction step** is just the **Chapman-Kolmogorov equation**:\n",
     "```{math}\n",
     "```{math}\n",
+    "p(\\hidden_t|\\obs_{1:t-1})\n",
+    "= \\int p(\\hidden_t|\\hidden_{t-1}) p(\\hidden_{t-1}|\\obs_{1:t-1}) d\\hidden_{t-1}\n",
+    "```\n",
+    "The prediction step computes\n",
+    "the one-step-ahead predictive distribution\n",
+    "for the latent state, which updates\n",
+    "the posterior from the previous time step into the prior\n",
+    "for the current step.\n",
     "\n",
     "\n",
-    "\\newcommand\\floor[1]{\\lfloor#1\\rfloor}\n",
-    "```\n"
+    "\n",
+    "The **update step**\n",
+    "is just Bayes rule:\n",
+    "```{math}\n",
+    "p(\\hidden_t|\\obs_{1:t}) = \\frac{1}{Z_t}\n",
+    "p(\\obs_t|\\hidden_t) p(\\hidden_t|\\obs_{1:t-1})\n",
+    "```\n",
+    "where the normalization constant is\n",
+    "```{math}\n",
+    "Z_t = \\int p(\\obs_t|\\hidden_t) p(\\hidden_t|\\obs_{1:t-1}) d\\hidden_{t}\n",
+    "= p(\\obs_t|\\obs_{1:t-1})\n",
+    "```\n",
+    "\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "\n",
+    "When the latent states $\\hidden_t$ are discrete, as in HMM,\n",
+    "the above integrals become sums.\n",
+    "In particular, suppose we define\n",
+    "the belief state as $\\alpha_t(j) \\defeq p(\\hidden_t=j|\\obs_{1:t})$,\n",
+    "the local evidence as $\\lambda_t(j) \\defeq p(\\obs_t|\\hidden_t=j)$,\n",
+    "and the transition matrix\n",
+    "$A(i,j)  = p(\\hidden_t=j|\\hidden_{t-1}=i)$.\n",
+    "Then the predict step becomes\n",
+    "```{math}\n",
+    ":label: eqn:predictiveHMM\n",
+    "\\alpha_{t|t-1}(j) \\defeq p(\\hidden_t=j|\\obs_{1:t-1})\n",
+    " = \\sum_i \\alpha_{t-1}(i) A(i,j)\n",
+    "```\n",
+    "and the update step becomes\n",
+    "```{math}\n",
+    ":label: eqn:fwdsEqn\n",
+    "\\alpha_t(j)\n",
+    "= \\frac{1}{Z_t} \\lambda_t(j) \\alpha_{t|t-1}(j)\n",
+    "= \\frac{1}{Z_t} \\lambda_t(j) \\left[\\sum_i \\alpha_{t-1}(i) A(i,j)  \\right]\n",
+    "```\n",
+    "where\n",
+    "the  normalization constant for each time step is given by\n",
+    "```{math}\n",
+    ":label: eqn:HMMZ\n",
+    "\\begin{align}\n",
+    "Z_t \\defeq p(\\obs_t|\\obs_{1:t-1})\n",
+    "&=  \\sum_{j=1}^K p(\\obs_t|\\hidden_t=j)  p(\\hidden_t=j|\\obs_{1:t-1}) \\\\\n",
+    "&=  \\sum_{j=1}^K \\lambda_t(j) \\alpha_{t|t-1}(j)\n",
+    "\\end{align}\n",
+    "```\n",
+    "\n",
+    "Since all the quantities are finite length vectors and matrices,\n",
+    "we can write the update equation\n",
+    "in matrix-vector notation as follows:\n",
+    "```{math}\n",
+    "\\valpha_t =\\text{normalize}\\left(\n",
+    "\\vlambda_t \\dotstar  (\\vA^{\\trans} \\valpha_{t-1}) \\right)\n",
+    "\\label{eqn:fwdsAlgoMatrixForm}\n",
+    "```\n",
+    "where $\\dotstar$ represents\n",
+    "elementwise vector multiplication,\n",
+    "and the $\\text{normalize}$ function just ensures its argument sums to one.\n",
+    "\n",
+    "In {ref}(sec:casino-inference)\n",
+    "we illustrate\n",
+    "filtering for the casino HMM,\n",
+    "applied to a random sequence $\\obs_{1:T}$ of length $T=300$.\n",
+    "In blue, we plot the probability that the dice is in the loaded (vs fair) state,\n",
+    "based on the evidence seen so far.\n",
+    "The gray bars indicate time intervals during which the generative\n",
+    "process actually switched to the loaded dice.\n",
+    "We see that the probability generally increases in the right places.\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "Here is a JAX implementation of the forwards algorithm."
    ]
    ]
   },
   },
   {
   {
    "cell_type": "code",
    "cell_type": "code",
-   "execution_count": null,
-   "metadata": {
-    "vscode": {
-     "languageId": "plaintext"
+   "execution_count": 5,
+   "metadata": {},
+   "outputs": [
+    {
+     "data": {
+      "text/html": [
+       "<pre style=\"white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace\">@jit\n",
+       "def <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">hmm_forwards_jax</span><span style=\"font-weight: bold\">(</span>params, obs_seq, <span style=\"color: #808000; text-decoration-color: #808000\">length</span>=<span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span><span style=\"font-weight: bold\">)</span>:\n",
+       "    <span style=\"color: #008000; text-decoration-color: #008000\">''</span>'\n",
+       "    Calculates a belief state\n",
+       "\n",
+       "    Parameters\n",
+       "    ----------\n",
+       "    params : HMMJax\n",
+       "        Hidden Markov Model\n",
+       "\n",
+       "    obs_seq: <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">array</span><span style=\"font-weight: bold\">(</span>seq_len<span style=\"font-weight: bold\">)</span>\n",
+       "        History of observable events\n",
+       "\n",
+       "    Returns\n",
+       "    -------\n",
+       "    * float\n",
+       "        The loglikelihood giving <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">log</span><span style=\"font-weight: bold\">(</span><span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">p</span><span style=\"font-weight: bold\">(</span>x|model<span style=\"font-weight: bold\">))</span>\n",
+       "\n",
+       "    * <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">array</span><span style=\"font-weight: bold\">(</span>seq_len, n_hidden<span style=\"font-weight: bold\">)</span> :\n",
+       "        All alpha values found for each sample\n",
+       "    <span style=\"color: #008000; text-decoration-color: #008000\">''</span>'\n",
+       "    seq_len = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">len</span><span style=\"font-weight: bold\">(</span>obs_seq<span style=\"font-weight: bold\">)</span>\n",
+       "\n",
+       "    if length is <span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span>:\n",
+       "        length = seq_len\n",
+       "\n",
+       "    trans_mat, obs_mat, init_dist = params.trans_mat, params.obs_mat, params.init_dist\n",
+       "\n",
+       "    trans_mat = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.array</span><span style=\"font-weight: bold\">(</span>trans_mat<span style=\"font-weight: bold\">)</span>\n",
+       "    obs_mat = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.array</span><span style=\"font-weight: bold\">(</span>obs_mat<span style=\"font-weight: bold\">)</span>\n",
+       "    init_dist = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.array</span><span style=\"font-weight: bold\">(</span>init_dist<span style=\"font-weight: bold\">)</span>\n",
+       "\n",
+       "    n_states, n_obs = obs_mat.shape\n",
+       "\n",
+       "    def <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">scan_fn</span><span style=\"font-weight: bold\">(</span>carry, t<span style=\"font-weight: bold\">)</span>:\n",
+       "        <span style=\"font-weight: bold\">(</span>alpha_prev, log_ll_prev<span style=\"font-weight: bold\">)</span> = carry\n",
+       "        alpha_n = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.where</span><span style=\"font-weight: bold\">(</span>t &lt; length,\n",
+       "                            obs_mat<span style=\"font-weight: bold\">[</span>:, obs_seq<span style=\"font-weight: bold\">]</span> * <span style=\"font-weight: bold\">(</span>alpha_prev<span style=\"font-weight: bold\">[</span>:, <span style=\"color: #800080; text-decoration-color: #800080; font-style: italic\">None</span><span style=\"font-weight: bold\">]</span> * \n",
+       "trans_mat<span style=\"font-weight: bold\">)</span><span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">.sum</span><span style=\"font-weight: bold\">(</span><span style=\"color: #808000; text-decoration-color: #808000\">axis</span>=<span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span><span style=\"font-weight: bold\">)</span>,\n",
+       "                            <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.zeros_like</span><span style=\"font-weight: bold\">(</span>alpha_prev<span style=\"font-weight: bold\">))</span>\n",
+       "\n",
+       "        alpha_n, cn = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">normalize</span><span style=\"font-weight: bold\">(</span>alpha_n<span style=\"font-weight: bold\">)</span>\n",
+       "        carry = <span style=\"font-weight: bold\">(</span>alpha_n, <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.log</span><span style=\"font-weight: bold\">(</span>cn<span style=\"font-weight: bold\">)</span> + log_ll_prev<span style=\"font-weight: bold\">)</span>\n",
+       "\n",
+       "        return carry, alpha_n\n",
+       "\n",
+       "    # initial belief state\n",
+       "    alpha_0, c0 = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">normalize</span><span style=\"font-weight: bold\">(</span>init_dist * obs_mat<span style=\"font-weight: bold\">[</span>:, obs_seq<span style=\"font-weight: bold\">[</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">0</span><span style=\"font-weight: bold\">]])</span>\n",
+       "\n",
+       "    # setup scan loop\n",
+       "    init_state = <span style=\"font-weight: bold\">(</span>alpha_0, <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.log</span><span style=\"font-weight: bold\">(</span>c0<span style=\"font-weight: bold\">))</span>\n",
+       "    ts = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.arange</span><span style=\"font-weight: bold\">(</span><span style=\"color: #008080; text-decoration-color: #008080; font-weight: bold\">1</span>, seq_len<span style=\"font-weight: bold\">)</span>\n",
+       "    carry, alpha_hist = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">lax.scan</span><span style=\"font-weight: bold\">(</span>scan_fn, init_state, ts<span style=\"font-weight: bold\">)</span>\n",
+       "\n",
+       "    # post-process\n",
+       "    alpha_hist = <span style=\"color: #800080; text-decoration-color: #800080; font-weight: bold\">jnp.vstack</span><span style=\"font-weight: bold\">()</span>\n",
+       "    <span style=\"font-weight: bold\">(</span>alpha_final, log_ll<span style=\"font-weight: bold\">)</span> = carry\n",
+       "    return log_ll, alpha_hist\n",
+       "\n",
+       "</pre>\n"
+      ],
+      "text/plain": [
+       "@jit\n",
+       "def \u001b[1;35mhmm_forwards_jax\u001b[0m\u001b[1m(\u001b[0mparams, obs_seq, \u001b[33mlength\u001b[0m=\u001b[3;35mNone\u001b[0m\u001b[1m)\u001b[0m:\n",
+       "    \u001b[32m''\u001b[0m'\n",
+       "    Calculates a belief state\n",
+       "\n",
+       "    Parameters\n",
+       "    ----------\n",
+       "    params : HMMJax\n",
+       "        Hidden Markov Model\n",
+       "\n",
+       "    obs_seq: \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0mseq_len\u001b[1m)\u001b[0m\n",
+       "        History of observable events\n",
+       "\n",
+       "    Returns\n",
+       "    -------\n",
+       "    * float\n",
+       "        The loglikelihood giving \u001b[1;35mlog\u001b[0m\u001b[1m(\u001b[0m\u001b[1;35mp\u001b[0m\u001b[1m(\u001b[0mx|model\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m\n",
+       "\n",
+       "    * \u001b[1;35marray\u001b[0m\u001b[1m(\u001b[0mseq_len, n_hidden\u001b[1m)\u001b[0m :\n",
+       "        All alpha values found for each sample\n",
+       "    \u001b[32m''\u001b[0m'\n",
+       "    seq_len = \u001b[1;35mlen\u001b[0m\u001b[1m(\u001b[0mobs_seq\u001b[1m)\u001b[0m\n",
+       "\n",
+       "    if length is \u001b[3;35mNone\u001b[0m:\n",
+       "        length = seq_len\n",
+       "\n",
+       "    trans_mat, obs_mat, init_dist = params.trans_mat, params.obs_mat, params.init_dist\n",
+       "\n",
+       "    trans_mat = \u001b[1;35mjnp.array\u001b[0m\u001b[1m(\u001b[0mtrans_mat\u001b[1m)\u001b[0m\n",
+       "    obs_mat = \u001b[1;35mjnp.array\u001b[0m\u001b[1m(\u001b[0mobs_mat\u001b[1m)\u001b[0m\n",
+       "    init_dist = \u001b[1;35mjnp.array\u001b[0m\u001b[1m(\u001b[0minit_dist\u001b[1m)\u001b[0m\n",
+       "\n",
+       "    n_states, n_obs = obs_mat.shape\n",
+       "\n",
+       "    def \u001b[1;35mscan_fn\u001b[0m\u001b[1m(\u001b[0mcarry, t\u001b[1m)\u001b[0m:\n",
+       "        \u001b[1m(\u001b[0malpha_prev, log_ll_prev\u001b[1m)\u001b[0m = carry\n",
+       "        alpha_n = \u001b[1;35mjnp.where\u001b[0m\u001b[1m(\u001b[0mt < length,\n",
+       "                            obs_mat\u001b[1m[\u001b[0m:, obs_seq\u001b[1m]\u001b[0m * \u001b[1m(\u001b[0malpha_prev\u001b[1m[\u001b[0m:, \u001b[3;35mNone\u001b[0m\u001b[1m]\u001b[0m * \n",
+       "trans_mat\u001b[1m)\u001b[0m\u001b[1;35m.sum\u001b[0m\u001b[1m(\u001b[0m\u001b[33maxis\u001b[0m=\u001b[1;36m0\u001b[0m\u001b[1m)\u001b[0m,\n",
+       "                            \u001b[1;35mjnp.zeros_like\u001b[0m\u001b[1m(\u001b[0malpha_prev\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m\n",
+       "\n",
+       "        alpha_n, cn = \u001b[1;35mnormalize\u001b[0m\u001b[1m(\u001b[0malpha_n\u001b[1m)\u001b[0m\n",
+       "        carry = \u001b[1m(\u001b[0malpha_n, \u001b[1;35mjnp.log\u001b[0m\u001b[1m(\u001b[0mcn\u001b[1m)\u001b[0m + log_ll_prev\u001b[1m)\u001b[0m\n",
+       "\n",
+       "        return carry, alpha_n\n",
+       "\n",
+       "    # initial belief state\n",
+       "    alpha_0, c0 = \u001b[1;35mnormalize\u001b[0m\u001b[1m(\u001b[0minit_dist * obs_mat\u001b[1m[\u001b[0m:, obs_seq\u001b[1m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1m]\u001b[0m\u001b[1m]\u001b[0m\u001b[1m)\u001b[0m\n",
+       "\n",
+       "    # setup scan loop\n",
+       "    init_state = \u001b[1m(\u001b[0malpha_0, \u001b[1;35mjnp.log\u001b[0m\u001b[1m(\u001b[0mc0\u001b[1m)\u001b[0m\u001b[1m)\u001b[0m\n",
+       "    ts = \u001b[1;35mjnp.arange\u001b[0m\u001b[1m(\u001b[0m\u001b[1;36m1\u001b[0m, seq_len\u001b[1m)\u001b[0m\n",
+       "    carry, alpha_hist = \u001b[1;35mlax.scan\u001b[0m\u001b[1m(\u001b[0mscan_fn, init_state, ts\u001b[1m)\u001b[0m\n",
+       "\n",
+       "    # post-process\n",
+       "    alpha_hist = \u001b[1;35mjnp.vstack\u001b[0m\u001b[1m(\u001b[0m\u001b[1m)\u001b[0m\n",
+       "    \u001b[1m(\u001b[0malpha_final, log_ll\u001b[1m)\u001b[0m = carry\n",
+       "    return log_ll, alpha_hist\n",
+       "\n"
+      ]
+     },
+     "metadata": {},
+     "output_type": "display_data"
     }
     }
-   },
-   "outputs": [],
+   ],
    "source": [
    "source": [
-    "print(42)"
+    "import jsl.hmm.hmm_lib as hmm_lib\n",
+    "print_source(hmm_lib.hmm_forwards_jax)\n",
+    "#https://github.com/probml/JSL/blob/main/jsl/hmm/hmm_lib.py#L189\n",
+    "\n"
    ]
    ]
   }
   }
  ],
  ],
  "metadata": {
  "metadata": {
+  "interpreter": {
+   "hash": "6407c60499271029b671b4ff687c4ed4626355c45fd34c44476827f4be42c4d7"
+  },
   "kernelspec": {
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3.9.2 ('spyder-dev')",
    "language": "python",
    "language": "python",
    "name": "python3"
    "name": "python3"
   },
   },
@@ -47,7 +543,7 @@
    "name": "python",
    "name": "python",
    "nbconvert_exporter": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
    "pygments_lexer": "ipython3",
-   "version": "3.8.5"
+   "version": "3.9.2"
   }
   }
  },
  },
  "nbformat": 4,
  "nbformat": 4,

+ 3 - 3
_build/html/_sources/chapters/hmm/hmm_index.md

@@ -1,10 +1,10 @@
 (ch:hmm)=
 (ch:hmm)=
-# Inference in discrete SSMs 
+# Hidden Markov Models 
 
 
-This chapter covers inference in HMMs.
+This chapter discusses Hidden Markov Models (HMMs), which are state space models
+in which the latent state $z_t \in \{1,\ldots,K\}$ is discrete.
 
 
 
 
 ```{tableofcontents}
 ```{tableofcontents}
 ```
 ```
 
 
-See (sec:casino-ex).

+ 1 - 1
_build/html/_sources/chapters/lgssm/lgssm_index.md

@@ -1,7 +1,7 @@
 
 
 
 
 (ch:lgssm)=
 (ch:lgssm)=
-# Inference in linear-Gaussian SSMs
+# Linear-Gaussian SSMs
 
 
 ```{tableofcontents}
 ```{tableofcontents}
 ```
 ```

+ 13 - 7
_build/html/_sources/chapters/scratch.ipynb

@@ -2,7 +2,7 @@
  "cells": [
  "cells": [
   {
   {
    "cell_type": "markdown",
    "cell_type": "markdown",
-   "id": "be3342e1",
+   "id": "d79c3788",
    "metadata": {},
    "metadata": {},
    "source": [
    "source": [
     "(ch:intro)=\n",
     "(ch:intro)=\n",
@@ -28,7 +28,7 @@
   {
   {
    "cell_type": "code",
    "cell_type": "code",
    "execution_count": 1,
    "execution_count": 1,
-   "id": "a1ee3323",
+   "id": "28c55864",
    "metadata": {},
    "metadata": {},
    "outputs": [],
    "outputs": [],
    "source": [
    "source": [
@@ -41,7 +41,7 @@
   {
   {
    "cell_type": "code",
    "cell_type": "code",
    "execution_count": 2,
    "execution_count": 2,
-   "id": "0de511fb",
+   "id": "b0bc0f28",
    "metadata": {},
    "metadata": {},
    "outputs": [
    "outputs": [
     {
     {
@@ -84,7 +84,7 @@
   {
   {
    "cell_type": "code",
    "cell_type": "code",
    "execution_count": 3,
    "execution_count": 3,
-   "id": "aa053ad3",
+   "id": "902c33c0",
    "metadata": {},
    "metadata": {},
    "outputs": [
    "outputs": [
     {
     {
@@ -113,7 +113,7 @@
   },
   },
   {
   {
    "cell_type": "markdown",
    "cell_type": "markdown",
-   "id": "55d95c95",
+   "id": "945c9164",
    "metadata": {},
    "metadata": {},
    "source": [
    "source": [
     "## Images\n",
     "## Images\n",
@@ -135,18 +135,24 @@
     "```\n",
     "```\n",
     "\n",
     "\n",
     "```{figure} /figures/cat_dog.jpg\n",
     "```{figure} /figures/cat_dog.jpg\n",
-    ":scale: 50%\n",
+    ":height: 300px\n",
     ":name: cat_dog2\n",
     ":name: cat_dog2\n",
     "\n",
     "\n",
     "Another photo of a cat and a dog.\n",
     "Another photo of a cat and a dog.\n",
     "```\n",
     "```\n",
     "\n",
     "\n",
-    "In {numref}`Figure %s <cat_dog>` we show catdog.\n",
+    "In {numref}`cat_dog` \n",
+    "we show catdog.\n",
     "In {numref}`Figure %s <cat_dog2>` we show catdog2, its twin.\n",
     "In {numref}`Figure %s <cat_dog2>` we show catdog2, its twin.\n",
     "\n",
     "\n",
+    "```{note}\n",
+    "I am a useful note!\n",
+    "```\n",
     "\n",
     "\n",
     "## Math\n",
     "## Math\n",
     "\n",
     "\n",
+    "Here is $\\N=10$ and blah. $\\floor{42.3}= 42$.\n",
+    "\n",
     "We have $E= mc^2$, and also\n",
     "We have $E= mc^2$, and also\n",
     "\n",
     "\n",
     "```{math}\n",
     "```{math}\n",

+ 8 - 2
_build/html/_sources/chapters/scratch.md

@@ -86,18 +86,24 @@ A photo of a cat and a dog.
 ```
 ```
 
 
 ```{figure} /figures/cat_dog.jpg
 ```{figure} /figures/cat_dog.jpg
-:scale: 50%
+:height: 300px
 :name: cat_dog2
 :name: cat_dog2
 
 
 Another photo of a cat and a dog.
 Another photo of a cat and a dog.
 ```
 ```
 
 
-In {numref}`Figure %s <cat_dog>` we show catdog.
+In {numref}`cat_dog` 
+we show catdog.
 In {numref}`Figure %s <cat_dog2>` we show catdog2, its twin.
 In {numref}`Figure %s <cat_dog2>` we show catdog2, its twin.
 
 
+```{note}
+I am a useful note!
+```
 
 
 ## Math
 ## Math
 
 
+Here is $\N=10$ and blah. $\floor{42.3}= 42$.
+
 We have $E= mc^2$, and also
 We have $E= mc^2$, and also
 
 
 ```{math}
 ```{math}

File diff suppressed because it is too large
+ 748 - 0
_build/html/_sources/chapters/ssm/hmm.ipynb


File diff suppressed because it is too large
+ 763 - 0
_build/html/_sources/chapters/ssm/inference.ipynb


File diff suppressed because it is too large
+ 589 - 0
_build/html/_sources/chapters/ssm/lds.ipynb


+ 425 - 0
_build/html/_sources/chapters/ssm/nlds.ipynb

@@ -0,0 +1,425 @@
+{
+ "cells": [
+  {
+   "cell_type": "code",
+   "execution_count": 1,
+   "metadata": {},
+   "outputs": [
+    {
+     "name": "stdout",
+     "output_type": "stream",
+     "text": [
+      "Requirement already satisfied: distrax in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (0.0.1)\n",
+      "Collecting distrax\n",
+      "  Downloading distrax-0.1.2-py3-none-any.whl (272 kB)\n",
+      "\u001b[K     |████████████████████████████████| 272 kB 6.9 MB/s eta 0:00:01\n",
+      "\u001b[?25hRequirement already satisfied: jax>=0.1.55 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from distrax) (0.2.11)\n",
+      "Requirement already satisfied: absl-py>=0.9.0 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from distrax) (0.12.0)\n",
+      "Requirement already satisfied: chex>=0.0.7 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from distrax) (0.0.8)\n",
+      "Requirement already satisfied: jaxlib>=0.1.67 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from distrax) (0.1.70)\n",
+      "Requirement already satisfied: numpy>=1.18.0 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from distrax) (1.19.5)\n",
+      "Collecting tensorflow-probability>=0.15.0\n",
+      "  Using cached tensorflow_probability-0.16.0-py2.py3-none-any.whl (6.3 MB)\n",
+      "Requirement already satisfied: six in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from absl-py>=0.9.0->distrax) (1.15.0)\n",
+      "Requirement already satisfied: dm-tree>=0.1.5 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from chex>=0.0.7->distrax) (0.1.6)\n",
+      "Requirement already satisfied: toolz>=0.9.0 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from chex>=0.0.7->distrax) (0.11.1)\n",
+      "Requirement already satisfied: opt-einsum in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from jax>=0.1.55->distrax) (3.3.0)\n",
+      "Requirement already satisfied: flatbuffers<3.0,>=1.12 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from jaxlib>=0.1.67->distrax) (1.12)\n",
+      "Requirement already satisfied: scipy in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from jaxlib>=0.1.67->distrax) (1.6.3)\n",
+      "Requirement already satisfied: cloudpickle>=1.3 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from tensorflow-probability>=0.15.0->distrax) (1.6.0)\n",
+      "Requirement already satisfied: decorator in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from tensorflow-probability>=0.15.0->distrax) (4.4.2)\n",
+      "Requirement already satisfied: gast>=0.3.2 in /opt/anaconda3/envs/spyder-dev/lib/python3.9/site-packages (from tensorflow-probability>=0.15.0->distrax) (0.4.0)\n",
+      "Installing collected packages: tensorflow-probability, distrax\n",
+      "  Attempting uninstall: tensorflow-probability\n",
+      "    Found existing installation: tensorflow-probability 0.13.0\n",
+      "    Uninstalling tensorflow-probability-0.13.0:\n",
+      "      Successfully uninstalled tensorflow-probability-0.13.0\n",
+      "  Attempting uninstall: distrax\n",
+      "    Found existing installation: distrax 0.0.1\n",
+      "    Uninstalling distrax-0.0.1:\n",
+      "      Successfully uninstalled distrax-0.0.1\n",
+      "\u001b[31mERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.\n",
+      "jsl 0.0.0 requires dataclasses, which is not installed.\u001b[0m\n",
+      "Successfully installed distrax-0.1.2 tensorflow-probability-0.16.0\n",
+      "\u001b[33mWARNING: You are using pip version 21.2.4; however, version 22.0.4 is available.\n",
+      "You should consider upgrading via the '/opt/anaconda3/envs/spyder-dev/bin/python -m pip install --upgrade pip' command.\u001b[0m\n",
+      "Note: you may need to restart the kernel to use updated packages.\n"
+     ]
+    }
+   ],
+   "source": [
+    "# meta-data does not work yet in VScode\n",
+    "# https://github.com/microsoft/vscode-jupyter/issues/1121\n",
+    "\n",
+    "{\n",
+    "    \"tags\": [\n",
+    "        \"hide-cell\"\n",
+    "    ]\n",
+    "}\n",
+    "\n",
+    "\n",
+    "### Install necessary libraries\n",
+    "\n",
+    "try:\n",
+    "    import jax\n",
+    "except:\n",
+    "    # For cuda version, see https://github.com/google/jax#installation\n",
+    "    %pip install --upgrade \"jax[cpu]\" \n",
+    "    import jax\n",
+    "\n",
+    "try:\n",
+    "    import distrax\n",
+    "except:\n",
+    "    %pip install --upgrade  distrax\n",
+    "    import distrax\n",
+    "\n",
+    "try:\n",
+    "    import jsl\n",
+    "except:\n",
+    "    %pip install git+https://github.com/probml/jsl\n",
+    "    import jsl\n",
+    "\n",
+    "try:\n",
+    "    import rich\n",
+    "except:\n",
+    "    %pip install rich\n",
+    "    import rich\n",
+    "\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "code",
+   "execution_count": 2,
+   "metadata": {},
+   "outputs": [],
+   "source": [
+    "{\n",
+    "    \"tags\": [\n",
+    "        \"hide-cell\"\n",
+    "    ]\n",
+    "}\n",
+    "\n",
+    "\n",
+    "### Import standard libraries\n",
+    "\n",
+    "import abc\n",
+    "from dataclasses import dataclass\n",
+    "import functools\n",
+    "import itertools\n",
+    "\n",
+    "from typing import Any, Callable, NamedTuple, Optional, Union, Tuple\n",
+    "\n",
+    "import matplotlib.pyplot as plt\n",
+    "import numpy as np\n",
+    "\n",
+    "\n",
+    "import jax\n",
+    "import jax.numpy as jnp\n",
+    "from jax import lax, vmap, jit, grad\n",
+    "from jax.scipy.special import logit\n",
+    "from jax.nn import softmax\n",
+    "from functools import partial\n",
+    "from jax.random import PRNGKey, split\n",
+    "\n",
+    "import inspect\n",
+    "import inspect as py_inspect\n",
+    "import rich\n",
+    "from rich import inspect as r_inspect\n",
+    "from rich import print as r_print\n",
+    "\n",
+    "def print_source(fname):\n",
+    "    r_print(py_inspect.getsource(fname))"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "```{math}\n",
+    "\n",
+    "\\newcommand\\floor[1]{\\lfloor#1\\rfloor}\n",
+    "\n",
+    "\\newcommand{\\real}{\\mathbb{R}}\n",
+    "\n",
+    "% Numbers\n",
+    "\\newcommand{\\vzero}{\\boldsymbol{0}}\n",
+    "\\newcommand{\\vone}{\\boldsymbol{1}}\n",
+    "\n",
+    "% Greek https://www.latex-tutorial.com/symbols/greek-alphabet/\n",
+    "\\newcommand{\\valpha}{\\boldsymbol{\\alpha}}\n",
+    "\\newcommand{\\vbeta}{\\boldsymbol{\\beta}}\n",
+    "\\newcommand{\\vchi}{\\boldsymbol{\\chi}}\n",
+    "\\newcommand{\\vdelta}{\\boldsymbol{\\delta}}\n",
+    "\\newcommand{\\vDelta}{\\boldsymbol{\\Delta}}\n",
+    "\\newcommand{\\vepsilon}{\\boldsymbol{\\epsilon}}\n",
+    "\\newcommand{\\vzeta}{\\boldsymbol{\\zeta}}\n",
+    "\\newcommand{\\vXi}{\\boldsymbol{\\Xi}}\n",
+    "\\newcommand{\\vell}{\\boldsymbol{\\ell}}\n",
+    "\\newcommand{\\veta}{\\boldsymbol{\\eta}}\n",
+    "%\\newcommand{\\vEta}{\\boldsymbol{\\Eta}}\n",
+    "\\newcommand{\\vgamma}{\\boldsymbol{\\gamma}}\n",
+    "\\newcommand{\\vGamma}{\\boldsymbol{\\Gamma}}\n",
+    "\\newcommand{\\vmu}{\\boldsymbol{\\mu}}\n",
+    "\\newcommand{\\vmut}{\\boldsymbol{\\tilde{\\mu}}}\n",
+    "\\newcommand{\\vnu}{\\boldsymbol{\\nu}}\n",
+    "\\newcommand{\\vkappa}{\\boldsymbol{\\kappa}}\n",
+    "\\newcommand{\\vlambda}{\\boldsymbol{\\lambda}}\n",
+    "\\newcommand{\\vLambda}{\\boldsymbol{\\Lambda}}\n",
+    "\\newcommand{\\vLambdaBar}{\\overline{\\vLambda}}\n",
+    "%\\newcommand{\\vnu}{\\boldsymbol{\\nu}}\n",
+    "\\newcommand{\\vomega}{\\boldsymbol{\\omega}}\n",
+    "\\newcommand{\\vOmega}{\\boldsymbol{\\Omega}}\n",
+    "\\newcommand{\\vphi}{\\boldsymbol{\\phi}}\n",
+    "\\newcommand{\\vvarphi}{\\boldsymbol{\\varphi}}\n",
+    "\\newcommand{\\vPhi}{\\boldsymbol{\\Phi}}\n",
+    "\\newcommand{\\vpi}{\\boldsymbol{\\pi}}\n",
+    "\\newcommand{\\vPi}{\\boldsymbol{\\Pi}}\n",
+    "\\newcommand{\\vpsi}{\\boldsymbol{\\psi}}\n",
+    "\\newcommand{\\vPsi}{\\boldsymbol{\\Psi}}\n",
+    "\\newcommand{\\vrho}{\\boldsymbol{\\rho}}\n",
+    "\\newcommand{\\vtheta}{\\boldsymbol{\\theta}}\n",
+    "\\newcommand{\\vthetat}{\\boldsymbol{\\tilde{\\theta}}}\n",
+    "\\newcommand{\\vTheta}{\\boldsymbol{\\Theta}}\n",
+    "\\newcommand{\\vsigma}{\\boldsymbol{\\sigma}}\n",
+    "\\newcommand{\\vSigma}{\\boldsymbol{\\Sigma}}\n",
+    "\\newcommand{\\vSigmat}{\\boldsymbol{\\tilde{\\Sigma}}}\n",
+    "\\newcommand{\\vsigmoid}{\\vsigma}\n",
+    "\\newcommand{\\vtau}{\\boldsymbol{\\tau}}\n",
+    "\\newcommand{\\vxi}{\\boldsymbol{\\xi}}\n",
+    "\n",
+    "\n",
+    "% Lower Roman (Vectors)\n",
+    "\\newcommand{\\va}{\\mathbf{a}}\n",
+    "\\newcommand{\\vb}{\\mathbf{b}}\n",
+    "\\newcommand{\\vBt}{\\mathbf{\\tilde{B}}}\n",
+    "\\newcommand{\\vc}{\\mathbf{c}}\n",
+    "\\newcommand{\\vct}{\\mathbf{\\tilde{c}}}\n",
+    "\\newcommand{\\vd}{\\mathbf{d}}\n",
+    "\\newcommand{\\ve}{\\mathbf{e}}\n",
+    "\\newcommand{\\vf}{\\mathbf{f}}\n",
+    "\\newcommand{\\vg}{\\mathbf{g}}\n",
+    "\\newcommand{\\vh}{\\mathbf{h}}\n",
+    "%\\newcommand{\\myvh}{\\mathbf{h}}\n",
+    "\\newcommand{\\vi}{\\mathbf{i}}\n",
+    "\\newcommand{\\vj}{\\mathbf{j}}\n",
+    "\\newcommand{\\vk}{\\mathbf{k}}\n",
+    "\\newcommand{\\vl}{\\mathbf{l}}\n",
+    "\\newcommand{\\vm}{\\mathbf{m}}\n",
+    "\\newcommand{\\vn}{\\mathbf{n}}\n",
+    "\\newcommand{\\vo}{\\mathbf{o}}\n",
+    "\\newcommand{\\vp}{\\mathbf{p}}\n",
+    "\\newcommand{\\vq}{\\mathbf{q}}\n",
+    "\\newcommand{\\vr}{\\mathbf{r}}\n",
+    "\\newcommand{\\vs}{\\mathbf{s}}\n",
+    "\\newcommand{\\vt}{\\mathbf{t}}\n",
+    "\\newcommand{\\vu}{\\mathbf{u}}\n",
+    "\\newcommand{\\vv}{\\mathbf{v}}\n",
+    "\\newcommand{\\vw}{\\mathbf{w}}\n",
+    "\\newcommand{\\vws}{\\vw_s}\n",
+    "\\newcommand{\\vwt}{\\mathbf{\\tilde{w}}}\n",
+    "\\newcommand{\\vWt}{\\mathbf{\\tilde{W}}}\n",
+    "\\newcommand{\\vwh}{\\hat{\\vw}}\n",
+    "\\newcommand{\\vx}{\\mathbf{x}}\n",
+    "%\\newcommand{\\vx}{\\mathbf{x}}\n",
+    "\\newcommand{\\vxt}{\\mathbf{\\tilde{x}}}\n",
+    "\\newcommand{\\vy}{\\mathbf{y}}\n",
+    "\\newcommand{\\vyt}{\\mathbf{\\tilde{y}}}\n",
+    "\\newcommand{\\vz}{\\mathbf{z}}\n",
+    "%\\newcommand{\\vzt}{\\mathbf{\\tilde{z}}}\n",
+    "\n",
+    "\n",
+    "% Upper Roman (Matrices)\n",
+    "\\newcommand{\\vA}{\\mathbf{A}}\n",
+    "\\newcommand{\\vB}{\\mathbf{B}}\n",
+    "\\newcommand{\\vC}{\\mathbf{C}}\n",
+    "\\newcommand{\\vD}{\\mathbf{D}}\n",
+    "\\newcommand{\\vE}{\\mathbf{E}}\n",
+    "\\newcommand{\\vF}{\\mathbf{F}}\n",
+    "\\newcommand{\\vG}{\\mathbf{G}}\n",
+    "\\newcommand{\\vH}{\\mathbf{H}}\n",
+    "\\newcommand{\\vI}{\\mathbf{I}}\n",
+    "\\newcommand{\\vJ}{\\mathbf{J}}\n",
+    "\\newcommand{\\vK}{\\mathbf{K}}\n",
+    "\\newcommand{\\vL}{\\mathbf{L}}\n",
+    "\\newcommand{\\vM}{\\mathbf{M}}\n",
+    "\\newcommand{\\vMt}{\\mathbf{\\tilde{M}}}\n",
+    "\\newcommand{\\vN}{\\mathbf{N}}\n",
+    "\\newcommand{\\vO}{\\mathbf{O}}\n",
+    "\\newcommand{\\vP}{\\mathbf{P}}\n",
+    "\\newcommand{\\vQ}{\\mathbf{Q}}\n",
+    "\\newcommand{\\vR}{\\mathbf{R}}\n",
+    "\\newcommand{\\vS}{\\mathbf{S}}\n",
+    "\\newcommand{\\vT}{\\mathbf{T}}\n",
+    "\\newcommand{\\vU}{\\mathbf{U}}\n",
+    "\\newcommand{\\vV}{\\mathbf{V}}\n",
+    "\\newcommand{\\vW}{\\mathbf{W}}\n",
+    "\\newcommand{\\vX}{\\mathbf{X}}\n",
+    "%\\newcommand{\\vXs}{\\vX_{\\vs}}\n",
+    "\\newcommand{\\vXs}{\\vX_{s}}\n",
+    "\\newcommand{\\vXt}{\\mathbf{\\tilde{X}}}\n",
+    "\\newcommand{\\vY}{\\mathbf{Y}}\n",
+    "\\newcommand{\\vZ}{\\mathbf{Z}}\n",
+    "\\newcommand{\\vZt}{\\mathbf{\\tilde{Z}}}\n",
+    "\\newcommand{\\vzt}{\\mathbf{\\tilde{z}}}\n",
+    "\n",
+    "\n",
+    "%%%%\n",
+    "\\newcommand{\\hidden}{\\vz}\n",
+    "\\newcommand{\\hid}{\\hidden}\n",
+    "\\newcommand{\\observed}{\\vy}\n",
+    "\\newcommand{\\obs}{\\observed}\n",
+    "\\newcommand{\\inputs}{\\vu}\n",
+    "\\newcommand{\\input}{\\inputs}\n",
+    "\n",
+    "\\newcommand{\\hmmTrans}{\\vA}\n",
+    "\\newcommand{\\hmmObs}{\\vB}\n",
+    "\\newcommand{\\hmmInit}{\\vpi}\n",
+    "\\newcommand{\\hmmhid}{\\hidden}\n",
+    "\\newcommand{\\hmmobs}{\\obs}\n",
+    "\n",
+    "\\newcommand{\\ldsDyn}{\\vA}\n",
+    "\\newcommand{\\ldsObs}{\\vC}\n",
+    "\\newcommand{\\ldsDynIn}{\\vB}\n",
+    "\\newcommand{\\ldsObsIn}{\\vD}\n",
+    "\\newcommand{\\ldsDynNoise}{\\vQ}\n",
+    "\\newcommand{\\ldsObsNoise}{\\vR}\n",
+    "\n",
+    "\\newcommand{\\ssmDynFn}{f}\n",
+    "\\newcommand{\\ssmObsFn}{h}\n",
+    "\n",
+    "\n",
+    "%%%\n",
+    "\\newcommand{\\gauss}{\\mathcal{N}}\n",
+    "\n",
+    "\\newcommand{\\diag}{\\mathrm{diag}}\n",
+    "```\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "(sec:nlds-intro)=\n",
+    "# Nonlinear Gaussian SSMs\n",
+    "\n",
+    "In this section, we consider SSMs in which the dynamics and/or observation models are nonlinear,\n",
+    "but the process noise and observation noise are Gaussian.\n",
+    "That is, \n",
+    "\\begin{align}\n",
+    "\\hmmhid_t &= \\ssmDynFn(\\hmmhid_{t-1}, \\inputs_t) +  \\vepsilon_t  \\\\\n",
+    "\\hmmobs_t &= \\ssmObsFn(\\hmmhid_{t}, \\inputs_t) + \\veta_t\n",
+    "\\end{align}\n",
+    "where $\\vepsilon_t \\sim \\gauss(\\vzero,\\vQ_t)$\n",
+    "and $\\veta_t \\sim \\gauss(\\vzero,\\vR_t)$.\n",
+    "This is a very widely used model class. We give some examples below."
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "(sec:pendulum)=\n",
+    "## Example: tracking a 1d pendulum\n",
+    "\n",
+    "```{figure} /figures/pendulum.png\n",
+    ":scale: 50%\n",
+    ":name: fig:pendulum\n",
+    "\n",
+    "Illustration of a pendulum swinging.\n",
+    "$g$ is the force of gravity,\n",
+    "$w(t)$ is a random external force,\n",
+    "and $\\alpha$ is the angle wrt the vertical.\n",
+    "Based on {cite}`Sarkka13` fig 3.10.\n",
+    "```\n",
+    "\n",
+    "\n",
+    "% Sarka p45, p74\n",
+    "Consider a simple pendulum of unit mass and length swinging from\n",
+    "a fixed attachment, as in\n",
+    "{numref}`Figure %s <fig:pendulum>`.\n",
+    "Such an object is in principle entirely deterministic in its behavior.\n",
+    "However, in the real world, there are often unknown forces at work\n",
+    "(e.g., air turbulence, friction).\n",
+    "We will model these by a continuous time random Gaussian noise process $w(t)$.\n",
+    "This gives rise to the following differential equation:\n",
+    "\\begin{align}\n",
+    "\\frac{d^2 \\alpha}{d t^2}\n",
+    "= -g \\sin(\\alpha) + w(t)\n",
+    "\\end{align}\n",
+    "We can write this as a nonlinear SSM by defining the state to be\n",
+    "$z_1(t) = \\alpha(t)$ and $z_2(t) = d\\alpha(t)/dt$.\n",
+    "Thus\n",
+    "\\begin{align}\n",
+    "\\frac{d \\vz}{dt}\n",
+    "= \\begin{pmatrix} z_2 \\\\ -g \\sin(z_1) \\end{pmatrix}\n",
+    "+ \\begin{pmatrix} 0 \\\\ 1 \\end{pmatrix} w(t)\n",
+    "\\end{align}\n",
+    "If we discretize this step size $\\Delta$,\n",
+    "we get the following\n",
+    "formulation {cite}`Sarkka13` p74:\n",
+    "\\begin{align}\n",
+    "\\underbrace{\n",
+    "  \\begin{pmatrix} z_{1,t} \\\\ z_{2,t} \\end{pmatrix}\n",
+    "  }_{\\hmmhid_t}\n",
+    "=\n",
+    "\\underbrace{\n",
+    "  \\begin{pmatrix} z_{1,t-1} + z_{2,t-1} \\Delta  \\\\\n",
+    "    z_{2,t-1} -g \\sin(z_{1,t-1}) \\Delta  \\end{pmatrix}\n",
+    "  }_{\\vf(\\hmmhid_{t-1})}\n",
+    "+\\vq_{t-1}\n",
+    "\\end{align}\n",
+    "where $\\vq_{t-1} \\sim \\gauss(\\vzero,\\vQ)$ with\n",
+    "\\begin{align}\n",
+    "\\vQ = q^c \\begin{pmatrix}\n",
+    "  \\frac{\\Delta^3}{3} &   \\frac{\\Delta^2}{2} \\\\\n",
+    "  \\frac{\\Delta^2}{2} & \\Delta\n",
+    "  \\end{pmatrix}\n",
+    "  \\end{align}\n",
+    "where $q^c$ is the spectral density (continuous time variance)\n",
+    "of the continuous-time noise process.\n",
+    "\n",
+    "\n",
+    "If we observe the angular position, we\n",
+    "get the linear observation model\n",
+    "\\begin{align}\n",
+    "y_t = \\alpha_t + r_t =  h(\\hmmhid_t) + r_t\n",
+    "\\end{align}\n",
+    "where $h(\\hmmhid_t) = z_{1,t}$\n",
+    "and $r_t$ is the observation noise.\n",
+    "If we only observe  the horizontal position,\n",
+    "we get the nonlinear observation model\n",
+    "\\begin{align}\n",
+    "y_t = \\sin(\\alpha_t) + r_t =  h(\\hmmhid_t) + r_t\n",
+    "\\end{align}\n",
+    "where $h(\\hmmhid_t) = \\sin(z_{1,t})$.\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n",
+    "\n"
+   ]
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

+ 1 - 1
_build/html/_sources/chapters/ssm/ssm.ipynb

@@ -1237,7 +1237,7 @@
     "(sec:inference)=\n",
     "(sec:inference)=\n",
     "# Inferential goals\n",
     "# Inferential goals\n",
     "\n",
     "\n",
-    "```{figure} /figures/dbn-inference-problems-tikz.png\n",
+    "```{figure} /figures/inference-problems-tikz.png\n",
     ":scale: 100%\n",
     ":scale: 100%\n",
     ":name: fig:dbn-inference\n",
     ":name: fig:dbn-inference\n",
     "\n",
     "\n",

+ 10 - 0
_build/html/_sources/chapters/ssm/ssm_index.md

@@ -0,0 +1,10 @@
+(ch:ssm)=
+# State Space Models
+
+This chapter introduces state space models (SSMs).
+
+
+
+```{tableofcontents}
+```
+

+ 285 - 0
_build/html/_sources/chapters/ssm/ssm_intro.ipynb

@@ -0,0 +1,285 @@
+{
+ "cells": [
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "```{math}\n",
+    "\n",
+    "\\newcommand\\floor[1]{\\lfloor#1\\rfloor}\n",
+    "\n",
+    "\\newcommand{\\real}{\\mathbb{R}}\n",
+    "\n",
+    "% Numbers\n",
+    "\\newcommand{\\vzero}{\\boldsymbol{0}}\n",
+    "\\newcommand{\\vone}{\\boldsymbol{1}}\n",
+    "\n",
+    "% Greek https://www.latex-tutorial.com/symbols/greek-alphabet/\n",
+    "\\newcommand{\\valpha}{\\boldsymbol{\\alpha}}\n",
+    "\\newcommand{\\vbeta}{\\boldsymbol{\\beta}}\n",
+    "\\newcommand{\\vchi}{\\boldsymbol{\\chi}}\n",
+    "\\newcommand{\\vdelta}{\\boldsymbol{\\delta}}\n",
+    "\\newcommand{\\vDelta}{\\boldsymbol{\\Delta}}\n",
+    "\\newcommand{\\vepsilon}{\\boldsymbol{\\epsilon}}\n",
+    "\\newcommand{\\vzeta}{\\boldsymbol{\\zeta}}\n",
+    "\\newcommand{\\vXi}{\\boldsymbol{\\Xi}}\n",
+    "\\newcommand{\\vell}{\\boldsymbol{\\ell}}\n",
+    "\\newcommand{\\veta}{\\boldsymbol{\\eta}}\n",
+    "%\\newcommand{\\vEta}{\\boldsymbol{\\Eta}}\n",
+    "\\newcommand{\\vgamma}{\\boldsymbol{\\gamma}}\n",
+    "\\newcommand{\\vGamma}{\\boldsymbol{\\Gamma}}\n",
+    "\\newcommand{\\vmu}{\\boldsymbol{\\mu}}\n",
+    "\\newcommand{\\vmut}{\\boldsymbol{\\tilde{\\mu}}}\n",
+    "\\newcommand{\\vnu}{\\boldsymbol{\\nu}}\n",
+    "\\newcommand{\\vkappa}{\\boldsymbol{\\kappa}}\n",
+    "\\newcommand{\\vlambda}{\\boldsymbol{\\lambda}}\n",
+    "\\newcommand{\\vLambda}{\\boldsymbol{\\Lambda}}\n",
+    "\\newcommand{\\vLambdaBar}{\\overline{\\vLambda}}\n",
+    "%\\newcommand{\\vnu}{\\boldsymbol{\\nu}}\n",
+    "\\newcommand{\\vomega}{\\boldsymbol{\\omega}}\n",
+    "\\newcommand{\\vOmega}{\\boldsymbol{\\Omega}}\n",
+    "\\newcommand{\\vphi}{\\boldsymbol{\\phi}}\n",
+    "\\newcommand{\\vvarphi}{\\boldsymbol{\\varphi}}\n",
+    "\\newcommand{\\vPhi}{\\boldsymbol{\\Phi}}\n",
+    "\\newcommand{\\vpi}{\\boldsymbol{\\pi}}\n",
+    "\\newcommand{\\vPi}{\\boldsymbol{\\Pi}}\n",
+    "\\newcommand{\\vpsi}{\\boldsymbol{\\psi}}\n",
+    "\\newcommand{\\vPsi}{\\boldsymbol{\\Psi}}\n",
+    "\\newcommand{\\vrho}{\\boldsymbol{\\rho}}\n",
+    "\\newcommand{\\vtheta}{\\boldsymbol{\\theta}}\n",
+    "\\newcommand{\\vthetat}{\\boldsymbol{\\tilde{\\theta}}}\n",
+    "\\newcommand{\\vTheta}{\\boldsymbol{\\Theta}}\n",
+    "\\newcommand{\\vsigma}{\\boldsymbol{\\sigma}}\n",
+    "\\newcommand{\\vSigma}{\\boldsymbol{\\Sigma}}\n",
+    "\\newcommand{\\vSigmat}{\\boldsymbol{\\tilde{\\Sigma}}}\n",
+    "\\newcommand{\\vsigmoid}{\\vsigma}\n",
+    "\\newcommand{\\vtau}{\\boldsymbol{\\tau}}\n",
+    "\\newcommand{\\vxi}{\\boldsymbol{\\xi}}\n",
+    "\n",
+    "\n",
+    "% Lower Roman (Vectors)\n",
+    "\\newcommand{\\va}{\\mathbf{a}}\n",
+    "\\newcommand{\\vb}{\\mathbf{b}}\n",
+    "\\newcommand{\\vBt}{\\mathbf{\\tilde{B}}}\n",
+    "\\newcommand{\\vc}{\\mathbf{c}}\n",
+    "\\newcommand{\\vct}{\\mathbf{\\tilde{c}}}\n",
+    "\\newcommand{\\vd}{\\mathbf{d}}\n",
+    "\\newcommand{\\ve}{\\mathbf{e}}\n",
+    "\\newcommand{\\vf}{\\mathbf{f}}\n",
+    "\\newcommand{\\vg}{\\mathbf{g}}\n",
+    "\\newcommand{\\vh}{\\mathbf{h}}\n",
+    "%\\newcommand{\\myvh}{\\mathbf{h}}\n",
+    "\\newcommand{\\vi}{\\mathbf{i}}\n",
+    "\\newcommand{\\vj}{\\mathbf{j}}\n",
+    "\\newcommand{\\vk}{\\mathbf{k}}\n",
+    "\\newcommand{\\vl}{\\mathbf{l}}\n",
+    "\\newcommand{\\vm}{\\mathbf{m}}\n",
+    "\\newcommand{\\vn}{\\mathbf{n}}\n",
+    "\\newcommand{\\vo}{\\mathbf{o}}\n",
+    "\\newcommand{\\vp}{\\mathbf{p}}\n",
+    "\\newcommand{\\vq}{\\mathbf{q}}\n",
+    "\\newcommand{\\vr}{\\mathbf{r}}\n",
+    "\\newcommand{\\vs}{\\mathbf{s}}\n",
+    "\\newcommand{\\vt}{\\mathbf{t}}\n",
+    "\\newcommand{\\vu}{\\mathbf{u}}\n",
+    "\\newcommand{\\vv}{\\mathbf{v}}\n",
+    "\\newcommand{\\vw}{\\mathbf{w}}\n",
+    "\\newcommand{\\vws}{\\vw_s}\n",
+    "\\newcommand{\\vwt}{\\mathbf{\\tilde{w}}}\n",
+    "\\newcommand{\\vWt}{\\mathbf{\\tilde{W}}}\n",
+    "\\newcommand{\\vwh}{\\hat{\\vw}}\n",
+    "\\newcommand{\\vx}{\\mathbf{x}}\n",
+    "%\\newcommand{\\vx}{\\mathbf{x}}\n",
+    "\\newcommand{\\vxt}{\\mathbf{\\tilde{x}}}\n",
+    "\\newcommand{\\vy}{\\mathbf{y}}\n",
+    "\\newcommand{\\vyt}{\\mathbf{\\tilde{y}}}\n",
+    "\\newcommand{\\vz}{\\mathbf{z}}\n",
+    "%\\newcommand{\\vzt}{\\mathbf{\\tilde{z}}}\n",
+    "\n",
+    "\n",
+    "% Upper Roman (Matrices)\n",
+    "\\newcommand{\\vA}{\\mathbf{A}}\n",
+    "\\newcommand{\\vB}{\\mathbf{B}}\n",
+    "\\newcommand{\\vC}{\\mathbf{C}}\n",
+    "\\newcommand{\\vD}{\\mathbf{D}}\n",
+    "\\newcommand{\\vE}{\\mathbf{E}}\n",
+    "\\newcommand{\\vF}{\\mathbf{F}}\n",
+    "\\newcommand{\\vG}{\\mathbf{G}}\n",
+    "\\newcommand{\\vH}{\\mathbf{H}}\n",
+    "\\newcommand{\\vI}{\\mathbf{I}}\n",
+    "\\newcommand{\\vJ}{\\mathbf{J}}\n",
+    "\\newcommand{\\vK}{\\mathbf{K}}\n",
+    "\\newcommand{\\vL}{\\mathbf{L}}\n",
+    "\\newcommand{\\vM}{\\mathbf{M}}\n",
+    "\\newcommand{\\vMt}{\\mathbf{\\tilde{M}}}\n",
+    "\\newcommand{\\vN}{\\mathbf{N}}\n",
+    "\\newcommand{\\vO}{\\mathbf{O}}\n",
+    "\\newcommand{\\vP}{\\mathbf{P}}\n",
+    "\\newcommand{\\vQ}{\\mathbf{Q}}\n",
+    "\\newcommand{\\vR}{\\mathbf{R}}\n",
+    "\\newcommand{\\vS}{\\mathbf{S}}\n",
+    "\\newcommand{\\vT}{\\mathbf{T}}\n",
+    "\\newcommand{\\vU}{\\mathbf{U}}\n",
+    "\\newcommand{\\vV}{\\mathbf{V}}\n",
+    "\\newcommand{\\vW}{\\mathbf{W}}\n",
+    "\\newcommand{\\vX}{\\mathbf{X}}\n",
+    "%\\newcommand{\\vXs}{\\vX_{\\vs}}\n",
+    "\\newcommand{\\vXs}{\\vX_{s}}\n",
+    "\\newcommand{\\vXt}{\\mathbf{\\tilde{X}}}\n",
+    "\\newcommand{\\vY}{\\mathbf{Y}}\n",
+    "\\newcommand{\\vZ}{\\mathbf{Z}}\n",
+    "\\newcommand{\\vZt}{\\mathbf{\\tilde{Z}}}\n",
+    "\\newcommand{\\vzt}{\\mathbf{\\tilde{z}}}\n",
+    "\n",
+    "\n",
+    "%%%%\n",
+    "\\newcommand{\\hidden}{\\vz}\n",
+    "\\newcommand{\\hid}{\\hidden}\n",
+    "\\newcommand{\\observed}{\\vy}\n",
+    "\\newcommand{\\obs}{\\observed}\n",
+    "\\newcommand{\\inputs}{\\vu}\n",
+    "\\newcommand{\\input}{\\inputs}\n",
+    "\n",
+    "\\newcommand{\\hmmTrans}{\\vA}\n",
+    "\\newcommand{\\hmmObs}{\\vB}\n",
+    "\\newcommand{\\hmmInit}{\\vpi}\n",
+    "\\newcommand{\\hmmhid}{\\hidden}\n",
+    "\\newcommand{\\hmmobs}{\\obs}\n",
+    "\n",
+    "\\newcommand{\\ldsDyn}{\\vA}\n",
+    "\\newcommand{\\ldsObs}{\\vC}\n",
+    "\\newcommand{\\ldsDynIn}{\\vB}\n",
+    "\\newcommand{\\ldsObsIn}{\\vD}\n",
+    "\\newcommand{\\ldsDynNoise}{\\vQ}\n",
+    "\\newcommand{\\ldsObsNoise}{\\vR}\n",
+    "\n",
+    "\\newcommand{\\ssmDynFn}{f}\n",
+    "\\newcommand{\\ssmObsFn}{h}\n",
+    "\n",
+    "\n",
+    "%%%\n",
+    "\\newcommand{\\gauss}{\\mathcal{N}}\n",
+    "\n",
+    "\\newcommand{\\diag}{\\mathrm{diag}}\n",
+    "```\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": []
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": [
+    "(sec:ssm-intro)=\n",
+    "# What are State Space Models?\n",
+    "\n",
+    "\n",
+    "A state space model or SSM\n",
+    "is a partially observed Markov model,\n",
+    "in which the hidden state,  $\\hidden_t$,\n",
+    "evolves over time according to a Markov process,\n",
+    "possibly conditional on external inputs or controls $\\input_t$,\n",
+    "and each hidden state generates some\n",
+    "observations $\\obs_t$ at each time step.\n",
+    "(In this book, we mostly focus on discrete time systems,\n",
+    "although  we consider the continuous-time case in  XXX.)\n",
+    "We get to see the observations, but not the hidden state.\n",
+    "Our main goal is to infer the hidden state given the observations.\n",
+    "However, we can also use the model to predict future observations,\n",
+    "by first predicting future hidden states, and then predicting\n",
+    "what observations they might generate.\n",
+    "By using  a hidden state $\\hidden_t$\n",
+    "to represent the past observations, $\\obs_{1:t-1}$,\n",
+    "the  model can have ``infinite'' memory,\n",
+    "unlike a standard Markov model.\n",
+    "\n",
+    "```{figure} /figures/SSM-AR-inputs.png\n",
+    ":height: 300px\n",
+    ":name: fig:ssm-ar\n",
+    "\n",
+    "Illustration of an SSM as a graphical model.\n",
+    "```\n",
+    "\n",
+    "\n",
+    "Formally we can define an SSM \n",
+    "as the following joint distribution:\n",
+    "```{math}\n",
+    ":label: eq:SSM-ar\n",
+    "p(\\hmmobs_{1:T},\\hmmhid_{1:T}|\\inputs_{1:T})\n",
+    " = \\left[ p(\\hmmhid_1|\\inputs_1) \\prod_{t=2}^{T}\n",
+    " p(\\hmmhid_t|\\hmmhid_{t-1},\\inputs_t) \\right]\n",
+    " \\left[ \\prod_{t=1}^T p(\\hmmobs_t|\\hmmhid_t, \\inputs_t, \\hmmobs_{t-1}) \\right]\n",
+    "```\n",
+    "where $p(\\hmmhid_t|\\hmmhid_{t-1},\\inputs_t)$ is the\n",
+    "transition model,\n",
+    "$p(\\hmmobs_t|\\hmmhid_t, \\inputs_t, \\hmmobs_{t-1})$ is the\n",
+    "observation model,\n",
+    "and $\\inputs_{t}$ is an optional input or action.\n",
+    "See {numref}`fig:ssm-ar` \n",
+    "for an illustration of the corresponding graphical model.\n",
+    "\n",
+    "\n",
+    "We often consider a simpler setting in which the\n",
+    " observations are conditionally independent of each other\n",
+    "(rather than having Markovian dependencies) given the hidden state.\n",
+    "In this case the joint simplifies to \n",
+    "```{math}\n",
+    ":label: eq:SSM-input\n",
+    "p(\\hmmobs_{1:T},\\hmmhid_{1:T}|\\inputs_{1:T})\n",
+    " = \\left[ p(\\hmmhid_1|\\inputs_1) \\prod_{t=2}^{T}\n",
+    " p(\\hmmhid_t|\\hmmhid_{t-1},\\inputs_t) \\right]\n",
+    " \\left[ \\prod_{t=1}^T p(\\hmmobs_t|\\hmmhid_t, \\inputs_t) \\right]\n",
+    "```\n",
+    "Sometimes there are no external inputs, so the model further\n",
+    "simplifies to the following unconditional generative model: \n",
+    "```{math}\n",
+    ":label: eq:SSM-no-input\n",
+    "p(\\hmmobs_{1:T},\\hmmhid_{1:T})\n",
+    " = \\left[ p(\\hmmhid_1) \\prod_{t=2}^{T}\n",
+    " p(\\hmmhid_t|\\hmmhid_{t-1}) \\right]\n",
+    " \\left[ \\prod_{t=1}^T p(\\hmmobs_t|\\hmmhid_t) \\right]\n",
+    "```\n",
+    "See {numref}`ssm-simplified` \n",
+    "for an illustration of the corresponding graphical model.\n",
+    "\n",
+    "\n",
+    "```{figure} /figures/SSM-simplified.png\n",
+    ":scale: 100%\n",
+    ":name: ssm-simplified\n",
+    "\n",
+    "Illustration of a simplified SSM.\n",
+    "```\n",
+    "\n"
+   ]
+  },
+  {
+   "cell_type": "markdown",
+   "metadata": {},
+   "source": []
+  }
+ ],
+ "metadata": {
+  "kernelspec": {
+   "display_name": "Python 3",
+   "language": "python",
+   "name": "python3"
+  },
+  "language_info": {
+   "codemirror_mode": {
+    "name": "ipython",
+    "version": 3
+   },
+   "file_extension": ".py",
+   "mimetype": "text/x-python",
+   "name": "python",
+   "nbconvert_exporter": "python",
+   "pygments_lexer": "ipython3",
+   "version": "3.9.2"
+  }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 4
+}

chapters/ssm/ssm.ipynb → _build/html/_sources/chapters/ssm/ssm_old.ipynb


File diff suppressed because it is too large
+ 1513 - 0
_build/html/_sources/old/ssm.ipynb


File diff suppressed because it is too large
+ 1513 - 0
_build/html/_sources/old/ssm_old.ipynb


+ 43 - 16
_build/html/bib.html

@@ -98,14 +98,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="chapters/ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="chapters/hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="chapters/ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -114,11 +109,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="chapters/hmm/hmm.html">
+    <a class="reference internal" href="chapters/ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="chapters/ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="chapters/hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="chapters/hmm/hmm_filter.html">
     <a class="reference internal" href="chapters/hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -149,8 +176,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/lgssm/lgssm_index.html">
   <a class="reference internal" href="chapters/lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -181,8 +208,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/extended/extended_index.html">
   <a class="reference internal" href="chapters/extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -208,8 +235,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/unscented/unscented_index.html">
   <a class="reference internal" href="chapters/unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -260,8 +287,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/learning/learning_index.html">
   <a class="reference internal" href="chapters/learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/adf/adf_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 55 - 16
_build/html/chapters/blank.html

@@ -97,14 +97,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -113,11 +108,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm/hmm.html">
+    <a class="reference internal" href="ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm/hmm_filter.html">
     <a class="reference internal" href="hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -148,8 +175,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm/lgssm_index.html">
   <a class="reference internal" href="lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -180,8 +207,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended/extended_index.html">
   <a class="reference internal" href="extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -207,8 +234,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="unscented/unscented_index.html">
   <a class="reference internal" href="unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -259,8 +286,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning/learning_index.html">
   <a class="reference internal" href="learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -456,6 +483,18 @@ const thebe_selector_output = ".output, .cell_output"
                 
                 
   <div class="tex2jax_ignore mathjax_ignore section" id="chapter-title">
   <div class="tex2jax_ignore mathjax_ignore section" id="chapter-title">
 <span id="chap-my-chap"></span><h1>Chapter title<a class="headerlink" href="#chapter-title" title="Permalink to this headline">¶</a></h1>
 <span id="chap-my-chap"></span><h1>Chapter title<a class="headerlink" href="#chapter-title" title="Permalink to this headline">¶</a></h1>
+<div class="cell docutils container">
+<div class="cell_input docutils container">
+<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
+</pre></div>
+</div>
+</div>
+<div class="cell_output docutils container">
+<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>42
+</pre></div>
+</div>
+</div>
+</div>
 </div>
 </div>
 
 
     <script type="text/x-thebe-config">
     <script type="text/x-thebe-config">

+ 43 - 16
_build/html/chapters/bnp/bnp_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/changepoint/changepoint_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/control/control_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/ensemble/ensemble_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/extended/extended_filter.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended_index.html">
   <a class="reference internal" href="extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/extended/extended_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="current reference internal" href="#">
   <a class="current reference internal" href="#">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/extended/extended_parallel.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended_index.html">
   <a class="reference internal" href="extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/extended/extended_smoother.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended_index.html">
   <a class="reference internal" href="extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/gp/gp_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 50 - 39
_build/html/chapters/hmm/hmm.html

@@ -53,8 +53,6 @@ const thebe_selector_output = ".output, .cell_output"
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="HMM filtering (forwards algorithm)" href="hmm_filter.html" />
-    <link rel="prev" title="Inference in discrete SSMs" href="hmm_index.html" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
     <meta name="docsearch:language" content="None">
     
     
@@ -93,33 +91,60 @@ const thebe_selector_output = ".output, .cell_output"
   </a>
   </a>
  </li>
  </li>
 </ul>
 </ul>
-<ul class="current nav bd-sidenav">
+<ul class="nav bd-sidenav">
  <li class="toctree-l1">
  <li class="toctree-l1">
   <a class="reference internal" href="../scratch.html">
   <a class="reference internal" href="../scratch.html">
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="reference internal" href="hmm_index.html">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
-  <ul class="current">
-   <li class="toctree-l2 current active">
-    <a class="current reference internal" href="#">
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm_filter.html">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +175,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +207,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +234,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +286,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -646,7 +671,7 @@ const thebe_selector_output = ".output, .cell_output"
 <p>We first create the “Ocassionally dishonest casino” model from <span id="id1">[<a class="reference internal" href="../../bib.html#id3" title="R. Durbin, S. Eddy, A. Krogh, and G. Mitchison. Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. Cambridge University Press, 1998.">DEKM98</a>]</span>.</p>
 <p>We first create the “Ocassionally dishonest casino” model from <span id="id1">[<a class="reference internal" href="../../bib.html#id3" title="R. Durbin, S. Eddy, A. Krogh, and G. Mitchison. Biological Sequence Analysis: Probabilistic Models of Proteins and Nucleic Acids. Cambridge University Press, 1998.">DEKM98</a>]</span>.</p>
 <div class="figure align-default" id="casino-fig">
 <div class="figure align-default" id="casino-fig">
 <a class="reference internal image-reference" href="../../_images/casino.png"><img alt="../../_images/casino.png" src="../../_images/casino.png" style="width: 208.5px; height: 142.5px;" /></a>
 <a class="reference internal image-reference" href="../../_images/casino.png"><img alt="../../_images/casino.png" src="../../_images/casino.png" style="width: 208.5px; height: 142.5px;" /></a>
-<p class="caption"><span class="caption-number">Fig. 8 </span><span class="caption-text">Illustration of the casino HMM.</span><a class="headerlink" href="#casino-fig" title="Permalink to this image">¶</a></p>
+<p class="caption"><span class="caption-text">Illustration of the casino HMM.</span><a class="headerlink" href="#casino-fig" title="Permalink to this image">¶</a></p>
 </div>
 </div>
 <p>There are 2 hidden states, each of which emit 6 possible observations.</p>
 <p>There are 2 hidden states, each of which emit 6 possible observations.</p>
 <div class="cell docutils container">
 <div class="cell docutils container">
@@ -956,21 +981,7 @@ A[i,j] transition probabilites.</p>
               
               
             
             
                 <!-- Previous / next buttons -->
                 <!-- Previous / next buttons -->
-<div class='prev-next-area'> 
-    <a class='left-prev' id="prev-link" href="hmm_index.html" title="previous page">
-        <i class="fas fa-angle-left"></i>
-        <div class="prev-next-info">
-            <p class="prev-next-subtitle">previous</p>
-            <p class="prev-next-title">Inference in discrete SSMs</p>
-        </div>
-    </a>
-    <a class='right-next' id="next-link" href="hmm_filter.html" title="next page">
-    <div class="prev-next-info">
-        <p class="prev-next-subtitle">next</p>
-        <p class="prev-next-title">HMM filtering (forwards algorithm)</p>
-    </div>
-    <i class="fas fa-angle-right"></i>
-    </a>
+<div class='prev-next-area'>
 </div>
 </div>
             
             
         </div>
         </div>

+ 412 - 56
_build/html/chapters/hmm/hmm_filter.html

@@ -51,12 +51,12 @@ const thebe_selector_input = "pre"
 const thebe_selector_output = ".output, .cell_output"
 const thebe_selector_output = ".output, .cell_output"
 </script>
 </script>
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
-    <script>window.MathJax = {"options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
+    <script>window.MathJax = {"TeX": {"Macros": {"N": "\\mathbb{N}", "floor": ["\\lfloor#1\\rfloor", 1], "bmat": ["\\left[\\begin{array}"], "emat": ["\\end{array}\\right]"]}}, "options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
     <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="next" title="HMM smoothing (forwards-backwards algorithm)" href="hmm_smoother.html" />
     <link rel="next" title="HMM smoothing (forwards-backwards algorithm)" href="hmm_smoother.html" />
-    <link rel="prev" title="Hidden Markov Models" href="hmm.html" />
+    <link rel="prev" title="Hidden Markov Models" href="hmm_index.html" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
     <meta name="docsearch:language" content="None">
     
     
@@ -101,26 +101,53 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="reference internal" href="hmm_index.html">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
-  <ul class="current">
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
    <li class="toctree-l2 current active">
    <li class="toctree-l2 current active">
     <a class="current reference internal" href="#">
     <a class="current reference internal" href="#">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
@@ -150,10 +177,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -184,8 +211,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -211,8 +238,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -259,37 +286,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
    Sequential Monte Carlo
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1 has-children">
+ <li class="toctree-l1">
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
-   <i class="fas fa-chevron-down">
-   </i>
-  </label>
-  <ul>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/em.html">
-     Expectation Maximization (EM)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/sgd.html">
-     Stochastic Gradient Descent (SGD)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/vb.html">
-     Variational Bayes (VB)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/mcmc.html">
-     Markov Chain Monte Carlo (MCMC)
-    </a>
-   </li>
-  </ul>
  </li>
  </li>
  <li class="toctree-l1">
  <li class="toctree-l1">
   <a class="reference internal" href="../tracking/tracking_index.html">
   <a class="reference internal" href="../tracking/tracking_index.html">
@@ -458,21 +458,377 @@ const thebe_selector_output = ".output, .cell_output"
             
             
               <div>
               <div>
                 
                 
-  <div class="tex2jax_ignore mathjax_ignore section" id="hmm-filtering-forwards-algorithm">
-<h1>HMM filtering (forwards algorithm)<a class="headerlink" href="#hmm-filtering-forwards-algorithm" title="Permalink to this headline">¶</a></h1>
-<div class="math notranslate nohighlight">
-\[\newcommand\floor[1]{\lfloor#1\rfloor}\]</div>
+  <div class="math notranslate nohighlight">
+\[ \begin{align}\begin{aligned}\newcommand{\defeq}{\triangleq}
+\newcommand{\trans}{{\mkern-1.5mu\mathsf{T}}}
+\newcommand{\transpose}[1]{{#1}^{\trans}}\\\newcommand{\inv}[1]{{#1}^{-1}}
+\DeclareMathOperator{\dotstar}{\odot}\\
+\newcommand\floor[1]{\lfloor#1\rfloor}\\\newcommand{\real}{\mathbb{R}}\\% Numbers
+\newcommand{\vzero}{\boldsymbol{0}}
+\newcommand{\vone}{\boldsymbol{1}}\\% Greek https://www.latex-tutorial.com/symbols/greek-alphabet/
+\newcommand{\valpha}{\boldsymbol{\alpha}}
+\newcommand{\vbeta}{\boldsymbol{\beta}}
+\newcommand{\vchi}{\boldsymbol{\chi}}
+\newcommand{\vdelta}{\boldsymbol{\delta}}
+\newcommand{\vDelta}{\boldsymbol{\Delta}}
+\newcommand{\vepsilon}{\boldsymbol{\epsilon}}
+\newcommand{\vzeta}{\boldsymbol{\zeta}}
+\newcommand{\vXi}{\boldsymbol{\Xi}}
+\newcommand{\vell}{\boldsymbol{\ell}}
+\newcommand{\veta}{\boldsymbol{\eta}}
+%\newcommand{\vEta}{\boldsymbol{\Eta}}
+\newcommand{\vgamma}{\boldsymbol{\gamma}}
+\newcommand{\vGamma}{\boldsymbol{\Gamma}}
+\newcommand{\vmu}{\boldsymbol{\mu}}
+\newcommand{\vmut}{\boldsymbol{\tilde{\mu}}}
+\newcommand{\vnu}{\boldsymbol{\nu}}
+\newcommand{\vkappa}{\boldsymbol{\kappa}}
+\newcommand{\vlambda}{\boldsymbol{\lambda}}
+\newcommand{\vLambda}{\boldsymbol{\Lambda}}
+\newcommand{\vLambdaBar}{\overline{\vLambda}}
+%\newcommand{\vnu}{\boldsymbol{\nu}}
+\newcommand{\vomega}{\boldsymbol{\omega}}
+\newcommand{\vOmega}{\boldsymbol{\Omega}}
+\newcommand{\vphi}{\boldsymbol{\phi}}
+\newcommand{\vvarphi}{\boldsymbol{\varphi}}
+\newcommand{\vPhi}{\boldsymbol{\Phi}}
+\newcommand{\vpi}{\boldsymbol{\pi}}
+\newcommand{\vPi}{\boldsymbol{\Pi}}
+\newcommand{\vpsi}{\boldsymbol{\psi}}
+\newcommand{\vPsi}{\boldsymbol{\Psi}}
+\newcommand{\vrho}{\boldsymbol{\rho}}
+\newcommand{\vtheta}{\boldsymbol{\theta}}
+\newcommand{\vthetat}{\boldsymbol{\tilde{\theta}}}
+\newcommand{\vTheta}{\boldsymbol{\Theta}}
+\newcommand{\vsigma}{\boldsymbol{\sigma}}
+\newcommand{\vSigma}{\boldsymbol{\Sigma}}
+\newcommand{\vSigmat}{\boldsymbol{\tilde{\Sigma}}}
+\newcommand{\vsigmoid}{\vsigma}
+\newcommand{\vtau}{\boldsymbol{\tau}}
+\newcommand{\vxi}{\boldsymbol{\xi}}\\
+% Lower Roman (Vectors)
+\newcommand{\va}{\mathbf{a}}
+\newcommand{\vb}{\mathbf{b}}
+\newcommand{\vBt}{\mathbf{\tilde{B}}}
+\newcommand{\vc}{\mathbf{c}}
+\newcommand{\vct}{\mathbf{\tilde{c}}}
+\newcommand{\vd}{\mathbf{d}}
+\newcommand{\ve}{\mathbf{e}}
+\newcommand{\vf}{\mathbf{f}}
+\newcommand{\vg}{\mathbf{g}}
+\newcommand{\vh}{\mathbf{h}}
+%\newcommand{\myvh}{\mathbf{h}}
+\newcommand{\vi}{\mathbf{i}}
+\newcommand{\vj}{\mathbf{j}}
+\newcommand{\vk}{\mathbf{k}}
+\newcommand{\vl}{\mathbf{l}}
+\newcommand{\vm}{\mathbf{m}}
+\newcommand{\vn}{\mathbf{n}}
+\newcommand{\vo}{\mathbf{o}}
+\newcommand{\vp}{\mathbf{p}}
+\newcommand{\vq}{\mathbf{q}}
+\newcommand{\vr}{\mathbf{r}}
+\newcommand{\vs}{\mathbf{s}}
+\newcommand{\vt}{\mathbf{t}}
+\newcommand{\vu}{\mathbf{u}}
+\newcommand{\vv}{\mathbf{v}}
+\newcommand{\vw}{\mathbf{w}}
+\newcommand{\vws}{\vw_s}
+\newcommand{\vwt}{\mathbf{\tilde{w}}}
+\newcommand{\vWt}{\mathbf{\tilde{W}}}
+\newcommand{\vwh}{\hat{\vw}}
+\newcommand{\vx}{\mathbf{x}}
+%\newcommand{\vx}{\mathbf{x}}
+\newcommand{\vxt}{\mathbf{\tilde{x}}}
+\newcommand{\vy}{\mathbf{y}}
+\newcommand{\vyt}{\mathbf{\tilde{y}}}
+\newcommand{\vz}{\mathbf{z}}
+%\newcommand{\vzt}{\mathbf{\tilde{z}}}\\
+% Upper Roman (Matrices)
+\newcommand{\vA}{\mathbf{A}}
+\newcommand{\vB}{\mathbf{B}}
+\newcommand{\vC}{\mathbf{C}}
+\newcommand{\vD}{\mathbf{D}}
+\newcommand{\vE}{\mathbf{E}}
+\newcommand{\vF}{\mathbf{F}}
+\newcommand{\vG}{\mathbf{G}}
+\newcommand{\vH}{\mathbf{H}}
+\newcommand{\vI}{\mathbf{I}}
+\newcommand{\vJ}{\mathbf{J}}
+\newcommand{\vK}{\mathbf{K}}
+\newcommand{\vL}{\mathbf{L}}
+\newcommand{\vM}{\mathbf{M}}
+\newcommand{\vMt}{\mathbf{\tilde{M}}}
+\newcommand{\vN}{\mathbf{N}}
+\newcommand{\vO}{\mathbf{O}}
+\newcommand{\vP}{\mathbf{P}}
+\newcommand{\vQ}{\mathbf{Q}}
+\newcommand{\vR}{\mathbf{R}}
+\newcommand{\vS}{\mathbf{S}}
+\newcommand{\vT}{\mathbf{T}}
+\newcommand{\vU}{\mathbf{U}}
+\newcommand{\vV}{\mathbf{V}}
+\newcommand{\vW}{\mathbf{W}}
+\newcommand{\vX}{\mathbf{X}}
+%\newcommand{\vXs}{\vX_{\vs}}
+\newcommand{\vXs}{\vX_{s}}
+\newcommand{\vXt}{\mathbf{\tilde{X}}}
+\newcommand{\vY}{\mathbf{Y}}
+\newcommand{\vZ}{\mathbf{Z}}
+\newcommand{\vZt}{\mathbf{\tilde{Z}}}
+\newcommand{\vzt}{\mathbf{\tilde{z}}}\\
+%%%%
+\newcommand{\hidden}{\vz}
+\newcommand{\hid}{\hidden}
+\newcommand{\observed}{\vy}
+\newcommand{\obs}{\observed}
+\newcommand{\inputs}{\vu}
+\newcommand{\input}{\inputs}\\\newcommand{\hmmTrans}{\vA}
+\newcommand{\hmmObs}{\vB}
+\newcommand{\hmmInit}{\vpi}\\
+\newcommand{\ldsDyn}{\vA}
+\newcommand{\ldsObs}{\vC}
+\newcommand{\ldsDynIn}{\vB}
+\newcommand{\ldsObsIn}{\vD}
+\newcommand{\ldsDynNoise}{\vQ}
+\newcommand{\ldsObsNoise}{\vR}\\\newcommand{\ssmDynFn}{f}
+\newcommand{\ssmObsFn}{h}\\
+%%%
+\newcommand{\gauss}{\mathcal{N}}\\\newcommand{\diag}{\mathrm{diag}}\end{aligned}\end{align} \]</div>
 <div class="cell docutils container">
 <div class="cell docutils container">
 <div class="cell_input docutils container">
 <div class="cell_input docutils container">
-<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="nb">print</span><span class="p">(</span><span class="mi">42</span><span class="p">)</span>
+<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># meta-data does not work yet in VScode</span>
+<span class="c1"># https://github.com/microsoft/vscode-jupyter/issues/1121</span>
+
+<span class="p">{</span>
+    <span class="s2">&quot;tags&quot;</span><span class="p">:</span> <span class="p">[</span>
+        <span class="s2">&quot;hide-cell&quot;</span>
+    <span class="p">]</span>
+<span class="p">}</span>
+
+
+<span class="c1">### Install necessary libraries</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">jax</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="c1"># For cuda version, see https://github.com/google/jax#installation</span>
+    <span class="o">%</span><span class="k">pip</span> install --upgrade &quot;jax[cpu]&quot; 
+    <span class="kn">import</span> <span class="nn">jax</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">distrax</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="o">%</span><span class="k">pip</span> install --upgrade  distrax
+    <span class="kn">import</span> <span class="nn">distrax</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">jsl</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="o">%</span><span class="k">pip</span> install git+https://github.com/probml/jsl
+    <span class="kn">import</span> <span class="nn">jsl</span>
+
+<span class="c1">#try:</span>
+<span class="c1">#    import ssm_jax</span>
+<span class="c1">##except:</span>
+<span class="c1">#    %pip install git+https://github.com/probml/ssm-jax</span>
+<span class="c1">#    import ssm_jax</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">rich</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="o">%</span><span class="k">pip</span> install rich
+    <span class="kn">import</span> <span class="nn">rich</span>
 </pre></div>
 </pre></div>
 </div>
 </div>
 </div>
 </div>
-<div class="cell_output docutils container">
-<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>42
+</div>
+<div class="cell docutils container">
+<div class="cell_input docutils container">
+<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+    <span class="s2">&quot;tags&quot;</span><span class="p">:</span> <span class="p">[</span>
+        <span class="s2">&quot;hide-cell&quot;</span>
+    <span class="p">]</span>
+<span class="p">}</span>
+
+
+<span class="c1">### Import standard libraries</span>
+
+<span class="kn">import</span> <span class="nn">abc</span>
+<span class="kn">from</span> <span class="nn">dataclasses</span> <span class="kn">import</span> <span class="n">dataclass</span>
+<span class="kn">import</span> <span class="nn">functools</span>
+<span class="kn">import</span> <span class="nn">itertools</span>
+
+<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">NamedTuple</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Tuple</span>
+
+<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+
+<span class="kn">import</span> <span class="nn">jax</span>
+<span class="kn">import</span> <span class="nn">jax.numpy</span> <span class="k">as</span> <span class="nn">jnp</span>
+<span class="kn">from</span> <span class="nn">jax</span> <span class="kn">import</span> <span class="n">lax</span><span class="p">,</span> <span class="n">vmap</span><span class="p">,</span> <span class="n">jit</span><span class="p">,</span> <span class="n">grad</span>
+<span class="kn">from</span> <span class="nn">jax.scipy.special</span> <span class="kn">import</span> <span class="n">logit</span>
+<span class="kn">from</span> <span class="nn">jax.nn</span> <span class="kn">import</span> <span class="n">softmax</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
+<span class="kn">from</span> <span class="nn">jax.random</span> <span class="kn">import</span> <span class="n">PRNGKey</span><span class="p">,</span> <span class="n">split</span>
+
+<span class="kn">import</span> <span class="nn">inspect</span>
+<span class="kn">import</span> <span class="nn">inspect</span> <span class="k">as</span> <span class="nn">py_inspect</span>
+<span class="kn">import</span> <span class="nn">rich</span>
+<span class="kn">from</span> <span class="nn">rich</span> <span class="kn">import</span> <span class="n">inspect</span> <span class="k">as</span> <span class="n">r_inspect</span>
+<span class="kn">from</span> <span class="nn">rich</span> <span class="kn">import</span> <span class="nb">print</span> <span class="k">as</span> <span class="n">r_print</span>
+
+<span class="k">def</span> <span class="nf">print_source</span><span class="p">(</span><span class="n">fname</span><span class="p">):</span>
+    <span class="n">r_print</span><span class="p">(</span><span class="n">py_inspect</span><span class="o">.</span><span class="n">getsource</span><span class="p">(</span><span class="n">fname</span><span class="p">))</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="tex2jax_ignore mathjax_ignore section" id="hmm-filtering-forwards-algorithm">
+<span id="sec-forwards"></span><h1>HMM filtering (forwards algorithm)<a class="headerlink" href="#hmm-filtering-forwards-algorithm" title="Permalink to this headline">¶</a></h1>
+<p>The  <strong>Bayes filter</strong> is an algorithm for recursively computing
+the belief state
+<span class="math notranslate nohighlight">\(p(\hidden_t|\obs_{1:t})\)</span> given
+the prior belief from the previous step,
+<span class="math notranslate nohighlight">\(p(\hidden_{t-1}|\obs_{1:t-1})\)</span>,
+the new observation <span class="math notranslate nohighlight">\(\obs_t\)</span>,
+and the model.
+This can be done using <strong>sequential Bayesian updating</strong>.
+For a dynamical model, this reduces to the
+<strong>predict-update</strong> cycle described below.</p>
+<p>The <strong>prediction step</strong> is just the <strong>Chapman-Kolmogorov equation</strong>:</p>
+<div class="math notranslate nohighlight">
+\[p(\hidden_t|\obs_{1:t-1})
+= \int p(\hidden_t|\hidden_{t-1}) p(\hidden_{t-1}|\obs_{1:t-1}) d\hidden_{t-1}\]</div>
+<p>The prediction step computes
+the one-step-ahead predictive distribution
+for the latent state, which updates
+the posterior from the previous time step into the prior
+for the current step.</p>
+<p>The <strong>update step</strong>
+is just Bayes rule:</p>
+<div class="math notranslate nohighlight">
+\[p(\hidden_t|\obs_{1:t}) = \frac{1}{Z_t}
+p(\obs_t|\hidden_t) p(\hidden_t|\obs_{1:t-1})\]</div>
+<p>where the normalization constant is</p>
+<div class="math notranslate nohighlight">
+\[Z_t = \int p(\obs_t|\hidden_t) p(\hidden_t|\obs_{1:t-1}) d\hidden_{t}
+= p(\obs_t|\obs_{1:t-1})\]</div>
+<p>When the latent states <span class="math notranslate nohighlight">\(\hidden_t\)</span> are discrete, as in HMM,
+the above integrals become sums.
+In particular, suppose we define
+the belief state as <span class="math notranslate nohighlight">\(\alpha_t(j) \defeq p(\hidden_t=j|\obs_{1:t})\)</span>,
+the local evidence as <span class="math notranslate nohighlight">\(\lambda_t(j) \defeq p(\obs_t|\hidden_t=j)\)</span>,
+and the transition matrix
+<span class="math notranslate nohighlight">\(A(i,j)  = p(\hidden_t=j|\hidden_{t-1}=i)\)</span>.
+Then the predict step becomes</p>
+<div class="math notranslate nohighlight" id="equation-eqn-predictivehmm">
+<span class="eqno">(19)<a class="headerlink" href="#equation-eqn-predictivehmm" title="Permalink to this equation">¶</a></span>\[\alpha_{t|t-1}(j) \defeq p(\hidden_t=j|\obs_{1:t-1})
+ = \sum_i \alpha_{t-1}(i) A(i,j)\]</div>
+<p>and the update step becomes</p>
+<div class="math notranslate nohighlight" id="equation-eqn-fwdseqn">
+<span class="eqno">(20)<a class="headerlink" href="#equation-eqn-fwdseqn" title="Permalink to this equation">¶</a></span>\[\alpha_t(j)
+= \frac{1}{Z_t} \lambda_t(j) \alpha_{t|t-1}(j)
+= \frac{1}{Z_t} \lambda_t(j) \left[\sum_i \alpha_{t-1}(i) A(i,j)  \right]\]</div>
+<p>where
+the  normalization constant for each time step is given by</p>
+<div class="math notranslate nohighlight" id="equation-eqn-hmmz">
+<span class="eqno">(21)<a class="headerlink" href="#equation-eqn-hmmz" title="Permalink to this equation">¶</a></span>\[\begin{split}\begin{align}
+Z_t \defeq p(\obs_t|\obs_{1:t-1})
+&amp;=  \sum_{j=1}^K p(\obs_t|\hidden_t=j)  p(\hidden_t=j|\obs_{1:t-1}) \\
+&amp;=  \sum_{j=1}^K \lambda_t(j) \alpha_{t|t-1}(j)
+\end{align}\end{split}\]</div>
+<p>Since all the quantities are finite length vectors and matrices,
+we can write the update equation
+in matrix-vector notation as follows:</p>
+<div class="math notranslate nohighlight">
+\[\valpha_t =\text{normalize}\left(
+\vlambda_t \dotstar  (\vA^{\trans} \valpha_{t-1}) \right)
+\label{eqn:fwdsAlgoMatrixForm}\]</div>
+<p>where <span class="math notranslate nohighlight">\(\dotstar\)</span> represents
+elementwise vector multiplication,
+and the <span class="math notranslate nohighlight">\(\text{normalize}\)</span> function just ensures its argument sums to one.</p>
+<p>In {ref}(sec:casino-inference)
+we illustrate
+filtering for the casino HMM,
+applied to a random sequence <span class="math notranslate nohighlight">\(\obs_{1:T}\)</span> of length <span class="math notranslate nohighlight">\(T=300\)</span>.
+In blue, we plot the probability that the dice is in the loaded (vs fair) state,
+based on the evidence seen so far.
+The gray bars indicate time intervals during which the generative
+process actually switched to the loaded dice.
+We see that the probability generally increases in the right places.</p>
+<p>Here is a JAX implementation of the forwards algorithm.</p>
+<div class="cell docutils container">
+<div class="cell_input docutils container">
+<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">jsl.hmm.hmm_lib</span> <span class="k">as</span> <span class="nn">hmm_lib</span>
+<span class="n">print_source</span><span class="p">(</span><span class="n">hmm_lib</span><span class="o">.</span><span class="n">hmm_forwards_jax</span><span class="p">)</span>
+<span class="c1">#https://github.com/probml/JSL/blob/main/jsl/hmm/hmm_lib.py#L189</span>
 </pre></div>
 </pre></div>
 </div>
 </div>
 </div>
 </div>
+<div class="cell_output docutils container">
+<div class="output text_html"><pre style="white-space:pre;overflow-x:auto;line-height:normal;font-family:Menlo,'DejaVu Sans Mono',consolas,'Courier New',monospace">@jit
+def hmm_forwards_jax<span style="font-weight: bold">(</span>params, obs_seq, <span style="color: #808000; text-decoration-color: #808000">length</span>=<span style="color: #800080; text-decoration-color: #800080; font-style: italic">None</span><span style="font-weight: bold">)</span>:
+    <span style="color: #008000; text-decoration-color: #008000">''</span>'
+    Calculates a belief state
+
+    Parameters
+    ----------
+    params : HMMJax
+        Hidden Markov Model
+
+    obs_seq: array<span style="font-weight: bold">(</span>seq_len<span style="font-weight: bold">)</span>
+        History of observable events
+
+    Returns
+    -------
+    * float
+        The loglikelihood giving log<span style="font-weight: bold">(</span>p<span style="font-weight: bold">(</span>x|model<span style="font-weight: bold">))</span>
+
+    * array<span style="font-weight: bold">(</span>seq_len, n_hidden<span style="font-weight: bold">)</span> :
+        All alpha values found for each sample
+    <span style="color: #008000; text-decoration-color: #008000">''</span>'
+    seq_len = len<span style="font-weight: bold">(</span>obs_seq<span style="font-weight: bold">)</span>
+
+    if length is <span style="color: #800080; text-decoration-color: #800080; font-style: italic">None</span>:
+        length = seq_len
+
+    trans_mat, obs_mat, init_dist = params.trans_mat, params.obs_mat, params.init_dist
+
+    trans_mat = jnp.array<span style="font-weight: bold">(</span>trans_mat<span style="font-weight: bold">)</span>
+    obs_mat = jnp.array<span style="font-weight: bold">(</span>obs_mat<span style="font-weight: bold">)</span>
+    init_dist = jnp.array<span style="font-weight: bold">(</span>init_dist<span style="font-weight: bold">)</span>
+
+    n_states, n_obs = obs_mat.shape
+
+    def scan_fn<span style="font-weight: bold">(</span>carry, t<span style="font-weight: bold">)</span>:
+        <span style="font-weight: bold">(</span>alpha_prev, log_ll_prev<span style="font-weight: bold">)</span> = carry
+        alpha_n = jnp.where<span style="font-weight: bold">(</span>t &lt; length,
+                            obs_mat<span style="font-weight: bold">[</span>:, obs_seq<span style="font-weight: bold">]</span> * <span style="font-weight: bold">(</span>alpha_prev<span style="font-weight: bold">[</span>:, <span style="color: #800080; text-decoration-color: #800080; font-style: italic">None</span><span style="font-weight: bold">]</span> * 
+trans_mat<span style="font-weight: bold">)</span>.sum<span style="font-weight: bold">(</span><span style="color: #808000; text-decoration-color: #808000">axis</span>=<span style="color: #000080; text-decoration-color: #000080; font-weight: bold">0</span><span style="font-weight: bold">)</span>,
+                            jnp.zeros_like<span style="font-weight: bold">(</span>alpha_prev<span style="font-weight: bold">))</span>
+
+        alpha_n, cn = normalize<span style="font-weight: bold">(</span>alpha_n<span style="font-weight: bold">)</span>
+        carry = <span style="font-weight: bold">(</span>alpha_n, jnp.log<span style="font-weight: bold">(</span>cn<span style="font-weight: bold">)</span> + log_ll_prev<span style="font-weight: bold">)</span>
+
+        return carry, alpha_n
+
+    # initial belief state
+    alpha_0, c0 = normalize<span style="font-weight: bold">(</span>init_dist * obs_mat<span style="font-weight: bold">[</span>:, obs_seq<span style="font-weight: bold">[</span><span style="color: #000080; text-decoration-color: #000080; font-weight: bold">0</span><span style="font-weight: bold">]])</span>
+
+    # setup scan loop
+    init_state = <span style="font-weight: bold">(</span>alpha_0, jnp.log<span style="font-weight: bold">(</span>c0<span style="font-weight: bold">))</span>
+    ts = jnp.arange<span style="font-weight: bold">(</span><span style="color: #000080; text-decoration-color: #000080; font-weight: bold">1</span>, seq_len<span style="font-weight: bold">)</span>
+    carry, alpha_hist = lax.scan<span style="font-weight: bold">(</span>scan_fn, init_state, ts<span style="font-weight: bold">)</span>
+
+    # post-process
+    alpha_hist = jnp.vstack<span style="font-weight: bold">()</span>
+    <span style="font-weight: bold">(</span>alpha_final, log_ll<span style="font-weight: bold">)</span> = carry
+    return log_ll, alpha_hist
+
+</pre>
+</div></div>
 </div>
 </div>
 </div>
 </div>
 
 
@@ -501,7 +857,7 @@ const thebe_selector_output = ".output, .cell_output"
             
             
                 <!-- Previous / next buttons -->
                 <!-- Previous / next buttons -->
 <div class='prev-next-area'> 
 <div class='prev-next-area'> 
-    <a class='left-prev' id="prev-link" href="hmm.html" title="previous page">
+    <a class='left-prev' id="prev-link" href="hmm_index.html" title="previous page">
         <i class="fas fa-angle-left"></i>
         <i class="fas fa-angle-left"></i>
         <div class="prev-next-info">
         <div class="prev-next-info">
             <p class="prev-next-subtitle">previous</p>
             <p class="prev-next-subtitle">previous</p>

+ 59 - 58
_build/html/chapters/hmm/hmm_index.html

@@ -5,7 +5,7 @@
   <head>
   <head>
     <meta charset="utf-8" />
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Inference in discrete SSMs &#8212; State Space Models: A Modern Approach</title>
+    <title>Hidden Markov Models &#8212; State Space Models: A Modern Approach</title>
     
     
   <link href="../../_static/css/theme.css" rel="stylesheet">
   <link href="../../_static/css/theme.css" rel="stylesheet">
   <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
   <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
@@ -51,10 +51,12 @@ const thebe_selector_input = "pre"
 const thebe_selector_output = ".output, .cell_output"
 const thebe_selector_output = ".output, .cell_output"
 </script>
 </script>
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
+    <script>window.MathJax = {"TeX": {"Macros": {"N": "\\mathbb{N}", "floor": ["\\lfloor#1\\rfloor", 1], "bmat": ["\\left[\\begin{array}"], "emat": ["\\end{array}\\right]"]}}, "options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
+    <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Hidden Markov Models" href="hmm.html" />
-    <link rel="prev" title="What are State Space Models?" href="../ssm/ssm.html" />
+    <link rel="next" title="HMM filtering (forwards algorithm)" href="hmm_filter.html" />
+    <link rel="prev" title="Inferential goals" href="../ssm/inference.html" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
     <meta name="docsearch:language" content="None">
     
     
@@ -99,27 +101,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="current reference internal" href="#">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="current reference internal" href="#">
+   Hidden Markov Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm_filter.html">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -148,10 +177,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +211,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +238,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -257,37 +286,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
    Sequential Monte Carlo
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1 has-children">
+ <li class="toctree-l1">
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
-   <i class="fas fa-chevron-down">
-   </i>
-  </label>
-  <ul>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/em.html">
-     Expectation Maximization (EM)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/sgd.html">
-     Stochastic Gradient Descent (SGD)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/vb.html">
-     Variational Bayes (VB)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/mcmc.html">
-     Markov Chain Monte Carlo (MCMC)
-    </a>
-   </li>
-  </ul>
  </li>
  </li>
  <li class="toctree-l1">
  <li class="toctree-l1">
   <a class="reference internal" href="../tracking/tracking_index.html">
   <a class="reference internal" href="../tracking/tracking_index.html">
@@ -423,7 +425,7 @@ const thebe_selector_output = ".output, .cell_output"
         <div class="col-12 col-md-9 pl-md-3 pr-md-0">
         <div class="col-12 col-md-9 pl-md-3 pr-md-0">
             <!-- Table of contents that is only displayed when printing the page -->
             <!-- Table of contents that is only displayed when printing the page -->
             <div id="jb-print-docs-body" class="onlyprint">
             <div id="jb-print-docs-body" class="onlyprint">
-                <h1>Inference in discrete SSMs</h1>
+                <h1>Hidden Markov Models</h1>
                 <!-- Table of contents -->
                 <!-- Table of contents -->
                 <div id="print-main-content">
                 <div id="print-main-content">
                     <div id="jb-print-toc">
                     <div id="jb-print-toc">
@@ -434,12 +436,12 @@ const thebe_selector_output = ".output, .cell_output"
             
             
               <div>
               <div>
                 
                 
-  <div class="tex2jax_ignore mathjax_ignore section" id="inference-in-discrete-ssms">
-<span id="ch-hmm"></span><h1>Inference in discrete SSMs<a class="headerlink" href="#inference-in-discrete-ssms" title="Permalink to this headline">¶</a></h1>
-<p>This chapter covers inference in HMMs.</p>
+  <div class="tex2jax_ignore mathjax_ignore section" id="hidden-markov-models">
+<span id="ch-hmm"></span><h1>Hidden Markov Models<a class="headerlink" href="#hidden-markov-models" title="Permalink to this headline">¶</a></h1>
+<p>This chapter discusses Hidden Markov Models (HMMs), which are state space models
+in which the latent state <span class="math notranslate nohighlight">\(z_t \in \{1,\ldots,K\}\)</span> is discrete.</p>
 <div class="toctree-wrapper compound">
 <div class="toctree-wrapper compound">
 <ul>
 <ul>
-<li class="toctree-l1"><a class="reference internal" href="hmm.html">Hidden Markov Models</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_filter.html">HMM filtering (forwards algorithm)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_filter.html">HMM filtering (forwards algorithm)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_smoother.html">HMM smoothing (forwards-backwards algorithm)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_smoother.html">HMM smoothing (forwards-backwards algorithm)</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_viterbi.html">Viterbi algorithm</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_viterbi.html">Viterbi algorithm</a></li>
@@ -447,7 +449,6 @@ const thebe_selector_output = ".output, .cell_output"
 <li class="toctree-l1"><a class="reference internal" href="hmm_sampling.html">Forwards-filtering backwards-sampling algorithm</a></li>
 <li class="toctree-l1"><a class="reference internal" href="hmm_sampling.html">Forwards-filtering backwards-sampling algorithm</a></li>
 </ul>
 </ul>
 </div>
 </div>
-<p>See (sec:casino-ex).</p>
 </div>
 </div>
 
 
     <script type="text/x-thebe-config">
     <script type="text/x-thebe-config">
@@ -475,17 +476,17 @@ const thebe_selector_output = ".output, .cell_output"
             
             
                 <!-- Previous / next buttons -->
                 <!-- Previous / next buttons -->
 <div class='prev-next-area'> 
 <div class='prev-next-area'> 
-    <a class='left-prev' id="prev-link" href="../ssm/ssm.html" title="previous page">
+    <a class='left-prev' id="prev-link" href="../ssm/inference.html" title="previous page">
         <i class="fas fa-angle-left"></i>
         <i class="fas fa-angle-left"></i>
         <div class="prev-next-info">
         <div class="prev-next-info">
             <p class="prev-next-subtitle">previous</p>
             <p class="prev-next-subtitle">previous</p>
-            <p class="prev-next-title">What are State Space Models?</p>
+            <p class="prev-next-title">Inferential goals</p>
         </div>
         </div>
     </a>
     </a>
-    <a class='right-next' id="next-link" href="hmm.html" title="next page">
+    <a class='right-next' id="next-link" href="hmm_filter.html" title="next page">
     <div class="prev-next-info">
     <div class="prev-next-info">
         <p class="prev-next-subtitle">next</p>
         <p class="prev-next-subtitle">next</p>
-        <p class="prev-next-title">Hidden Markov Models</p>
+        <p class="prev-next-title">HMM filtering (forwards algorithm)</p>
     </div>
     </div>
     <i class="fas fa-angle-right"></i>
     <i class="fas fa-angle-right"></i>
     </a>
     </a>

+ 46 - 19
_build/html/chapters/hmm/hmm_parallel.html

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="reference internal" href="hmm_index.html">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
-  <ul class="current">
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm_filter.html">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 46 - 19
_build/html/chapters/hmm/hmm_sampling.html

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="reference internal" href="hmm_index.html">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
-  <ul class="current">
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm_filter.html">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 46 - 19
_build/html/chapters/hmm/hmm_smoother.html

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="reference internal" href="hmm_index.html">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
-  <ul class="current">
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm_filter.html">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 46 - 19
_build/html/chapters/hmm/hmm_viterbi.html

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
- <li class="toctree-l1 current active has-children">
-  <a class="reference internal" href="hmm_index.html">
-   Inference in discrete SSMs
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
-  <ul class="current">
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm_filter.html">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/learning/em.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 46 - 54
_build/html/chapters/learning/learning_index.html

@@ -53,7 +53,7 @@ const thebe_selector_output = ".output, .cell_output"
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
     <script async="async" src="../../_static/sphinx-thebe.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Expectation Maximization (EM)" href="em.html" />
+    <link rel="next" title="Multi-target tracking" href="../tracking/tracking_index.html" />
     <link rel="prev" title="Sequential Monte Carlo" href="../smc/smc_index.html" />
     <link rel="prev" title="Sequential Monte Carlo" href="../smc/smc_index.html" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
     <meta name="docsearch:language" content="None">
@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -148,10 +175,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -257,37 +284,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
    Sequential Monte Carlo
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1 current active has-children">
+ <li class="toctree-l1 current active">
   <a class="current reference internal" href="#">
   <a class="current reference internal" href="#">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
-   <i class="fas fa-chevron-down">
-   </i>
-  </label>
-  <ul>
-   <li class="toctree-l2">
-    <a class="reference internal" href="em.html">
-     Expectation Maximization (EM)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="sgd.html">
-     Stochastic Gradient Descent (SGD)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="vb.html">
-     Variational Bayes (VB)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="mcmc.html">
-     Markov Chain Monte Carlo (MCMC)
-    </a>
-   </li>
-  </ul>
  </li>
  </li>
  <li class="toctree-l1">
  <li class="toctree-l1">
   <a class="reference internal" href="../tracking/tracking_index.html">
   <a class="reference internal" href="../tracking/tracking_index.html">
@@ -436,14 +436,6 @@ const thebe_selector_output = ".output, .cell_output"
                 
                 
   <div class="tex2jax_ignore mathjax_ignore section" id="offline-parameter-estimation-learning">
   <div class="tex2jax_ignore mathjax_ignore section" id="offline-parameter-estimation-learning">
 <span id="ch-learning"></span><h1>Offline parameter estimation (learning)<a class="headerlink" href="#offline-parameter-estimation-learning" title="Permalink to this headline">¶</a></h1>
 <span id="ch-learning"></span><h1>Offline parameter estimation (learning)<a class="headerlink" href="#offline-parameter-estimation-learning" title="Permalink to this headline">¶</a></h1>
-<div class="toctree-wrapper compound">
-<ul>
-<li class="toctree-l1"><a class="reference internal" href="em.html">Expectation Maximization (EM)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="sgd.html">Stochastic Gradient Descent (SGD)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="vb.html">Variational Bayes (VB)</a></li>
-<li class="toctree-l1"><a class="reference internal" href="mcmc.html">Markov Chain Monte Carlo (MCMC)</a></li>
-</ul>
-</div>
 </div>
 </div>
 
 
     <script type="text/x-thebe-config">
     <script type="text/x-thebe-config">
@@ -478,10 +470,10 @@ const thebe_selector_output = ".output, .cell_output"
             <p class="prev-next-title">Sequential Monte Carlo</p>
             <p class="prev-next-title">Sequential Monte Carlo</p>
         </div>
         </div>
     </a>
     </a>
-    <a class='right-next' id="next-link" href="em.html" title="next page">
+    <a class='right-next' id="next-link" href="../tracking/tracking_index.html" title="next page">
     <div class="prev-next-info">
     <div class="prev-next-info">
         <p class="prev-next-subtitle">next</p>
         <p class="prev-next-subtitle">next</p>
-        <p class="prev-next-title">Expectation Maximization (EM)</p>
+        <p class="prev-next-title">Multi-target tracking</p>
     </div>
     </div>
     <i class="fas fa-angle-right"></i>
     <i class="fas fa-angle-right"></i>
     </a>
     </a>

+ 43 - 16
_build/html/chapters/learning/mcmc.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/learning/sgd.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/learning/vb.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/lgssm/kalman_filter.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/lgssm/kalman_parallel.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/lgssm/kalman_sampling.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/lgssm/kalman_smoother.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 47 - 47
_build/html/chapters/lgssm/lgssm_index.html

@@ -5,7 +5,7 @@
   <head>
   <head>
     <meta charset="utf-8" />
     <meta charset="utf-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <title>Inference in linear-Gaussian SSMs &#8212; State Space Models: A Modern Approach</title>
+    <title>Linear-Gaussian SSMs &#8212; State Space Models: A Modern Approach</title>
     
     
   <link href="../../_static/css/theme.css" rel="stylesheet">
   <link href="../../_static/css/theme.css" rel="stylesheet">
   <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
   <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -148,10 +175,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  </li>
  <li class="toctree-l1 current active has-children">
  <li class="toctree-l1 current active has-children">
   <a class="current reference internal" href="#">
   <a class="current reference internal" href="#">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </a>
   </a>
-  <input checked="" class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -257,37 +284,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
    Sequential Monte Carlo
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1 has-children">
+ <li class="toctree-l1">
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
-   <i class="fas fa-chevron-down">
-   </i>
-  </label>
-  <ul>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/em.html">
-     Expectation Maximization (EM)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/sgd.html">
-     Stochastic Gradient Descent (SGD)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/vb.html">
-     Variational Bayes (VB)
-    </a>
-   </li>
-   <li class="toctree-l2">
-    <a class="reference internal" href="../learning/mcmc.html">
-     Markov Chain Monte Carlo (MCMC)
-    </a>
-   </li>
-  </ul>
  </li>
  </li>
  <li class="toctree-l1">
  <li class="toctree-l1">
   <a class="reference internal" href="../tracking/tracking_index.html">
   <a class="reference internal" href="../tracking/tracking_index.html">
@@ -423,7 +423,7 @@ const thebe_selector_output = ".output, .cell_output"
         <div class="col-12 col-md-9 pl-md-3 pr-md-0">
         <div class="col-12 col-md-9 pl-md-3 pr-md-0">
             <!-- Table of contents that is only displayed when printing the page -->
             <!-- Table of contents that is only displayed when printing the page -->
             <div id="jb-print-docs-body" class="onlyprint">
             <div id="jb-print-docs-body" class="onlyprint">
-                <h1>Inference in linear-Gaussian SSMs</h1>
+                <h1>Linear-Gaussian SSMs</h1>
                 <!-- Table of contents -->
                 <!-- Table of contents -->
                 <div id="print-main-content">
                 <div id="print-main-content">
                     <div id="jb-print-toc">
                     <div id="jb-print-toc">
@@ -434,8 +434,8 @@ const thebe_selector_output = ".output, .cell_output"
             
             
               <div>
               <div>
                 
                 
-  <div class="tex2jax_ignore mathjax_ignore section" id="inference-in-linear-gaussian-ssms">
-<span id="ch-lgssm"></span><h1>Inference in linear-Gaussian SSMs<a class="headerlink" href="#inference-in-linear-gaussian-ssms" title="Permalink to this headline">¶</a></h1>
+  <div class="tex2jax_ignore mathjax_ignore section" id="linear-gaussian-ssms">
+<span id="ch-lgssm"></span><h1>Linear-Gaussian SSMs<a class="headerlink" href="#linear-gaussian-ssms" title="Permalink to this headline">¶</a></h1>
 <div class="toctree-wrapper compound">
 <div class="toctree-wrapper compound">
 <ul>
 <ul>
 <li class="toctree-l1"><a class="reference internal" href="kalman_filter.html">Kalman filtering</a></li>
 <li class="toctree-l1"><a class="reference internal" href="kalman_filter.html">Kalman filtering</a></li>

+ 43 - 16
_build/html/chapters/ode/ode_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/pf/pf_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/postlin/postlin_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/quadrature/quadrature_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 56 - 23
_build/html/chapters/scratch.html

@@ -51,11 +51,11 @@ const thebe_selector_input = "pre"
 const thebe_selector_output = ".output, .cell_output"
 const thebe_selector_output = ".output, .cell_output"
 </script>
 </script>
     <script async="async" src="../_static/sphinx-thebe.js"></script>
     <script async="async" src="../_static/sphinx-thebe.js"></script>
-    <script>window.MathJax = {"options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
+    <script>window.MathJax = {"TeX": {"Macros": {"N": "\\mathbb{N}", "floor": ["\\lfloor#1\\rfloor", 1], "bmat": ["\\left[\\begin{array}"], "emat": ["\\end{array}\\right]"]}}, "options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
     <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="index" title="Index" href="../genindex.html" />
     <link rel="search" title="Search" href="../search.html" />
     <link rel="search" title="Search" href="../search.html" />
-    <link rel="next" title="What are State Space Models?" href="ssm/ssm.html" />
+    <link rel="next" title="State Space Models" href="ssm/ssm_index.html" />
     <link rel="prev" title="State Space Models: A Modern Approach" href="../root.html" />
     <link rel="prev" title="State Space Models: A Modern Approach" href="../root.html" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
     <meta name="docsearch:language" content="None">
@@ -101,14 +101,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -117,11 +112,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="hmm/hmm.html">
+    <a class="reference internal" href="ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="hmm/hmm_filter.html">
     <a class="reference internal" href="hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -152,8 +179,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm/lgssm_index.html">
   <a class="reference internal" href="lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -184,8 +211,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended/extended_index.html">
   <a class="reference internal" href="extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -211,8 +238,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="unscented/unscented_index.html">
   <a class="reference internal" href="unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -263,8 +290,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning/learning_index.html">
   <a class="reference internal" href="learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -512,7 +539,7 @@ Specifically</p>
 <li><p>baz</p></li>
 <li><p>baz</p></li>
 </ul>
 </ul>
 <p>For more details, see
 <p>For more details, see
-<a class="reference internal" href="hmm/hmm_index.html#ch-hmm"><span class="std std-ref">Inference in discrete SSMs</span></a> and  <span id="id1">[<a class="reference internal" href="../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span>.</p>
+<a class="reference internal" href="hmm/hmm_index.html#ch-hmm"><span class="std std-ref">Hidden Markov Models</span></a> and  <span id="id1">[<a class="reference internal" href="../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span>.</p>
 <div class="section" id="python">
 <div class="section" id="python">
 <h2>Python<a class="headerlink" href="#python" title="Permalink to this headline">¶</a></h2>
 <h2>Python<a class="headerlink" href="#python" title="Permalink to this headline">¶</a></h2>
 <p>We’re now ready to start coding.</p>
 <p>We’re now ready to start coding.</p>
@@ -588,14 +615,20 @@ style="height:200">
 <p class="caption"><span class="caption-number">Fig. 1 </span><span class="caption-text">A photo of a cat and a dog.</span><a class="headerlink" href="#cat-dog" title="Permalink to this image">¶</a></p>
 <p class="caption"><span class="caption-number">Fig. 1 </span><span class="caption-text">A photo of a cat and a dog.</span><a class="headerlink" href="#cat-dog" title="Permalink to this image">¶</a></p>
 </div>
 </div>
 <div class="figure align-default" id="cat-dog2">
 <div class="figure align-default" id="cat-dog2">
-<a class="reference internal image-reference" href="../_images/cat_dog.jpg"><img alt="../_images/cat_dog.jpg" src="../_images/cat_dog.jpg" style="width: 320.0px; height: 240.0px;" /></a>
+<a class="reference internal image-reference" href="../_images/cat_dog.jpg"><img alt="../_images/cat_dog.jpg" src="../_images/cat_dog.jpg" style="height: 300px;" /></a>
 <p class="caption"><span class="caption-number">Fig. 2 </span><span class="caption-text">Another photo of a cat and a dog.</span><a class="headerlink" href="#cat-dog2" title="Permalink to this image">¶</a></p>
 <p class="caption"><span class="caption-number">Fig. 2 </span><span class="caption-text">Another photo of a cat and a dog.</span><a class="headerlink" href="#cat-dog2" title="Permalink to this image">¶</a></p>
 </div>
 </div>
-<p>In <a class="reference internal" href="#cat-dog"><span class="std std-numref">Figure 1</span></a> we show catdog.
+<p>In <a class="reference internal" href="#cat-dog"><span class="std std-numref">Fig. 1</span></a>
+we show catdog.
 In <a class="reference internal" href="#cat-dog2"><span class="std std-numref">Figure 2</span></a> we show catdog2, its twin.</p>
 In <a class="reference internal" href="#cat-dog2"><span class="std std-numref">Figure 2</span></a> we show catdog2, its twin.</p>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>I am a useful note!</p>
+</div>
 </div>
 </div>
 <div class="section" id="math">
 <div class="section" id="math">
 <h2>Math<a class="headerlink" href="#math" title="Permalink to this headline">¶</a></h2>
 <h2>Math<a class="headerlink" href="#math" title="Permalink to this headline">¶</a></h2>
+<p>Here is <span class="math notranslate nohighlight">\(\N=10\)</span> and blah. <span class="math notranslate nohighlight">\(\floor{42.3}= 42\)</span>.</p>
 <p>We have <span class="math notranslate nohighlight">\(E= mc^2\)</span>, and also</p>
 <p>We have <span class="math notranslate nohighlight">\(E= mc^2\)</span>, and also</p>
 <div class="math notranslate nohighlight" id="equation-foo">
 <div class="math notranslate nohighlight" id="equation-foo">
 <span class="eqno">(1)<a class="headerlink" href="#equation-foo" title="Permalink to this equation">¶</a></span>\[a x^2 + bx+ c = 0\]</div>
 <span class="eqno">(1)<a class="headerlink" href="#equation-foo" title="Permalink to this equation">¶</a></span>\[a x^2 + bx+ c = 0\]</div>
@@ -642,10 +675,10 @@ In <a class="reference internal" href="#cat-dog2"><span class="std std-numref">F
             <p class="prev-next-title">State Space Models: A Modern Approach</p>
             <p class="prev-next-title">State Space Models: A Modern Approach</p>
         </div>
         </div>
     </a>
     </a>
-    <a class='right-next' id="next-link" href="ssm/ssm.html" title="next page">
+    <a class='right-next' id="next-link" href="ssm/ssm_index.html" title="next page">
     <div class="prev-next-info">
     <div class="prev-next-info">
         <p class="prev-next-subtitle">next</p>
         <p class="prev-next-subtitle">next</p>
-        <p class="prev-next-title">What are State Space Models?</p>
+        <p class="prev-next-title">State Space Models</p>
     </div>
     </div>
     <i class="fas fa-angle-right"></i>
     <i class="fas fa-angle-right"></i>
     </a>
     </a>

+ 43 - 16
_build/html/chapters/smc/smc_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

File diff suppressed because it is too large
+ 1177 - 0
_build/html/chapters/ssm/hmm.html


File diff suppressed because it is too large
+ 1092 - 0
_build/html/chapters/ssm/inference.html


File diff suppressed because it is too large
+ 985 - 0
_build/html/chapters/ssm/lds.html


+ 880 - 0
_build/html/chapters/ssm/nlds.html

@@ -0,0 +1,880 @@
+
+<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>Nonlinear Gaussian SSMs &#8212; State Space Models: A Modern Approach</title>
+    
+  <link href="../../_static/css/theme.css" rel="stylesheet">
+  <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
+
+    
+  <link rel="stylesheet"
+    href="../../_static/vendor/fontawesome/5.13.0/css/all.min.css">
+  <link rel="preload" as="font" type="font/woff2" crossorigin
+    href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2">
+  <link rel="preload" as="font" type="font/woff2" crossorigin
+    href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2">
+
+    
+      
+
+    
+    <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/sphinx-book-theme.css?digest=c3fdc42140077d1ad13ad2f1588a4309" />
+    <link rel="stylesheet" type="text/css" href="../../_static/togglebutton.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/mystnb.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/sphinx-thebe.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/panels-variables.06eb56fa6e07937060861dad626602ad.css" />
+    
+  <link rel="preload" as="script" href="../../_static/js/index.be7d3bbb2ef33a8344ce.js">
+
+    <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+    <script src="../../_static/jquery.js"></script>
+    <script src="../../_static/underscore.js"></script>
+    <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/clipboard.min.js"></script>
+    <script src="../../_static/copybutton.js"></script>
+    <script>let toggleHintShow = 'Click to show';</script>
+    <script>let toggleHintHide = 'Click to hide';</script>
+    <script>let toggleOpenOnPrint = 'true';</script>
+    <script src="../../_static/togglebutton.js"></script>
+    <script>var togglebuttonSelector = '.toggle, .admonition.dropdown, .tag_hide_input div.cell_input, .tag_hide-input div.cell_input, .tag_hide_output div.cell_output, .tag_hide-output div.cell_output, .tag_hide_cell.cell, .tag_hide-cell.cell';</script>
+    <script src="../../_static/sphinx-book-theme.d59cb220de22ca1c485ebbdc042f0030.js"></script>
+    <script>const THEBE_JS_URL = "https://unpkg.com/thebe@0.8.2/lib/index.js"
+const thebe_selector = ".thebe,.cell"
+const thebe_selector_input = "pre"
+const thebe_selector_output = ".output, .cell_output"
+</script>
+    <script async="async" src="../../_static/sphinx-thebe.js"></script>
+    <script>window.MathJax = {"TeX": {"Macros": {"N": "\\mathbb{N}", "floor": ["\\lfloor#1\\rfloor", 1], "bmat": ["\\left[\\begin{array}"], "emat": ["\\end{array}\\right]"]}}, "options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
+    <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" />
+    <link rel="next" title="Inferential goals" href="inference.html" />
+    <link rel="prev" title="Linear Gaussian SSMs" href="lds.html" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <meta name="docsearch:language" content="None">
+    
+
+    <!-- Google Analytics -->
+    
+  </head>
+  <body data-spy="scroll" data-target="#bd-toc-nav" data-offset="80">
+    
+    <div class="container-fluid" id="banner"></div>
+
+    
+
+    <div class="container-xl">
+      <div class="row">
+          
+<div class="col-12 col-md-3 bd-sidebar site-navigation show" id="site-navigation">
+    
+        <div class="navbar-brand-box">
+    <a class="navbar-brand text-wrap" href="../../index.html">
+      
+      
+      
+      <h1 class="site-logo" id="site-title">State Space Models: A Modern Approach</h1>
+      
+    </a>
+</div><form class="bd-search d-flex align-items-center" action="../../search.html" method="get">
+  <i class="icon fas fa-search"></i>
+  <input type="search" class="form-control" name="q" id="search-input" placeholder="Search this book..." aria-label="Search this book..." autocomplete="off" >
+</form><nav class="bd-links" id="bd-docs-nav" aria-label="Main">
+    <div class="bd-toc-item active">
+        <ul class="nav bd-sidenav">
+ <li class="toctree-l1">
+  <a class="reference internal" href="../../root.html">
+   State Space Models: A Modern Approach
+  </a>
+ </li>
+</ul>
+<ul class="current nav bd-sidenav">
+ <li class="toctree-l1">
+  <a class="reference internal" href="../scratch.html">
+   Scratchpad
+  </a>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="ssm_index.html">
+   State Space Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <label for="toctree-checkbox-1">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="hmm.html">
+     Hidden Markov Models
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2 current active">
+    <a class="current reference internal" href="#">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_filter.html">
+     HMM filtering (forwards algorithm)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_smoother.html">
+     HMM smoothing (forwards-backwards algorithm)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_viterbi.html">
+     Viterbi algorithm
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_parallel.html">
+     Parallel HMM  smoothing
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_sampling.html">
+     Forwards-filtering backwards-sampling algorithm
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../lgssm/lgssm_index.html">
+   Inference in linear-Gaussian SSMs
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_filter.html">
+     Kalman filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_smoother.html">
+     Kalman (RTS) smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_parallel.html">
+     Parallel Kalman Smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_sampling.html">
+     Forwards-filtering backwards sampling
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../extended/extended_index.html">
+   Extended (linearized) methods
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_filter.html">
+     Extended Kalman filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_smoother.html">
+     Extended Kalman smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_parallel.html">
+     Parallel extended Kalman smoothing
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../unscented/unscented_index.html">
+   Unscented methods
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../unscented/unscented_filter.html">
+     Unscented filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../unscented/unscented_smoother.html">
+     Unscented smoothing
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../quadrature/quadrature_index.html">
+   Quadrature and cubature methods
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../postlin/postlin_index.html">
+   Posterior linearization
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../adf/adf_index.html">
+   Assumed Density Filtering
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../vi/vi_index.html">
+   Variational inference
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../pf/pf_index.html">
+   Particle filtering
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../smc/smc_index.html">
+   Sequential Monte Carlo
+  </a>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../learning/learning_index.html">
+   Offline parameter estimation (learning)
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/em.html">
+     Expectation Maximization (EM)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/sgd.html">
+     Stochastic Gradient Descent (SGD)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/vb.html">
+     Variational Bayes (VB)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/mcmc.html">
+     Markov Chain Monte Carlo (MCMC)
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../tracking/tracking_index.html">
+   Multi-target tracking
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../ensemble/ensemble_index.html">
+   Data assimilation using Ensemble Kalman filter
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../bnp/bnp_index.html">
+   Bayesian non-parametric SSMs
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../changepoint/changepoint_index.html">
+   Changepoint detection
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../timeseries/timeseries_index.html">
+   Timeseries forecasting
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../gp/gp_index.html">
+   Markovian Gaussian processes
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../ode/ode_index.html">
+   Differential equations and SSMs
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../control/control_index.html">
+   Optimal control
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../../bib.html">
+   Bibliography
+  </a>
+ </li>
+</ul>
+
+    </div>
+</nav> <!-- To handle the deprecated key -->
+
+<div class="navbar_extra_footer">
+  Powered by <a href="https://jupyterbook.org">Jupyter Book</a>
+</div>
+
+</div>
+
+
+          
+
+
+          
+<main class="col py-md-3 pl-md-4 bd-content overflow-auto" role="main">
+    
+    <div class="topbar container-xl fixed-top">
+    <div class="topbar-contents row">
+        <div class="col-12 col-md-3 bd-topbar-whitespace site-navigation show"></div>
+        <div class="col pl-md-4 topbar-main">
+            
+            <button id="navbar-toggler" class="navbar-toggler ml-0" type="button" data-toggle="collapse"
+                data-toggle="tooltip" data-placement="bottom" data-target=".site-navigation" aria-controls="navbar-menu"
+                aria-expanded="true" aria-label="Toggle navigation" aria-controls="site-navigation"
+                title="Toggle navigation" data-toggle="tooltip" data-placement="left">
+                <i class="fas fa-bars"></i>
+                <i class="fas fa-arrow-left"></i>
+                <i class="fas fa-arrow-up"></i>
+            </button>
+            
+            
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn" aria-label="Download this page"><i
+            class="fas fa-download"></i></button>
+
+    <div class="dropdown-buttons">
+        <!-- ipynb file if we had a myst markdown file -->
+        
+        <!-- Download raw file -->
+        <a class="dropdown-buttons" href="../../_sources/chapters/ssm/nlds.ipynb"><button type="button"
+                class="btn btn-secondary topbarbtn" title="Download source file" data-toggle="tooltip"
+                data-placement="left">.ipynb</button></a>
+        <!-- Download PDF via print -->
+        <button type="button" id="download-print" class="btn btn-secondary topbarbtn" title="Print to PDF"
+                onclick="printPdf(this)" data-toggle="tooltip" data-placement="left">.pdf</button>
+    </div>
+</div>
+
+            <!-- Source interaction buttons -->
+
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn"
+        aria-label="Connect with source repository"><i class="fab fa-github"></i></button>
+    <div class="dropdown-buttons sourcebuttons">
+        <a class="repository-button"
+            href="https://github.com/probml/ssm-book"><button type="button" class="btn btn-secondary topbarbtn"
+                data-toggle="tooltip" data-placement="left" title="Source repository"><i
+                    class="fab fa-github"></i>repository</button></a>
+        <a class="issues-button"
+            href="https://github.com/probml/ssm-book/issues/new?title=Issue%20on%20page%20%2Fchapters/ssm/nlds.html&body=Your%20issue%20content%20here."><button
+                type="button" class="btn btn-secondary topbarbtn" data-toggle="tooltip" data-placement="left"
+                title="Open an issue"><i class="fas fa-lightbulb"></i>open issue</button></a>
+        
+    </div>
+</div>
+
+            <!-- Full screen (wrap in <a> to have style consistency -->
+
+<a class="full-screen-button"><button type="button" class="btn btn-secondary topbarbtn" data-toggle="tooltip"
+        data-placement="bottom" onclick="toggleFullScreen()" aria-label="Fullscreen mode"
+        title="Fullscreen mode"><i
+            class="fas fa-expand"></i></button></a>
+
+            <!-- Launch buttons -->
+
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn"
+        aria-label="Launch interactive content"><i class="fas fa-rocket"></i></button>
+    <div class="dropdown-buttons">
+        
+        <a class="binder-button" href="https://mybinder.org/v2/gh/probml/ssm-book/main?urlpath=tree/chapters/ssm/nlds.ipynb"><button type="button"
+                class="btn btn-secondary topbarbtn" title="Launch Binder" data-toggle="tooltip"
+                data-placement="left"><img class="binder-button-logo"
+                    src="../../_static/images/logo_binder.svg"
+                    alt="Interact on binder">Binder</button></a>
+        
+        
+        
+        <a class="colab-button" href="https://colab.research.google.com/github/probml/ssm-book/blob/main/chapters/ssm/nlds.ipynb"><button type="button" class="btn btn-secondary topbarbtn"
+                title="Launch Colab" data-toggle="tooltip" data-placement="left"><img class="colab-button-logo"
+                    src="../../_static/images/logo_colab.png"
+                    alt="Interact on Colab">Colab</button></a>
+        
+        
+    </div>
+</div>
+
+        </div>
+
+        <!-- Table of contents -->
+        <div class="d-none d-md-block col-md-2 bd-toc show noprint">
+            
+            <div class="tocsection onthispage pt-5 pb-3">
+                <i class="fas fa-list"></i> Contents
+            </div>
+            <nav id="bd-toc-nav" aria-label="Page">
+                <ul class="visible nav section-nav flex-column">
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" href="#example-tracking-a-1d-pendulum">
+   Example: tracking a 1d pendulum
+  </a>
+ </li>
+</ul>
+
+            </nav>
+        </div>
+    </div>
+</div>
+    <div id="main-content" class="row">
+        <div class="col-12 col-md-9 pl-md-3 pr-md-0">
+            <!-- Table of contents that is only displayed when printing the page -->
+            <div id="jb-print-docs-body" class="onlyprint">
+                <h1>Nonlinear Gaussian SSMs</h1>
+                <!-- Table of contents -->
+                <div id="print-main-content">
+                    <div id="jb-print-toc">
+                        
+                        <div>
+                            <h2> Contents </h2>
+                        </div>
+                        <nav aria-label="Page">
+                            <ul class="visible nav section-nav flex-column">
+ <li class="toc-h2 nav-item toc-entry">
+  <a class="reference internal nav-link" href="#example-tracking-a-1d-pendulum">
+   Example: tracking a 1d pendulum
+  </a>
+ </li>
+</ul>
+
+                        </nav>
+                    </div>
+                </div>
+            </div>
+            
+              <div>
+                
+  <div class="cell docutils container">
+<div class="cell_input docutils container">
+<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="c1"># meta-data does not work yet in VScode</span>
+<span class="c1"># https://github.com/microsoft/vscode-jupyter/issues/1121</span>
+
+<span class="p">{</span>
+    <span class="s2">&quot;tags&quot;</span><span class="p">:</span> <span class="p">[</span>
+        <span class="s2">&quot;hide-cell&quot;</span>
+    <span class="p">]</span>
+<span class="p">}</span>
+
+
+<span class="c1">### Install necessary libraries</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">jax</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="c1"># For cuda version, see https://github.com/google/jax#installation</span>
+    <span class="o">%</span><span class="k">pip</span> install --upgrade &quot;jax[cpu]&quot; 
+    <span class="kn">import</span> <span class="nn">jax</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">distrax</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="o">%</span><span class="k">pip</span> install --upgrade  distrax
+    <span class="kn">import</span> <span class="nn">distrax</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">jsl</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="o">%</span><span class="k">pip</span> install git+https://github.com/probml/jsl
+    <span class="kn">import</span> <span class="nn">jsl</span>
+
+<span class="k">try</span><span class="p">:</span>
+    <span class="kn">import</span> <span class="nn">rich</span>
+<span class="k">except</span><span class="p">:</span>
+    <span class="o">%</span><span class="k">pip</span> install rich
+    <span class="kn">import</span> <span class="nn">rich</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="cell docutils container">
+<div class="cell_input docutils container">
+<div class="highlight-ipython3 notranslate"><div class="highlight"><pre><span></span><span class="p">{</span>
+    <span class="s2">&quot;tags&quot;</span><span class="p">:</span> <span class="p">[</span>
+        <span class="s2">&quot;hide-cell&quot;</span>
+    <span class="p">]</span>
+<span class="p">}</span>
+
+
+<span class="c1">### Import standard libraries</span>
+
+<span class="kn">import</span> <span class="nn">abc</span>
+<span class="kn">from</span> <span class="nn">dataclasses</span> <span class="kn">import</span> <span class="n">dataclass</span>
+<span class="kn">import</span> <span class="nn">functools</span>
+<span class="kn">import</span> <span class="nn">itertools</span>
+
+<span class="kn">from</span> <span class="nn">typing</span> <span class="kn">import</span> <span class="n">Any</span><span class="p">,</span> <span class="n">Callable</span><span class="p">,</span> <span class="n">NamedTuple</span><span class="p">,</span> <span class="n">Optional</span><span class="p">,</span> <span class="n">Union</span><span class="p">,</span> <span class="n">Tuple</span>
+
+<span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
+<span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
+
+
+<span class="kn">import</span> <span class="nn">jax</span>
+<span class="kn">import</span> <span class="nn">jax.numpy</span> <span class="k">as</span> <span class="nn">jnp</span>
+<span class="kn">from</span> <span class="nn">jax</span> <span class="kn">import</span> <span class="n">lax</span><span class="p">,</span> <span class="n">vmap</span><span class="p">,</span> <span class="n">jit</span><span class="p">,</span> <span class="n">grad</span>
+<span class="kn">from</span> <span class="nn">jax.scipy.special</span> <span class="kn">import</span> <span class="n">logit</span>
+<span class="kn">from</span> <span class="nn">jax.nn</span> <span class="kn">import</span> <span class="n">softmax</span>
+<span class="kn">from</span> <span class="nn">functools</span> <span class="kn">import</span> <span class="n">partial</span>
+<span class="kn">from</span> <span class="nn">jax.random</span> <span class="kn">import</span> <span class="n">PRNGKey</span><span class="p">,</span> <span class="n">split</span>
+
+<span class="kn">import</span> <span class="nn">inspect</span>
+<span class="kn">import</span> <span class="nn">inspect</span> <span class="k">as</span> <span class="nn">py_inspect</span>
+<span class="kn">import</span> <span class="nn">rich</span>
+<span class="kn">from</span> <span class="nn">rich</span> <span class="kn">import</span> <span class="n">inspect</span> <span class="k">as</span> <span class="n">r_inspect</span>
+<span class="kn">from</span> <span class="nn">rich</span> <span class="kn">import</span> <span class="nb">print</span> <span class="k">as</span> <span class="n">r_print</span>
+
+<span class="k">def</span> <span class="nf">print_source</span><span class="p">(</span><span class="n">fname</span><span class="p">):</span>
+    <span class="n">r_print</span><span class="p">(</span><span class="n">py_inspect</span><span class="o">.</span><span class="n">getsource</span><span class="p">(</span><span class="n">fname</span><span class="p">))</span>
+</pre></div>
+</div>
+</div>
+</div>
+<div class="math notranslate nohighlight">
+\[ \begin{align}\begin{aligned}\newcommand\floor[1]{\lfloor#1\rfloor}\\\newcommand{\real}{\mathbb{R}}\\% Numbers
+\newcommand{\vzero}{\boldsymbol{0}}
+\newcommand{\vone}{\boldsymbol{1}}\\% Greek https://www.latex-tutorial.com/symbols/greek-alphabet/
+\newcommand{\valpha}{\boldsymbol{\alpha}}
+\newcommand{\vbeta}{\boldsymbol{\beta}}
+\newcommand{\vchi}{\boldsymbol{\chi}}
+\newcommand{\vdelta}{\boldsymbol{\delta}}
+\newcommand{\vDelta}{\boldsymbol{\Delta}}
+\newcommand{\vepsilon}{\boldsymbol{\epsilon}}
+\newcommand{\vzeta}{\boldsymbol{\zeta}}
+\newcommand{\vXi}{\boldsymbol{\Xi}}
+\newcommand{\vell}{\boldsymbol{\ell}}
+\newcommand{\veta}{\boldsymbol{\eta}}
+%\newcommand{\vEta}{\boldsymbol{\Eta}}
+\newcommand{\vgamma}{\boldsymbol{\gamma}}
+\newcommand{\vGamma}{\boldsymbol{\Gamma}}
+\newcommand{\vmu}{\boldsymbol{\mu}}
+\newcommand{\vmut}{\boldsymbol{\tilde{\mu}}}
+\newcommand{\vnu}{\boldsymbol{\nu}}
+\newcommand{\vkappa}{\boldsymbol{\kappa}}
+\newcommand{\vlambda}{\boldsymbol{\lambda}}
+\newcommand{\vLambda}{\boldsymbol{\Lambda}}
+\newcommand{\vLambdaBar}{\overline{\vLambda}}
+%\newcommand{\vnu}{\boldsymbol{\nu}}
+\newcommand{\vomega}{\boldsymbol{\omega}}
+\newcommand{\vOmega}{\boldsymbol{\Omega}}
+\newcommand{\vphi}{\boldsymbol{\phi}}
+\newcommand{\vvarphi}{\boldsymbol{\varphi}}
+\newcommand{\vPhi}{\boldsymbol{\Phi}}
+\newcommand{\vpi}{\boldsymbol{\pi}}
+\newcommand{\vPi}{\boldsymbol{\Pi}}
+\newcommand{\vpsi}{\boldsymbol{\psi}}
+\newcommand{\vPsi}{\boldsymbol{\Psi}}
+\newcommand{\vrho}{\boldsymbol{\rho}}
+\newcommand{\vtheta}{\boldsymbol{\theta}}
+\newcommand{\vthetat}{\boldsymbol{\tilde{\theta}}}
+\newcommand{\vTheta}{\boldsymbol{\Theta}}
+\newcommand{\vsigma}{\boldsymbol{\sigma}}
+\newcommand{\vSigma}{\boldsymbol{\Sigma}}
+\newcommand{\vSigmat}{\boldsymbol{\tilde{\Sigma}}}
+\newcommand{\vsigmoid}{\vsigma}
+\newcommand{\vtau}{\boldsymbol{\tau}}
+\newcommand{\vxi}{\boldsymbol{\xi}}\\
+% Lower Roman (Vectors)
+\newcommand{\va}{\mathbf{a}}
+\newcommand{\vb}{\mathbf{b}}
+\newcommand{\vBt}{\mathbf{\tilde{B}}}
+\newcommand{\vc}{\mathbf{c}}
+\newcommand{\vct}{\mathbf{\tilde{c}}}
+\newcommand{\vd}{\mathbf{d}}
+\newcommand{\ve}{\mathbf{e}}
+\newcommand{\vf}{\mathbf{f}}
+\newcommand{\vg}{\mathbf{g}}
+\newcommand{\vh}{\mathbf{h}}
+%\newcommand{\myvh}{\mathbf{h}}
+\newcommand{\vi}{\mathbf{i}}
+\newcommand{\vj}{\mathbf{j}}
+\newcommand{\vk}{\mathbf{k}}
+\newcommand{\vl}{\mathbf{l}}
+\newcommand{\vm}{\mathbf{m}}
+\newcommand{\vn}{\mathbf{n}}
+\newcommand{\vo}{\mathbf{o}}
+\newcommand{\vp}{\mathbf{p}}
+\newcommand{\vq}{\mathbf{q}}
+\newcommand{\vr}{\mathbf{r}}
+\newcommand{\vs}{\mathbf{s}}
+\newcommand{\vt}{\mathbf{t}}
+\newcommand{\vu}{\mathbf{u}}
+\newcommand{\vv}{\mathbf{v}}
+\newcommand{\vw}{\mathbf{w}}
+\newcommand{\vws}{\vw_s}
+\newcommand{\vwt}{\mathbf{\tilde{w}}}
+\newcommand{\vWt}{\mathbf{\tilde{W}}}
+\newcommand{\vwh}{\hat{\vw}}
+\newcommand{\vx}{\mathbf{x}}
+%\newcommand{\vx}{\mathbf{x}}
+\newcommand{\vxt}{\mathbf{\tilde{x}}}
+\newcommand{\vy}{\mathbf{y}}
+\newcommand{\vyt}{\mathbf{\tilde{y}}}
+\newcommand{\vz}{\mathbf{z}}
+%\newcommand{\vzt}{\mathbf{\tilde{z}}}\\
+% Upper Roman (Matrices)
+\newcommand{\vA}{\mathbf{A}}
+\newcommand{\vB}{\mathbf{B}}
+\newcommand{\vC}{\mathbf{C}}
+\newcommand{\vD}{\mathbf{D}}
+\newcommand{\vE}{\mathbf{E}}
+\newcommand{\vF}{\mathbf{F}}
+\newcommand{\vG}{\mathbf{G}}
+\newcommand{\vH}{\mathbf{H}}
+\newcommand{\vI}{\mathbf{I}}
+\newcommand{\vJ}{\mathbf{J}}
+\newcommand{\vK}{\mathbf{K}}
+\newcommand{\vL}{\mathbf{L}}
+\newcommand{\vM}{\mathbf{M}}
+\newcommand{\vMt}{\mathbf{\tilde{M}}}
+\newcommand{\vN}{\mathbf{N}}
+\newcommand{\vO}{\mathbf{O}}
+\newcommand{\vP}{\mathbf{P}}
+\newcommand{\vQ}{\mathbf{Q}}
+\newcommand{\vR}{\mathbf{R}}
+\newcommand{\vS}{\mathbf{S}}
+\newcommand{\vT}{\mathbf{T}}
+\newcommand{\vU}{\mathbf{U}}
+\newcommand{\vV}{\mathbf{V}}
+\newcommand{\vW}{\mathbf{W}}
+\newcommand{\vX}{\mathbf{X}}
+%\newcommand{\vXs}{\vX_{\vs}}
+\newcommand{\vXs}{\vX_{s}}
+\newcommand{\vXt}{\mathbf{\tilde{X}}}
+\newcommand{\vY}{\mathbf{Y}}
+\newcommand{\vZ}{\mathbf{Z}}
+\newcommand{\vZt}{\mathbf{\tilde{Z}}}
+\newcommand{\vzt}{\mathbf{\tilde{z}}}\\
+%%%%
+\newcommand{\hidden}{\vz}
+\newcommand{\hid}{\hidden}
+\newcommand{\observed}{\vy}
+\newcommand{\obs}{\observed}
+\newcommand{\inputs}{\vu}
+\newcommand{\input}{\inputs}\\\newcommand{\hmmTrans}{\vA}
+\newcommand{\hmmObs}{\vB}
+\newcommand{\hmmInit}{\vpi}
+\newcommand{\hmmhid}{\hidden}
+\newcommand{\hmmobs}{\obs}\\\newcommand{\ldsDyn}{\vA}
+\newcommand{\ldsObs}{\vC}
+\newcommand{\ldsDynIn}{\vB}
+\newcommand{\ldsObsIn}{\vD}
+\newcommand{\ldsDynNoise}{\vQ}
+\newcommand{\ldsObsNoise}{\vR}\\\newcommand{\ssmDynFn}{f}
+\newcommand{\ssmObsFn}{h}\\
+%%%
+\newcommand{\gauss}{\mathcal{N}}\\\newcommand{\diag}{\mathrm{diag}}\end{aligned}\end{align} \]</div>
+<div class="tex2jax_ignore mathjax_ignore section" id="nonlinear-gaussian-ssms">
+<span id="sec-nlds-intro"></span><h1>Nonlinear Gaussian SSMs<a class="headerlink" href="#nonlinear-gaussian-ssms" title="Permalink to this headline">¶</a></h1>
+<p>In this section, we consider SSMs in which the dynamics and/or observation models are nonlinear,
+but the process noise and observation noise are Gaussian.
+That is,</p>
+<div class="amsmath math notranslate nohighlight" id="equation-48c705c3-8479-4828-87b8-fd179fc23bc4">
+<span class="eqno">(11)<a class="headerlink" href="#equation-48c705c3-8479-4828-87b8-fd179fc23bc4" title="Permalink to this equation">¶</a></span>\[\begin{align}
+\hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t) +  \vepsilon_t  \\
+\hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
+\end{align}\]</div>
+<p>where <span class="math notranslate nohighlight">\(\vepsilon_t \sim \gauss(\vzero,\vQ_t)\)</span>
+and <span class="math notranslate nohighlight">\(\veta_t \sim \gauss(\vzero,\vR_t)\)</span>.
+This is a very widely used model class. We give some examples below.</p>
+<div class="section" id="example-tracking-a-1d-pendulum">
+<span id="sec-pendulum"></span><h2>Example: tracking a 1d pendulum<a class="headerlink" href="#example-tracking-a-1d-pendulum" title="Permalink to this headline">¶</a></h2>
+<div class="figure align-default" id="fig-pendulum">
+<a class="reference internal image-reference" href="../../_images/pendulum.png"><img alt="../../_images/pendulum.png" src="../../_images/pendulum.png" style="width: 132.5px; height: 147.5px;" /></a>
+<p class="caption"><span class="caption-number">Fig. 6 </span><span class="caption-text">Illustration of a pendulum swinging.
+<span class="math notranslate nohighlight">\(g\)</span> is the force of gravity,
+<span class="math notranslate nohighlight">\(w(t)\)</span> is a random external force,
+and <span class="math notranslate nohighlight">\(\alpha\)</span> is the angle wrt the vertical.
+Based on <span id="id1">[<a class="reference internal" href="../../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span> fig 3.10.</span><a class="headerlink" href="#fig-pendulum" title="Permalink to this image">¶</a></p>
+</div>
+<p>Consider a simple pendulum of unit mass and length swinging from
+a fixed attachment, as in
+<code class="xref std std-numref docutils literal notranslate"><span class="pre">Figure</span> <span class="pre">%s</span></code>.
+Such an object is in principle entirely deterministic in its behavior.
+However, in the real world, there are often unknown forces at work
+(e.g., air turbulence, friction).
+We will model these by a continuous time random Gaussian noise process <span class="math notranslate nohighlight">\(w(t)\)</span>.
+This gives rise to the following differential equation:</p>
+<div class="amsmath math notranslate nohighlight" id="equation-ce7cd5b9-026f-47f8-b6eb-aeb189d67e25">
+<span class="eqno">(12)<a class="headerlink" href="#equation-ce7cd5b9-026f-47f8-b6eb-aeb189d67e25" title="Permalink to this equation">¶</a></span>\[\begin{align}
+\frac{d^2 \alpha}{d t^2}
+= -g \sin(\alpha) + w(t)
+\end{align}\]</div>
+<p>We can write this as a nonlinear SSM by defining the state to be
+<span class="math notranslate nohighlight">\(z_1(t) = \alpha(t)\)</span> and <span class="math notranslate nohighlight">\(z_2(t) = d\alpha(t)/dt\)</span>.
+Thus</p>
+<div class="amsmath math notranslate nohighlight" id="equation-fdafb753-eac8-4deb-9ab4-5408727f28f7">
+<span class="eqno">(13)<a class="headerlink" href="#equation-fdafb753-eac8-4deb-9ab4-5408727f28f7" title="Permalink to this equation">¶</a></span>\[\begin{align}
+\frac{d \vz}{dt}
+= \begin{pmatrix} z_2 \\ -g \sin(z_1) \end{pmatrix}
++ \begin{pmatrix} 0 \\ 1 \end{pmatrix} w(t)
+\end{align}\]</div>
+<p>If we discretize this step size <span class="math notranslate nohighlight">\(\Delta\)</span>,
+we get the following
+formulation <span id="id2">[<a class="reference internal" href="../../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span> p74:</p>
+<div class="amsmath math notranslate nohighlight" id="equation-b07b597e-169c-4cc9-a403-ff0a210604e8">
+<span class="eqno">(14)<a class="headerlink" href="#equation-b07b597e-169c-4cc9-a403-ff0a210604e8" title="Permalink to this equation">¶</a></span>\[\begin{align}
+\underbrace{
+  \begin{pmatrix} z_{1,t} \\ z_{2,t} \end{pmatrix}
+  }_{\hmmhid_t}
+=
+\underbrace{
+  \begin{pmatrix} z_{1,t-1} + z_{2,t-1} \Delta  \\
+    z_{2,t-1} -g \sin(z_{1,t-1}) \Delta  \end{pmatrix}
+  }_{\vf(\hmmhid_{t-1})}
++\vq_{t-1}
+\end{align}\]</div>
+<p>where <span class="math notranslate nohighlight">\(\vq_{t-1} \sim \gauss(\vzero,\vQ)\)</span> with</p>
+<div class="amsmath math notranslate nohighlight" id="equation-45e5300e-4cc7-4e93-900a-875db0283ab1">
+<span class="eqno">(15)<a class="headerlink" href="#equation-45e5300e-4cc7-4e93-900a-875db0283ab1" title="Permalink to this equation">¶</a></span>\[\begin{align}
+\vQ = q^c \begin{pmatrix}
+  \frac{\Delta^3}{3} &amp;   \frac{\Delta^2}{2} \\
+  \frac{\Delta^2}{2} &amp; \Delta
+  \end{pmatrix}
+  \end{align}\]</div>
+<p>where <span class="math notranslate nohighlight">\(q^c\)</span> is the spectral density (continuous time variance)
+of the continuous-time noise process.</p>
+<p>If we observe the angular position, we
+get the linear observation model</p>
+<div class="amsmath math notranslate nohighlight" id="equation-adb0a338-37f5-41ae-93d3-b2f9a1a35350">
+<span class="eqno">(16)<a class="headerlink" href="#equation-adb0a338-37f5-41ae-93d3-b2f9a1a35350" title="Permalink to this equation">¶</a></span>\[\begin{align}
+y_t = \alpha_t + r_t =  h(\hmmhid_t) + r_t
+\end{align}\]</div>
+<p>where <span class="math notranslate nohighlight">\(h(\hmmhid_t) = z_{1,t}\)</span>
+and <span class="math notranslate nohighlight">\(r_t\)</span> is the observation noise.
+If we only observe  the horizontal position,
+we get the nonlinear observation model</p>
+<div class="amsmath math notranslate nohighlight" id="equation-94cc9e21-b503-4b95-b6cd-7a6bffccae45">
+<span class="eqno">(17)<a class="headerlink" href="#equation-94cc9e21-b503-4b95-b6cd-7a6bffccae45" title="Permalink to this equation">¶</a></span>\[\begin{align}
+y_t = \sin(\alpha_t) + r_t =  h(\hmmhid_t) + r_t
+\end{align}\]</div>
+<p>where <span class="math notranslate nohighlight">\(h(\hmmhid_t) = \sin(z_{1,t})\)</span>.</p>
+</div>
+</div>
+
+    <script type="text/x-thebe-config">
+    {
+        requestKernel: true,
+        binderOptions: {
+            repo: "binder-examples/jupyter-stacks-datascience",
+            ref: "master",
+        },
+        codeMirrorConfig: {
+            theme: "abcdef",
+            mode: "python"
+        },
+        kernelOptions: {
+            kernelName: "python3",
+            path: "./chapters/ssm"
+        },
+        predefinedOutput: true
+    }
+    </script>
+    <script>kernelName = 'python3'</script>
+
+              </div>
+              
+            
+                <!-- Previous / next buttons -->
+<div class='prev-next-area'> 
+    <a class='left-prev' id="prev-link" href="lds.html" title="previous page">
+        <i class="fas fa-angle-left"></i>
+        <div class="prev-next-info">
+            <p class="prev-next-subtitle">previous</p>
+            <p class="prev-next-title">Linear Gaussian SSMs</p>
+        </div>
+    </a>
+    <a class='right-next' id="next-link" href="inference.html" title="next page">
+    <div class="prev-next-info">
+        <p class="prev-next-subtitle">next</p>
+        <p class="prev-next-title">Inferential goals</p>
+    </div>
+    <i class="fas fa-angle-right"></i>
+    </a>
+</div>
+            
+        </div>
+    </div>
+    <footer class="footer">
+  <p>
+    
+      By Kevin Murphy, Scott Linderman, et al.<br/>
+    
+        &copy; Copyright 2021.<br/>
+  </p>
+</footer>
+</main>
+
+
+      </div>
+    </div>
+  
+  <script src="../../_static/js/index.be7d3bbb2ef33a8344ce.js"></script>
+
+  </body>
+</html>

+ 99 - 83
_build/html/chapters/ssm/ssm.html

@@ -55,8 +55,6 @@ const thebe_selector_output = ".output, .cell_output"
     <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.html" />
     <link rel="search" title="Search" href="../../search.html" />
-    <link rel="next" title="Inference in discrete SSMs" href="../hmm/hmm_index.html" />
-    <link rel="prev" title="Scratchpad" href="../scratch.html" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
     <meta name="docsearch:language" content="None">
     
     
@@ -95,23 +93,55 @@ const thebe_selector_output = ".output, .cell_output"
   </a>
   </a>
  </li>
  </li>
 </ul>
 </ul>
-<ul class="current nav bd-sidenav">
+<ul class="nav bd-sidenav">
  <li class="toctree-l1">
  <li class="toctree-l1">
   <a class="reference internal" href="../scratch.html">
   <a class="reference internal" href="../scratch.html">
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1 current active">
-  <a class="current reference internal" href="#">
-   What are State Space Models?
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="ssm_index.html">
+   State Space Models
   </a>
   </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <label for="toctree-checkbox-1">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="hmm.html">
+     Hidden Markov Models
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
  </li>
  </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../hmm/hmm_index.html">
   <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+   Hidden Markov Models
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
-  <label for="toctree-checkbox-1">
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -152,8 +182,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -184,8 +214,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -211,8 +241,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -263,8 +293,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -841,7 +871,7 @@ unlike a standard Markov model.</p>
 <p>Formally we can define an SSM
 <p>Formally we can define an SSM
 as the following joint distribution:</p>
 as the following joint distribution:</p>
 <div class="math notranslate nohighlight" id="equation-eq-ssm-ar">
 <div class="math notranslate nohighlight" id="equation-eq-ssm-ar">
-<span class="eqno">(2)<a class="headerlink" href="#equation-eq-ssm-ar" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T}|\inputs_{1:T})
+<span class="eqno">()<a class="headerlink" href="#equation-eq-ssm-ar" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T}|\inputs_{1:T})
  = \left[ p(\hmmhid_1|\inputs_1) \prod_{t=2}^{T}
  = \left[ p(\hmmhid_1|\inputs_1) \prod_{t=2}^{T}
  p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) \right]
  p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) \right]
  \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t, \inputs_t, \hmmobs_{t-1}) \right]\]</div>
  \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t, \inputs_t, \hmmobs_{t-1}) \right]\]</div>
@@ -850,33 +880,33 @@ transition model,
 <span class="math notranslate nohighlight">\(p(\hmmobs_t|\hmmhid_t, \inputs_t, \hmmobs_{t-1})\)</span> is the
 <span class="math notranslate nohighlight">\(p(\hmmobs_t|\hmmhid_t, \inputs_t, \hmmobs_{t-1})\)</span> is the
 observation model,
 observation model,
 and <span class="math notranslate nohighlight">\(\inputs_{t}\)</span> is an optional input or action.
 and <span class="math notranslate nohighlight">\(\inputs_{t}\)</span> is an optional input or action.
-See <a class="reference internal" href="#ssm-ar"><span class="std std-numref">Figure 3</span></a>
+See <code class="xref std std-numref docutils literal notranslate"><span class="pre">Figure</span> <span class="pre">%s</span></code>
 for an illustration of the corresponding graphical model.</p>
 for an illustration of the corresponding graphical model.</p>
 <div class="figure align-default" id="ssm-ar">
 <div class="figure align-default" id="ssm-ar">
 <a class="reference internal image-reference" href="../../_images/SSM-AR-inputs.png"><img alt="../../_images/SSM-AR-inputs.png" src="../../_images/SSM-AR-inputs.png" style="width: 152.0px; height: 165.0px;" /></a>
 <a class="reference internal image-reference" href="../../_images/SSM-AR-inputs.png"><img alt="../../_images/SSM-AR-inputs.png" src="../../_images/SSM-AR-inputs.png" style="width: 152.0px; height: 165.0px;" /></a>
-<p class="caption"><span class="caption-number">Fig. 3 </span><span class="caption-text">Illustration of an SSM as a graphical model.</span><a class="headerlink" href="#ssm-ar" title="Permalink to this image">¶</a></p>
+<p class="caption"><span class="caption-text">Illustration of an SSM as a graphical model.</span><a class="headerlink" href="#ssm-ar" title="Permalink to this image">¶</a></p>
 </div>
 </div>
 <p>We often consider a simpler setting in which the
 <p>We often consider a simpler setting in which the
 observations are conditionally independent of each other
 observations are conditionally independent of each other
 (rather than having Markovian dependencies) given the hidden state.
 (rather than having Markovian dependencies) given the hidden state.
 In this case the joint simplifies to</p>
 In this case the joint simplifies to</p>
 <div class="math notranslate nohighlight" id="equation-eq-ssm-input">
 <div class="math notranslate nohighlight" id="equation-eq-ssm-input">
-<span class="eqno">(3)<a class="headerlink" href="#equation-eq-ssm-input" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T}|\inputs_{1:T})
+<span class="eqno">()<a class="headerlink" href="#equation-eq-ssm-input" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T}|\inputs_{1:T})
  = \left[ p(\hmmhid_1|\inputs_1) \prod_{t=2}^{T}
  = \left[ p(\hmmhid_1|\inputs_1) \prod_{t=2}^{T}
  p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) \right]
  p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) \right]
  \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t, \inputs_t) \right]\]</div>
  \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t, \inputs_t) \right]\]</div>
 <p>Sometimes there are no external inputs, so the model further
 <p>Sometimes there are no external inputs, so the model further
 simplifies to the following unconditional generative model:</p>
 simplifies to the following unconditional generative model:</p>
 <div class="math notranslate nohighlight" id="equation-eq-ssm-no-input">
 <div class="math notranslate nohighlight" id="equation-eq-ssm-no-input">
-<span class="eqno">(4)<a class="headerlink" href="#equation-eq-ssm-no-input" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T})
+<span class="eqno">()<a class="headerlink" href="#equation-eq-ssm-no-input" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T})
  = \left[ p(\hmmhid_1) \prod_{t=2}^{T}
  = \left[ p(\hmmhid_1) \prod_{t=2}^{T}
  p(\hmmhid_t|\hmmhid_{t-1}) \right]
  p(\hmmhid_t|\hmmhid_{t-1}) \right]
  \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t) \right]\]</div>
  \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t) \right]\]</div>
-<p>See <a class="reference internal" href="#ssm-simplified"><span class="std std-numref">Figure 4</span></a>
+<p>See <code class="xref std std-numref docutils literal notranslate"><span class="pre">Figure</span> <span class="pre">%s</span></code>
 for an illustration of the corresponding graphical model.</p>
 for an illustration of the corresponding graphical model.</p>
 <div class="figure align-default" id="ssm-simplified">
 <div class="figure align-default" id="ssm-simplified">
 <a class="reference internal image-reference" href="../../_images/SSM-simplified.png"><img alt="../../_images/SSM-simplified.png" src="../../_images/SSM-simplified.png" style="width: 136.0px; height: 98.0px;" /></a>
 <a class="reference internal image-reference" href="../../_images/SSM-simplified.png"><img alt="../../_images/SSM-simplified.png" src="../../_images/SSM-simplified.png" style="width: 136.0px; height: 98.0px;" /></a>
-<p class="caption"><span class="caption-number">Fig. 4 </span><span class="caption-text">Illustration of a simplified SSM.</span><a class="headerlink" href="#ssm-simplified" title="Permalink to this image">¶</a></p>
+<p class="caption"><span class="caption-text">Illustration of a simplified SSM.</span><a class="headerlink" href="#ssm-simplified" title="Permalink to this image">¶</a></p>
 </div>
 </div>
 </div>
 </div>
 <div class="tex2jax_ignore mathjax_ignore section" id="hidden-markov-models">
 <div class="tex2jax_ignore mathjax_ignore section" id="hidden-markov-models">
@@ -910,17 +940,17 @@ meaning each row sums to one.
 We can visualize
 We can visualize
 the non-zero entries in the transition matrix by creating a state transition diagram,
 the non-zero entries in the transition matrix by creating a state transition diagram,
 as shown in
 as shown in
-<a class="reference internal" href="#casino-fig"><span class="std std-numref">Figure 5</span></a></p>
+<code class="xref std std-numref docutils literal notranslate"><span class="pre">Figure</span> <span class="pre">%s</span></code></p>
 <div class="figure align-default" id="casino-fig">
 <div class="figure align-default" id="casino-fig">
 <a class="reference internal image-reference" href="../../_images/casino.png"><img alt="../../_images/casino.png" src="../../_images/casino.png" style="width: 208.5px; height: 142.5px;" /></a>
 <a class="reference internal image-reference" href="../../_images/casino.png"><img alt="../../_images/casino.png" src="../../_images/casino.png" style="width: 208.5px; height: 142.5px;" /></a>
-<p class="caption"><span class="caption-number">Fig. 5 </span><span class="caption-text">Illustration of the casino HMM.</span><a class="headerlink" href="#casino-fig" title="Permalink to this image">¶</a></p>
+<p class="caption"><span class="caption-text">Illustration of the casino HMM.</span><a class="headerlink" href="#casino-fig" title="Permalink to this image">¶</a></p>
 </div>
 </div>
 <p>The  observation model
 <p>The  observation model
 <span class="math notranslate nohighlight">\(p(\obs_t|\hidden_t=j)\)</span> has the form</p>
 <span class="math notranslate nohighlight">\(p(\obs_t|\hidden_t=j)\)</span> has the form</p>
 <div class="math notranslate nohighlight">
 <div class="math notranslate nohighlight">
 \[p(\obs_t=k|\hidden_t=j) = \hmmObs_{jk} \]</div>
 \[p(\obs_t=k|\hidden_t=j) = \hmmObs_{jk} \]</div>
 <p>This is represented by the histograms associated with each
 <p>This is represented by the histograms associated with each
-state in <a class="reference internal" href="#casino-fig"><span class="std std-ref">Illustration of the casino HMM.</span></a>.</p>
+state in <a class="reference internal" href="ssm_old.html#casino-fig"><span class="std std-ref">Illustration of the casino HMM.</span></a>.</p>
 <p>Finally,
 <p>Finally,
 the initial state distribution is denoted by</p>
 the initial state distribution is denoted by</p>
 <div class="math notranslate nohighlight">
 <div class="math notranslate nohighlight">
@@ -966,7 +996,7 @@ the initial state distribution is denoted by</p>
 <div class="output stderr highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
 <div class="output stderr highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>WARNING:absl:No GPU/TPU found, falling back to CPU. (Set TF_CPP_MIN_LOG_LEVEL=0 and rerun for more info.)
 </pre></div>
 </pre></div>
 </div>
 </div>
-<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>&lt;distrax._src.utils.hmm.HMM object at 0x7fdfccf4e220&gt;
+<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>&lt;distrax._src.utils.hmm.HMM object at 0x7ff118fb6250&gt;
 </pre></div>
 </pre></div>
 </div>
 </div>
 </div>
 </div>
@@ -1118,7 +1148,7 @@ except now there is temporal correlation between the data points.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="cell_output docutils container">
 <div class="cell_output docutils container">
-<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>&lt;distrax._src.utils.hmm.HMM object at 0x7fdfcd00b370&gt;
+<div class="output stream highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>&lt;distrax._src.utils.hmm.HMM object at 0x7ff13bdd6910&gt;
 </pre></div>
 </pre></div>
 </div>
 </div>
 </div>
 </div>
@@ -1189,7 +1219,7 @@ except now there is temporal correlation between the data points.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="cell_output docutils container">
 <div class="cell_output docutils container">
-<div class="output text_plain highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>&lt;matplotlib.collections.PathCollection at 0x7fe009524460&gt;
+<div class="output text_plain highlight-myst-ansi notranslate"><div class="highlight"><pre><span></span>&lt;matplotlib.collections.PathCollection at 0x7ff0f13965b0&gt;
 </pre></div>
 </pre></div>
 </div>
 </div>
 <img alt="../../_images/ssm_16_1.png" src="../../_images/ssm_16_1.png" />
 <img alt="../../_images/ssm_16_1.png" src="../../_images/ssm_16_1.png" />
@@ -1200,7 +1230,7 @@ except now there is temporal correlation between the data points.</p>
 <div class="tex2jax_ignore mathjax_ignore section" id="linear-gaussian-ssms">
 <div class="tex2jax_ignore mathjax_ignore section" id="linear-gaussian-ssms">
 <span id="sec-lds-intro"></span><h1>Linear Gaussian SSMs<a class="headerlink" href="#linear-gaussian-ssms" title="Permalink to this headline">¶</a></h1>
 <span id="sec-lds-intro"></span><h1>Linear Gaussian SSMs<a class="headerlink" href="#linear-gaussian-ssms" title="Permalink to this headline">¶</a></h1>
 <p>Consider the state space model in
 <p>Consider the state space model in
-<a class="reference internal" href="#equation-eq-ssm-ar">(2)</a>
+<a class="reference internal" href="ssm_old.html#equation-eq-ssm-ar">()</a>
 where we assume the observations are conditionally iid given the
 where we assume the observations are conditionally iid given the
 hidden states and inputs (i.e. there are no auto-regressive dependencies
 hidden states and inputs (i.e. there are no auto-regressive dependencies
 between the observables).
 between the observables).
@@ -1209,8 +1239,8 @@ a stochastic nonlinear dynamical system (NLDS)
 by defining the distribution of the next hidden state
 by defining the distribution of the next hidden state
 as a deterministic function of the past state
 as a deterministic function of the past state
 plus random process noise <span class="math notranslate nohighlight">\(\vepsilon_t\)</span></p>
 plus random process noise <span class="math notranslate nohighlight">\(\vepsilon_t\)</span></p>
-<div class="amsmath math notranslate nohighlight" id="equation-9066c144-3414-4109-9887-8affa7f91845">
-<span class="eqno">(5)<a class="headerlink" href="#equation-9066c144-3414-4109-9887-8affa7f91845" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-55075864-a276-41e7-9ee4-562bc22d208e">
+<span class="eqno">()<a class="headerlink" href="#equation-55075864-a276-41e7-9ee4-562bc22d208e" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t, \vepsilon_t)  
 \hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t, \vepsilon_t)  
 \end{align}\]</div>
 \end{align}\]</div>
 <p>where <span class="math notranslate nohighlight">\(\vepsilon_t\)</span> is drawn from the distribution such
 <p>where <span class="math notranslate nohighlight">\(\vepsilon_t\)</span> is drawn from the distribution such
@@ -1219,14 +1249,14 @@ on <span class="math notranslate nohighlight">\(\hmmhid_t\)</span> matches <span
 Similarly we can rewrite the observation distributions
 Similarly we can rewrite the observation distributions
 as a deterministic function of the hidden state
 as a deterministic function of the hidden state
 plus observation noise <span class="math notranslate nohighlight">\(\veta_t\)</span>:</p>
 plus observation noise <span class="math notranslate nohighlight">\(\veta_t\)</span>:</p>
-<div class="amsmath math notranslate nohighlight" id="equation-d6af6306-abac-4fab-ba6e-d712f80bd82b">
-<span class="eqno">(6)<a class="headerlink" href="#equation-d6af6306-abac-4fab-ba6e-d712f80bd82b" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-138f0b31-ea11-4721-afc0-e18e9d527051">
+<span class="eqno">()<a class="headerlink" href="#equation-138f0b31-ea11-4721-afc0-e18e9d527051" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t, \veta_t)
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t, \veta_t)
 \end{align}\]</div>
 \end{align}\]</div>
 <p>If we assume additive Gaussian noise,
 <p>If we assume additive Gaussian noise,
 the model becomes</p>
 the model becomes</p>
-<div class="amsmath math notranslate nohighlight" id="equation-e5909cb6-e2ca-4c7c-ac3f-dd078f48931f">
-<span class="eqno">(7)<a class="headerlink" href="#equation-e5909cb6-e2ca-4c7c-ac3f-dd078f48931f" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-601226e9-9de7-492a-bcce-c2523c3e0bb2">
+<span class="eqno">()<a class="headerlink" href="#equation-601226e9-9de7-492a-bcce-c2523c3e0bb2" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t) +  \vepsilon_t  \\
 \hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t) +  \vepsilon_t  \\
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
 \end{align}\]</div>
 \end{align}\]</div>
@@ -1237,8 +1267,8 @@ We will call these Gaussian SSMs.</p>
 the transition function <span class="math notranslate nohighlight">\(\ssmDynFn\)</span>
 the transition function <span class="math notranslate nohighlight">\(\ssmDynFn\)</span>
 and the observation function <span class="math notranslate nohighlight">\(\ssmObsFn\)</span> are both linear,
 and the observation function <span class="math notranslate nohighlight">\(\ssmObsFn\)</span> are both linear,
 then we can rewrite the model as follows:</p>
 then we can rewrite the model as follows:</p>
-<div class="amsmath math notranslate nohighlight" id="equation-c68a12e7-6d0d-4658-ad2c-c50973deb5f2">
-<span class="eqno">(8)<a class="headerlink" href="#equation-c68a12e7-6d0d-4658-ad2c-c50973deb5f2" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-bf2ffb4e-ff52-4e0c-998d-a698869cf8ba">
+<span class="eqno">()<a class="headerlink" href="#equation-bf2ffb4e-ff52-4e0c-998d-a698869cf8ba" title="Permalink to this equation">¶</a></span>\[\begin{align}
 p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) &amp;= \gauss(\hmmhid_t|\ldsDyn_t \hmmhid_{t-1}
 p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) &amp;= \gauss(\hmmhid_t|\ldsDyn_t \hmmhid_{t-1}
 + \ldsDynIn_t \inputs_t, \vQ_t)
 + \ldsDynIn_t \inputs_t, \vQ_t)
 \\
 \\
@@ -1262,8 +1292,8 @@ $<span class="math notranslate nohighlight">\(\vz_t =\begin{pmatrix} u_t &amp; \
 to avoid confusion with the state and observation variables.)
 to avoid confusion with the state and observation variables.)
 If we use Euler discretization,
 If we use Euler discretization,
 the dynamics become</p>
 the dynamics become</p>
-<div class="amsmath math notranslate nohighlight" id="equation-08273d5d-fda9-4510-9c01-acfc84bd1eb4">
-<span class="eqno">(9)<a class="headerlink" href="#equation-08273d5d-fda9-4510-9c01-acfc84bd1eb4" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-238f2fdd-a337-4ee5-b6b1-43a880e401f8">
+<span class="eqno">()<a class="headerlink" href="#equation-238f2fdd-a337-4ee5-b6b1-43a880e401f8" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \underbrace{\begin{pmatrix} u_t\\ \dot{u}_t \\ v_t \\ \dot{v}_t \end{pmatrix}}_{\vz_t}
 \underbrace{\begin{pmatrix} u_t\\ \dot{u}_t \\ v_t \\ \dot{v}_t \end{pmatrix}}_{\vz_t}
   = 
   = 
 \underbrace{
 \underbrace{
@@ -1293,8 +1323,8 @@ to convert the continuous time process to discrete time.)</p>
 observe the location,
 observe the location,
 corrupted by  Gaussian noise.
 corrupted by  Gaussian noise.
 Thus the observation model becomes</p>
 Thus the observation model becomes</p>
-<div class="amsmath math notranslate nohighlight" id="equation-0db1173b-f406-4c45-bf81-d441e9d5e286">
-<span class="eqno">(10)<a class="headerlink" href="#equation-0db1173b-f406-4c45-bf81-d441e9d5e286" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-0323532b-7e9d-403c-9389-87d060a9634b">
+<span class="eqno">()<a class="headerlink" href="#equation-0323532b-7e9d-403c-9389-87d060a9634b" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \underbrace{\begin{pmatrix}  y_{1,t} \\  y_{2,t} \end{pmatrix}}_{\vy_t}
 \underbrace{\begin{pmatrix}  y_{1,t} \\  y_{2,t} \end{pmatrix}}_{\vy_t}
   &amp;=
   &amp;=
     \underbrace{
     \underbrace{
@@ -1410,7 +1440,7 @@ The results are shown below.</p>
 </div>
 </div>
 </div>
 </div>
 <p>The main task is to infer the hidden states given the noisy
 <p>The main task is to infer the hidden states given the noisy
-observations, i.e., <span class="math notranslate nohighlight">\(p(\vz|\vy,\vtheta)\)</span>. We discuss the topic of inference in <a class="reference internal" href="#sec-inference"><span class="std std-ref">Inferential goals</span></a>.</p>
+observations, i.e., <span class="math notranslate nohighlight">\(p(\vz|\vy,\vtheta)\)</span>. We discuss the topic of inference in <a class="reference internal" href="ssm_old.html#sec-inference"><span class="std std-ref">Inferential goals</span></a>.</p>
 </div>
 </div>
 </div>
 </div>
 <div class="tex2jax_ignore mathjax_ignore section" id="nonlinear-gaussian-ssms">
 <div class="tex2jax_ignore mathjax_ignore section" id="nonlinear-gaussian-ssms">
@@ -1418,8 +1448,8 @@ observations, i.e., <span class="math notranslate nohighlight">\(p(\vz|\vy,\vthe
 <p>In this section, we consider SSMs in which the dynamics and/or observation models are nonlinear,
 <p>In this section, we consider SSMs in which the dynamics and/or observation models are nonlinear,
 but the process noise and observation noise are Gaussian.
 but the process noise and observation noise are Gaussian.
 That is,</p>
 That is,</p>
-<div class="amsmath math notranslate nohighlight" id="equation-9df8d1b9-ea7b-42a3-953c-d168bf6c855a">
-<span class="eqno">(11)<a class="headerlink" href="#equation-9df8d1b9-ea7b-42a3-953c-d168bf6c855a" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-278de14a-670b-48ad-82c5-fd3b5c4644ec">
+<span class="eqno">()<a class="headerlink" href="#equation-278de14a-670b-48ad-82c5-fd3b5c4644ec" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t) +  \vepsilon_t  \\
 \hmmhid_t &amp;= \ssmDynFn(\hmmhid_{t-1}, \inputs_t) +  \vepsilon_t  \\
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
 \end{align}\]</div>
 \end{align}\]</div>
@@ -1430,14 +1460,14 @@ This is a very widely used model class. We give some examples below.</p>
 <span id="sec-pendulum"></span><h2>Example: tracking a 1d pendulum<a class="headerlink" href="#example-tracking-a-1d-pendulum" title="Permalink to this headline">¶</a></h2>
 <span id="sec-pendulum"></span><h2>Example: tracking a 1d pendulum<a class="headerlink" href="#example-tracking-a-1d-pendulum" title="Permalink to this headline">¶</a></h2>
 <div class="figure align-default" id="fig-pendulum">
 <div class="figure align-default" id="fig-pendulum">
 <a class="reference internal image-reference" href="../../_images/pendulum.png"><img alt="../../_images/pendulum.png" src="../../_images/pendulum.png" style="width: 265.0px; height: 295.0px;" /></a>
 <a class="reference internal image-reference" href="../../_images/pendulum.png"><img alt="../../_images/pendulum.png" src="../../_images/pendulum.png" style="width: 265.0px; height: 295.0px;" /></a>
-<p class="caption"><span class="caption-number">Fig. 6 </span><span class="caption-text">Illustration of a pendulum swinging.
+<p class="caption"><span class="caption-text">Illustration of a pendulum swinging.
 <span class="math notranslate nohighlight">\(g\)</span> is the force of gravity,
 <span class="math notranslate nohighlight">\(g\)</span> is the force of gravity,
 <span class="math notranslate nohighlight">\(w(t)\)</span> is a random external force,
 <span class="math notranslate nohighlight">\(w(t)\)</span> is a random external force,
 and <span class="math notranslate nohighlight">\(\alpha\)</span> is the angle wrt the vertical.
 and <span class="math notranslate nohighlight">\(\alpha\)</span> is the angle wrt the vertical.
 Based on <span id="id4">[<a class="reference internal" href="../../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span> fig 3.10.</span><a class="headerlink" href="#fig-pendulum" title="Permalink to this image">¶</a></p>
 Based on <span id="id4">[<a class="reference internal" href="../../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span> fig 3.10.</span><a class="headerlink" href="#fig-pendulum" title="Permalink to this image">¶</a></p>
 </div>
 </div>
 <p>Consider a simple pendulum of unit mass and length swinging from
 <p>Consider a simple pendulum of unit mass and length swinging from
-a fixed attachment, as in <a class="reference internal" href="#fig-pendulum"><span class="std std-ref">Illustration of a pendulum swinging.
+a fixed attachment, as in <a class="reference internal" href="ssm_old.html#fig-pendulum"><span class="std std-ref">Illustration of a pendulum swinging.
 g is the force of gravity,
 g is the force of gravity,
 w(t) is a random external force,
 w(t) is a random external force,
 and \alpha is the angle wrt the vertical.
 and \alpha is the angle wrt the vertical.
@@ -1447,16 +1477,16 @@ However, in the real world, there are often unknown forces at work
 (e.g., air turbulence, friction).
 (e.g., air turbulence, friction).
 We will model these by a continuous time random Gaussian noise process <span class="math notranslate nohighlight">\(w(t)\)</span>.
 We will model these by a continuous time random Gaussian noise process <span class="math notranslate nohighlight">\(w(t)\)</span>.
 This gives rise to the following differential equation:</p>
 This gives rise to the following differential equation:</p>
-<div class="amsmath math notranslate nohighlight" id="equation-9347399e-e7e2-4dfb-9610-dc7f3114d033">
-<span class="eqno">(12)<a class="headerlink" href="#equation-9347399e-e7e2-4dfb-9610-dc7f3114d033" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-5d4b0984-c945-4490-b983-285aa652bf4a">
+<span class="eqno">()<a class="headerlink" href="#equation-5d4b0984-c945-4490-b983-285aa652bf4a" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \frac{d^2 \alpha}{d t^2}
 \frac{d^2 \alpha}{d t^2}
 = -g \sin(\alpha) + w(t)
 = -g \sin(\alpha) + w(t)
 \end{align}\]</div>
 \end{align}\]</div>
 <p>We can write this as a nonlinear SSM by defining the state to be
 <p>We can write this as a nonlinear SSM by defining the state to be
 <span class="math notranslate nohighlight">\(z_1(t) = \alpha(t)\)</span> and <span class="math notranslate nohighlight">\(z_2(t) = d\alpha(t)/dt\)</span>.
 <span class="math notranslate nohighlight">\(z_1(t) = \alpha(t)\)</span> and <span class="math notranslate nohighlight">\(z_2(t) = d\alpha(t)/dt\)</span>.
 Thus</p>
 Thus</p>
-<div class="amsmath math notranslate nohighlight" id="equation-ea747fb0-738f-4b30-980b-b1adc2a2c942">
-<span class="eqno">(13)<a class="headerlink" href="#equation-ea747fb0-738f-4b30-980b-b1adc2a2c942" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-ace86287-4e89-4670-932e-5934eebf22a4">
+<span class="eqno">()<a class="headerlink" href="#equation-ace86287-4e89-4670-932e-5934eebf22a4" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \frac{d \vz}{dt}
 \frac{d \vz}{dt}
 = \begin{pmatrix} z_2 \\ -g \sin(z_1) \end{pmatrix}
 = \begin{pmatrix} z_2 \\ -g \sin(z_1) \end{pmatrix}
 + \begin{pmatrix} 0 \\ 1 \end{pmatrix} w(t)
 + \begin{pmatrix} 0 \\ 1 \end{pmatrix} w(t)
@@ -1464,8 +1494,8 @@ Thus</p>
 <p>If we discretize this step size <span class="math notranslate nohighlight">\(\Delta\)</span>,
 <p>If we discretize this step size <span class="math notranslate nohighlight">\(\Delta\)</span>,
 we get the following
 we get the following
 formulation <span id="id5">[<a class="reference internal" href="../../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span> p74:</p>
 formulation <span id="id5">[<a class="reference internal" href="../../bib.html#id18" title="Simo Sarkka. Bayesian Filtering and Smoothing. Cambridge University Press, 2013. URL: https://users.aalto.fi/~ssarkka/pub/cup_book_online_20131111.pdf.">Sar13</a>]</span> p74:</p>
-<div class="amsmath math notranslate nohighlight" id="equation-29cb5109-03de-47b6-9937-47bc82482810">
-<span class="eqno">(14)<a class="headerlink" href="#equation-29cb5109-03de-47b6-9937-47bc82482810" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-82334c59-9e81-4adf-80b1-2a6e0b5c716e">
+<span class="eqno">()<a class="headerlink" href="#equation-82334c59-9e81-4adf-80b1-2a6e0b5c716e" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \underbrace{
 \underbrace{
   \begin{pmatrix} z_{1,t} \\ z_{2,t} \end{pmatrix}
   \begin{pmatrix} z_{1,t} \\ z_{2,t} \end{pmatrix}
   }_{\hmmhid_t}
   }_{\hmmhid_t}
@@ -1477,8 +1507,8 @@ formulation <span id="id5">[<a class="reference internal" href="../../bib.html#i
 +\vq_{t-1}
 +\vq_{t-1}
 \end{align}\]</div>
 \end{align}\]</div>
 <p>where <span class="math notranslate nohighlight">\(\vq_{t-1} \sim \gauss(\vzero,\vQ)\)</span> with</p>
 <p>where <span class="math notranslate nohighlight">\(\vq_{t-1} \sim \gauss(\vzero,\vQ)\)</span> with</p>
-<div class="amsmath math notranslate nohighlight" id="equation-b3c1ea35-0f35-4cf8-b245-d7f4fc1571f1">
-<span class="eqno">(15)<a class="headerlink" href="#equation-b3c1ea35-0f35-4cf8-b245-d7f4fc1571f1" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-2bef89dc-08e4-4c84-a46f-9fa35103d859">
+<span class="eqno">()<a class="headerlink" href="#equation-2bef89dc-08e4-4c84-a46f-9fa35103d859" title="Permalink to this equation">¶</a></span>\[\begin{align}
 \vQ = q^c \begin{pmatrix}
 \vQ = q^c \begin{pmatrix}
   \frac{\Delta^3}{3} &amp;   \frac{\Delta^2}{2} \\
   \frac{\Delta^3}{3} &amp;   \frac{\Delta^2}{2} \\
   \frac{\Delta^2}{2} &amp; \Delta
   \frac{\Delta^2}{2} &amp; \Delta
@@ -1488,16 +1518,16 @@ formulation <span id="id5">[<a class="reference internal" href="../../bib.html#i
 of the continuous-time noise process.</p>
 of the continuous-time noise process.</p>
 <p>If we observe the angular position, we
 <p>If we observe the angular position, we
 get the linear observation model</p>
 get the linear observation model</p>
-<div class="amsmath math notranslate nohighlight" id="equation-ab0d8335-4aae-4993-bc24-acfab6dff348">
-<span class="eqno">(16)<a class="headerlink" href="#equation-ab0d8335-4aae-4993-bc24-acfab6dff348" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-695167fc-e0f3-4ad3-a41e-5c07625725f5">
+<span class="eqno">()<a class="headerlink" href="#equation-695167fc-e0f3-4ad3-a41e-5c07625725f5" title="Permalink to this equation">¶</a></span>\[\begin{align}
 y_t = \alpha_t + r_t =  h(\hmmhid_t) + r_t
 y_t = \alpha_t + r_t =  h(\hmmhid_t) + r_t
 \end{align}\]</div>
 \end{align}\]</div>
 <p>where <span class="math notranslate nohighlight">\(h(\hmmhid_t) = z_{1,t}\)</span>
 <p>where <span class="math notranslate nohighlight">\(h(\hmmhid_t) = z_{1,t}\)</span>
 and <span class="math notranslate nohighlight">\(r_t\)</span> is the observation noise.
 and <span class="math notranslate nohighlight">\(r_t\)</span> is the observation noise.
 If we only observe  the horizontal position,
 If we only observe  the horizontal position,
 we get the nonlinear observation model</p>
 we get the nonlinear observation model</p>
-<div class="amsmath math notranslate nohighlight" id="equation-a461db5e-6e05-4970-8a1d-56279026db45">
-<span class="eqno">(17)<a class="headerlink" href="#equation-a461db5e-6e05-4970-8a1d-56279026db45" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-443e3309-c8f0-4a80-84ad-1e6acc85158d">
+<span class="eqno">()<a class="headerlink" href="#equation-443e3309-c8f0-4a80-84ad-1e6acc85158d" title="Permalink to this equation">¶</a></span>\[\begin{align}
 y_t = \sin(\alpha_t) + r_t =  h(\hmmhid_t) + r_t
 y_t = \sin(\alpha_t) + r_t =  h(\hmmhid_t) + r_t
 \end{align}\]</div>
 \end{align}\]</div>
 <p>where <span class="math notranslate nohighlight">\(h(\hmmhid_t) = \sin(z_{1,t})\)</span>.</p>
 <p>where <span class="math notranslate nohighlight">\(h(\hmmhid_t) = \sin(z_{1,t})\)</span>.</p>
@@ -1506,8 +1536,8 @@ y_t = \sin(\alpha_t) + r_t =  h(\hmmhid_t) + r_t
 <div class="tex2jax_ignore mathjax_ignore section" id="inferential-goals">
 <div class="tex2jax_ignore mathjax_ignore section" id="inferential-goals">
 <span id="sec-inference"></span><h1>Inferential goals<a class="headerlink" href="#inferential-goals" title="Permalink to this headline">¶</a></h1>
 <span id="sec-inference"></span><h1>Inferential goals<a class="headerlink" href="#inferential-goals" title="Permalink to this headline">¶</a></h1>
 <div class="figure align-default" id="fig-dbn-inference">
 <div class="figure align-default" id="fig-dbn-inference">
-<a class="reference internal image-reference" href="figures/dbn-inference-problems-tikz.png"><img alt="figures/dbn-inference-problems-tikz.png" src="figures/dbn-inference-problems-tikz.png" /></a>
-<p class="caption"><span class="caption-number">Fig. 7 </span><span class="caption-text">Illustration of the different kinds of inference in an SSM.
+<a class="reference internal image-reference" href="../../_images/inference-problems-tikz.png"><img alt="../../_images/inference-problems-tikz.png" src="../../_images/inference-problems-tikz.png" style="width: 1174.0px; height: 898.0px;" /></a>
+<p class="caption"><span class="caption-text">Illustration of the different kinds of inference in an SSM.
 The main kinds of inference for state-space models.
 The main kinds of inference for state-space models.
 The shaded region is the interval for which we have data.
 The shaded region is the interval for which we have data.
 The arrow represents the time step at which we want to perform inference.
 The arrow represents the time step at which we want to perform inference.
@@ -1533,14 +1563,14 @@ infers <span class="math notranslate nohighlight">\(\ell\)</span> steps in the p
 </ul>
 </ul>
 <p>We may also want to compute the
 <p>We may also want to compute the
 predictive distribution <span class="math notranslate nohighlight">\(h\)</span> steps into the future:</p>
 predictive distribution <span class="math notranslate nohighlight">\(h\)</span> steps into the future:</p>
-<div class="amsmath math notranslate nohighlight" id="equation-d98017ae-0a2b-4385-a624-ffcd12627c04">
-<span class="eqno">(18)<a class="headerlink" href="#equation-d98017ae-0a2b-4385-a624-ffcd12627c04" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-531666e2-7f4a-4610-9b92-59cefc945bb6">
+<span class="eqno">()<a class="headerlink" href="#equation-531666e2-7f4a-4610-9b92-59cefc945bb6" title="Permalink to this equation">¶</a></span>\[\begin{align}
 p(\hmmobs_{t+h}|\hmmobs_{1:t})
 p(\hmmobs_{t+h}|\hmmobs_{1:t})
 &amp;= \sum_{\hmmhid_{t+h}} p(\hmmobs_{t+h}|\hmmhid_{t+h}) p(\hmmhid_{t+h}|\hmmobs_{1:t})
 &amp;= \sum_{\hmmhid_{t+h}} p(\hmmobs_{t+h}|\hmmhid_{t+h}) p(\hmmhid_{t+h}|\hmmobs_{1:t})
 \end{align}\]</div>
 \end{align}\]</div>
 <p>where the hidden state predictive distribution is</p>
 <p>where the hidden state predictive distribution is</p>
-<div class="amsmath math notranslate nohighlight" id="equation-42bbc1e2-1230-4b1d-abe0-8d6fadf71b3a">
-<span class="eqno">(19)<a class="headerlink" href="#equation-42bbc1e2-1230-4b1d-abe0-8d6fadf71b3a" title="Permalink to this equation">¶</a></span>\[\begin{align}
+<div class="amsmath math notranslate nohighlight" id="equation-44f6d0e0-82ee-49a0-813e-22551b67f12a">
+<span class="eqno">()<a class="headerlink" href="#equation-44f6d0e0-82ee-49a0-813e-22551b67f12a" title="Permalink to this equation">¶</a></span>\[\begin{align}
 p(\hmmhid_{t+h}|\hmmobs_{1:t})
 p(\hmmhid_{t+h}|\hmmobs_{1:t})
 &amp;= \sum_{\hmmhid_{t:t+h-1}}
 &amp;= \sum_{\hmmhid_{t:t+h-1}}
  p(\hmmhid_t|\hmmobs_{1:t}) 
  p(\hmmhid_t|\hmmobs_{1:t}) 
@@ -1549,7 +1579,7 @@ p(\hmmhid_{t+h}|\hmmobs_{1:t})
 \cdots
 \cdots
  p(\hmmhid_{t+h}|\hmmhid_{t+h-1})
  p(\hmmhid_{t+h}|\hmmhid_{t+h-1})
 \end{align}\]</div>
 \end{align}\]</div>
-<p>See <a class="reference internal" href="#fig-dbn-inference"><span class="std std-ref">Illustration of the different kinds of inference in an SSM.
+<p>See <a class="reference internal" href="ssm_old.html#fig-dbn-inference"><span class="std std-ref">Illustration of the different kinds of inference in an SSM.
 The main kinds of inference for state-space models.
 The main kinds of inference for state-space models.
 The shaded region is the interval for which we have data.
 The shaded region is the interval for which we have data.
 The arrow represents the time step at which we want to perform inference.
 The arrow represents the time step at which we want to perform inference.
@@ -1723,7 +1753,7 @@ to the casino HMM from <span class="xref std std-ref">sec:casino</span>.</p>
 <div class="section" id="example-inference-in-the-tracking-ssm">
 <div class="section" id="example-inference-in-the-tracking-ssm">
 <h2>Example: inference in the tracking SSM<a class="headerlink" href="#example-inference-in-the-tracking-ssm" title="Permalink to this headline">¶</a></h2>
 <h2>Example: inference in the tracking SSM<a class="headerlink" href="#example-inference-in-the-tracking-ssm" title="Permalink to this headline">¶</a></h2>
 <p>We now illustrate filtering, smoothing and MAP decoding applied
 <p>We now illustrate filtering, smoothing and MAP decoding applied
-to the 2d tracking HMM from <a class="reference internal" href="#sec-tracking-lds"><span class="std std-ref">Example: tracking a 2d point</span></a>.</p>
+to the 2d tracking HMM from <a class="reference internal" href="ssm_old.html#sec-tracking-lds"><span class="std std-ref">Example: tracking a 2d point</span></a>.</p>
 </div>
 </div>
 </div>
 </div>
 
 
@@ -1751,21 +1781,7 @@ to the 2d tracking HMM from <a class="reference internal" href="#sec-tracking-ld
               
               
             
             
                 <!-- Previous / next buttons -->
                 <!-- Previous / next buttons -->
-<div class='prev-next-area'> 
-    <a class='left-prev' id="prev-link" href="../scratch.html" title="previous page">
-        <i class="fas fa-angle-left"></i>
-        <div class="prev-next-info">
-            <p class="prev-next-subtitle">previous</p>
-            <p class="prev-next-title">Scratchpad</p>
-        </div>
-    </a>
-    <a class='right-next' id="next-link" href="../hmm/hmm_index.html" title="next page">
-    <div class="prev-next-info">
-        <p class="prev-next-subtitle">next</p>
-        <p class="prev-next-title">Inference in discrete SSMs</p>
-    </div>
-    <i class="fas fa-angle-right"></i>
-    </a>
+<div class='prev-next-area'>
 </div>
 </div>
             
             
         </div>
         </div>

+ 511 - 0
_build/html/chapters/ssm/ssm_index.html

@@ -0,0 +1,511 @@
+
+<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>State Space Models &#8212; State Space Models: A Modern Approach</title>
+    
+  <link href="../../_static/css/theme.css" rel="stylesheet">
+  <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
+
+    
+  <link rel="stylesheet"
+    href="../../_static/vendor/fontawesome/5.13.0/css/all.min.css">
+  <link rel="preload" as="font" type="font/woff2" crossorigin
+    href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2">
+  <link rel="preload" as="font" type="font/woff2" crossorigin
+    href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2">
+
+    
+      
+
+    
+    <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/sphinx-book-theme.css?digest=c3fdc42140077d1ad13ad2f1588a4309" />
+    <link rel="stylesheet" type="text/css" href="../../_static/togglebutton.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/mystnb.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/sphinx-thebe.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/panels-variables.06eb56fa6e07937060861dad626602ad.css" />
+    
+  <link rel="preload" as="script" href="../../_static/js/index.be7d3bbb2ef33a8344ce.js">
+
+    <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+    <script src="../../_static/jquery.js"></script>
+    <script src="../../_static/underscore.js"></script>
+    <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/clipboard.min.js"></script>
+    <script src="../../_static/copybutton.js"></script>
+    <script>let toggleHintShow = 'Click to show';</script>
+    <script>let toggleHintHide = 'Click to hide';</script>
+    <script>let toggleOpenOnPrint = 'true';</script>
+    <script src="../../_static/togglebutton.js"></script>
+    <script>var togglebuttonSelector = '.toggle, .admonition.dropdown, .tag_hide_input div.cell_input, .tag_hide-input div.cell_input, .tag_hide_output div.cell_output, .tag_hide-output div.cell_output, .tag_hide_cell.cell, .tag_hide-cell.cell';</script>
+    <script src="../../_static/sphinx-book-theme.d59cb220de22ca1c485ebbdc042f0030.js"></script>
+    <script>const THEBE_JS_URL = "https://unpkg.com/thebe@0.8.2/lib/index.js"
+const thebe_selector = ".thebe,.cell"
+const thebe_selector_input = "pre"
+const thebe_selector_output = ".output, .cell_output"
+</script>
+    <script async="async" src="../../_static/sphinx-thebe.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" />
+    <link rel="next" title="What are State Space Models?" href="ssm_intro.html" />
+    <link rel="prev" title="Scratchpad" href="../scratch.html" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <meta name="docsearch:language" content="None">
+    
+
+    <!-- Google Analytics -->
+    
+  </head>
+  <body data-spy="scroll" data-target="#bd-toc-nav" data-offset="80">
+    
+    <div class="container-fluid" id="banner"></div>
+
+    
+
+    <div class="container-xl">
+      <div class="row">
+          
+<div class="col-12 col-md-3 bd-sidebar site-navigation show" id="site-navigation">
+    
+        <div class="navbar-brand-box">
+    <a class="navbar-brand text-wrap" href="../../index.html">
+      
+      
+      
+      <h1 class="site-logo" id="site-title">State Space Models: A Modern Approach</h1>
+      
+    </a>
+</div><form class="bd-search d-flex align-items-center" action="../../search.html" method="get">
+  <i class="icon fas fa-search"></i>
+  <input type="search" class="form-control" name="q" id="search-input" placeholder="Search this book..." aria-label="Search this book..." autocomplete="off" >
+</form><nav class="bd-links" id="bd-docs-nav" aria-label="Main">
+    <div class="bd-toc-item active">
+        <ul class="nav bd-sidenav">
+ <li class="toctree-l1">
+  <a class="reference internal" href="../../root.html">
+   State Space Models: A Modern Approach
+  </a>
+ </li>
+</ul>
+<ul class="current nav bd-sidenav">
+ <li class="toctree-l1">
+  <a class="reference internal" href="../scratch.html">
+   Scratchpad
+  </a>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="current reference internal" href="#">
+   State Space Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <label for="toctree-checkbox-1">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="hmm.html">
+     Hidden Markov Models
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_filter.html">
+     HMM filtering (forwards algorithm)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_smoother.html">
+     HMM smoothing (forwards-backwards algorithm)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_viterbi.html">
+     Viterbi algorithm
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_parallel.html">
+     Parallel HMM  smoothing
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_sampling.html">
+     Forwards-filtering backwards-sampling algorithm
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../lgssm/lgssm_index.html">
+   Linear-Gaussian SSMs
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_filter.html">
+     Kalman filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_smoother.html">
+     Kalman (RTS) smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_parallel.html">
+     Parallel Kalman Smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_sampling.html">
+     Forwards-filtering backwards sampling
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../extended/extended_index.html">
+   Extended (linearized) methods
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_filter.html">
+     Extended Kalman filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_smoother.html">
+     Extended Kalman smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_parallel.html">
+     Parallel extended Kalman smoothing
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../unscented/unscented_index.html">
+   Unscented methods
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../unscented/unscented_filter.html">
+     Unscented filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../unscented/unscented_smoother.html">
+     Unscented smoothing
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../quadrature/quadrature_index.html">
+   Quadrature and cubature methods
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../postlin/postlin_index.html">
+   Posterior linearization
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../adf/adf_index.html">
+   Assumed Density Filtering
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../vi/vi_index.html">
+   Variational inference
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../pf/pf_index.html">
+   Particle filtering
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../smc/smc_index.html">
+   Sequential Monte Carlo
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../learning/learning_index.html">
+   Offline parameter estimation (learning)
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../tracking/tracking_index.html">
+   Multi-target tracking
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../ensemble/ensemble_index.html">
+   Data assimilation using Ensemble Kalman filter
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../bnp/bnp_index.html">
+   Bayesian non-parametric SSMs
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../changepoint/changepoint_index.html">
+   Changepoint detection
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../timeseries/timeseries_index.html">
+   Timeseries forecasting
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../gp/gp_index.html">
+   Markovian Gaussian processes
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../ode/ode_index.html">
+   Differential equations and SSMs
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../control/control_index.html">
+   Optimal control
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../../bib.html">
+   Bibliography
+  </a>
+ </li>
+</ul>
+
+    </div>
+</nav> <!-- To handle the deprecated key -->
+
+<div class="navbar_extra_footer">
+  Powered by <a href="https://jupyterbook.org">Jupyter Book</a>
+</div>
+
+</div>
+
+
+          
+
+
+          
+<main class="col py-md-3 pl-md-4 bd-content overflow-auto" role="main">
+    
+    <div class="topbar container-xl fixed-top">
+    <div class="topbar-contents row">
+        <div class="col-12 col-md-3 bd-topbar-whitespace site-navigation show"></div>
+        <div class="col pl-md-4 topbar-main">
+            
+            <button id="navbar-toggler" class="navbar-toggler ml-0" type="button" data-toggle="collapse"
+                data-toggle="tooltip" data-placement="bottom" data-target=".site-navigation" aria-controls="navbar-menu"
+                aria-expanded="true" aria-label="Toggle navigation" aria-controls="site-navigation"
+                title="Toggle navigation" data-toggle="tooltip" data-placement="left">
+                <i class="fas fa-bars"></i>
+                <i class="fas fa-arrow-left"></i>
+                <i class="fas fa-arrow-up"></i>
+            </button>
+            
+            
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn" aria-label="Download this page"><i
+            class="fas fa-download"></i></button>
+
+    <div class="dropdown-buttons">
+        <!-- ipynb file if we had a myst markdown file -->
+        
+        <!-- Download raw file -->
+        <a class="dropdown-buttons" href="../../_sources/chapters/ssm/ssm_index.md"><button type="button"
+                class="btn btn-secondary topbarbtn" title="Download source file" data-toggle="tooltip"
+                data-placement="left">.md</button></a>
+        <!-- Download PDF via print -->
+        <button type="button" id="download-print" class="btn btn-secondary topbarbtn" title="Print to PDF"
+                onclick="printPdf(this)" data-toggle="tooltip" data-placement="left">.pdf</button>
+    </div>
+</div>
+
+            <!-- Source interaction buttons -->
+
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn"
+        aria-label="Connect with source repository"><i class="fab fa-github"></i></button>
+    <div class="dropdown-buttons sourcebuttons">
+        <a class="repository-button"
+            href="https://github.com/probml/ssm-book"><button type="button" class="btn btn-secondary topbarbtn"
+                data-toggle="tooltip" data-placement="left" title="Source repository"><i
+                    class="fab fa-github"></i>repository</button></a>
+        <a class="issues-button"
+            href="https://github.com/probml/ssm-book/issues/new?title=Issue%20on%20page%20%2Fchapters/ssm/ssm_index.html&body=Your%20issue%20content%20here."><button
+                type="button" class="btn btn-secondary topbarbtn" data-toggle="tooltip" data-placement="left"
+                title="Open an issue"><i class="fas fa-lightbulb"></i>open issue</button></a>
+        
+    </div>
+</div>
+
+            <!-- Full screen (wrap in <a> to have style consistency -->
+
+<a class="full-screen-button"><button type="button" class="btn btn-secondary topbarbtn" data-toggle="tooltip"
+        data-placement="bottom" onclick="toggleFullScreen()" aria-label="Fullscreen mode"
+        title="Fullscreen mode"><i
+            class="fas fa-expand"></i></button></a>
+
+            <!-- Launch buttons -->
+
+        </div>
+
+        <!-- Table of contents -->
+        <div class="d-none d-md-block col-md-2 bd-toc show noprint">
+            
+        </div>
+    </div>
+</div>
+    <div id="main-content" class="row">
+        <div class="col-12 col-md-9 pl-md-3 pr-md-0">
+            <!-- Table of contents that is only displayed when printing the page -->
+            <div id="jb-print-docs-body" class="onlyprint">
+                <h1>State Space Models</h1>
+                <!-- Table of contents -->
+                <div id="print-main-content">
+                    <div id="jb-print-toc">
+                        
+                    </div>
+                </div>
+            </div>
+            
+              <div>
+                
+  <div class="tex2jax_ignore mathjax_ignore section" id="state-space-models">
+<span id="ch-ssm"></span><h1>State Space Models<a class="headerlink" href="#state-space-models" title="Permalink to this headline">¶</a></h1>
+<p>This chapter introduces state space models (SSMs).</p>
+<div class="toctree-wrapper compound">
+<ul>
+<li class="toctree-l1"><a class="reference internal" href="ssm_intro.html">What are State Space Models?</a></li>
+<li class="toctree-l1"><a class="reference internal" href="hmm.html">Hidden Markov Models</a></li>
+<li class="toctree-l1"><a class="reference internal" href="lds.html">Linear Gaussian SSMs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="nlds.html">Nonlinear Gaussian SSMs</a></li>
+<li class="toctree-l1"><a class="reference internal" href="inference.html">Inferential goals</a></li>
+</ul>
+</div>
+</div>
+
+    <script type="text/x-thebe-config">
+    {
+        requestKernel: true,
+        binderOptions: {
+            repo: "binder-examples/jupyter-stacks-datascience",
+            ref: "master",
+        },
+        codeMirrorConfig: {
+            theme: "abcdef",
+            mode: "python"
+        },
+        kernelOptions: {
+            kernelName: "python3",
+            path: "./chapters/ssm"
+        },
+        predefinedOutput: true
+    }
+    </script>
+    <script>kernelName = 'python3'</script>
+
+              </div>
+              
+            
+                <!-- Previous / next buttons -->
+<div class='prev-next-area'> 
+    <a class='left-prev' id="prev-link" href="../scratch.html" title="previous page">
+        <i class="fas fa-angle-left"></i>
+        <div class="prev-next-info">
+            <p class="prev-next-subtitle">previous</p>
+            <p class="prev-next-title">Scratchpad</p>
+        </div>
+    </a>
+    <a class='right-next' id="next-link" href="ssm_intro.html" title="next page">
+    <div class="prev-next-info">
+        <p class="prev-next-subtitle">next</p>
+        <p class="prev-next-title">What are State Space Models?</p>
+    </div>
+    <i class="fas fa-angle-right"></i>
+    </a>
+</div>
+            
+        </div>
+    </div>
+    <footer class="footer">
+  <p>
+    
+      By Kevin Murphy, Scott Linderman, et al.<br/>
+    
+        &copy; Copyright 2021.<br/>
+  </p>
+</footer>
+</main>
+
+
+      </div>
+    </div>
+  
+  <script src="../../_static/js/index.be7d3bbb2ef33a8344ce.js"></script>
+
+  </body>
+</html>

+ 744 - 0
_build/html/chapters/ssm/ssm_intro.html

@@ -0,0 +1,744 @@
+
+<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset="utf-8" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
+    <title>What are State Space Models? &#8212; State Space Models: A Modern Approach</title>
+    
+  <link href="../../_static/css/theme.css" rel="stylesheet">
+  <link href="../../_static/css/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
+
+    
+  <link rel="stylesheet"
+    href="../../_static/vendor/fontawesome/5.13.0/css/all.min.css">
+  <link rel="preload" as="font" type="font/woff2" crossorigin
+    href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-solid-900.woff2">
+  <link rel="preload" as="font" type="font/woff2" crossorigin
+    href="../../_static/vendor/fontawesome/5.13.0/webfonts/fa-brands-400.woff2">
+
+    
+      
+
+    
+    <link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/sphinx-book-theme.css?digest=c3fdc42140077d1ad13ad2f1588a4309" />
+    <link rel="stylesheet" type="text/css" href="../../_static/togglebutton.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/mystnb.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/sphinx-thebe.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/panels-main.c949a650a448cc0ae9fd3441c0e17fb0.css" />
+    <link rel="stylesheet" type="text/css" href="../../_static/panels-variables.06eb56fa6e07937060861dad626602ad.css" />
+    
+  <link rel="preload" as="script" href="../../_static/js/index.be7d3bbb2ef33a8344ce.js">
+
+    <script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
+    <script src="../../_static/jquery.js"></script>
+    <script src="../../_static/underscore.js"></script>
+    <script src="../../_static/doctools.js"></script>
+    <script src="../../_static/clipboard.min.js"></script>
+    <script src="../../_static/copybutton.js"></script>
+    <script>let toggleHintShow = 'Click to show';</script>
+    <script>let toggleHintHide = 'Click to hide';</script>
+    <script>let toggleOpenOnPrint = 'true';</script>
+    <script src="../../_static/togglebutton.js"></script>
+    <script>var togglebuttonSelector = '.toggle, .admonition.dropdown, .tag_hide_input div.cell_input, .tag_hide-input div.cell_input, .tag_hide_output div.cell_output, .tag_hide-output div.cell_output, .tag_hide_cell.cell, .tag_hide-cell.cell';</script>
+    <script src="../../_static/sphinx-book-theme.d59cb220de22ca1c485ebbdc042f0030.js"></script>
+    <script>const THEBE_JS_URL = "https://unpkg.com/thebe@0.8.2/lib/index.js"
+const thebe_selector = ".thebe,.cell"
+const thebe_selector_input = "pre"
+const thebe_selector_output = ".output, .cell_output"
+</script>
+    <script async="async" src="../../_static/sphinx-thebe.js"></script>
+    <script>window.MathJax = {"TeX": {"Macros": {"N": "\\mathbb{N}", "floor": ["\\lfloor#1\\rfloor", 1], "bmat": ["\\left[\\begin{array}"], "emat": ["\\end{array}\\right]"]}}, "options": {"processHtmlClass": "tex2jax_process|mathjax_process|math|output_area"}}</script>
+    <script defer="defer" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
+    <link rel="index" title="Index" href="../../genindex.html" />
+    <link rel="search" title="Search" href="../../search.html" />
+    <link rel="next" title="Hidden Markov Models" href="hmm.html" />
+    <link rel="prev" title="State Space Models" href="ssm_index.html" />
+    <meta name="viewport" content="width=device-width, initial-scale=1" />
+    <meta name="docsearch:language" content="None">
+    
+
+    <!-- Google Analytics -->
+    
+  </head>
+  <body data-spy="scroll" data-target="#bd-toc-nav" data-offset="80">
+    
+    <div class="container-fluid" id="banner"></div>
+
+    
+
+    <div class="container-xl">
+      <div class="row">
+          
+<div class="col-12 col-md-3 bd-sidebar site-navigation show" id="site-navigation">
+    
+        <div class="navbar-brand-box">
+    <a class="navbar-brand text-wrap" href="../../index.html">
+      
+      
+      
+      <h1 class="site-logo" id="site-title">State Space Models: A Modern Approach</h1>
+      
+    </a>
+</div><form class="bd-search d-flex align-items-center" action="../../search.html" method="get">
+  <i class="icon fas fa-search"></i>
+  <input type="search" class="form-control" name="q" id="search-input" placeholder="Search this book..." aria-label="Search this book..." autocomplete="off" >
+</form><nav class="bd-links" id="bd-docs-nav" aria-label="Main">
+    <div class="bd-toc-item active">
+        <ul class="nav bd-sidenav">
+ <li class="toctree-l1">
+  <a class="reference internal" href="../../root.html">
+   State Space Models: A Modern Approach
+  </a>
+ </li>
+</ul>
+<ul class="current nav bd-sidenav">
+ <li class="toctree-l1">
+  <a class="reference internal" href="../scratch.html">
+   Scratchpad
+  </a>
+ </li>
+ <li class="toctree-l1 current active has-children">
+  <a class="reference internal" href="ssm_index.html">
+   State Space Models
+  </a>
+  <input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
+  <label for="toctree-checkbox-1">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul class="current">
+   <li class="toctree-l2 current active">
+    <a class="current reference internal" href="#">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="hmm.html">
+     Hidden Markov Models
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_filter.html">
+     HMM filtering (forwards algorithm)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_smoother.html">
+     HMM smoothing (forwards-backwards algorithm)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_viterbi.html">
+     Viterbi algorithm
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_parallel.html">
+     Parallel HMM  smoothing
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../hmm/hmm_sampling.html">
+     Forwards-filtering backwards-sampling algorithm
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../lgssm/lgssm_index.html">
+   Inference in linear-Gaussian SSMs
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_filter.html">
+     Kalman filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_smoother.html">
+     Kalman (RTS) smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_parallel.html">
+     Parallel Kalman Smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../lgssm/kalman_sampling.html">
+     Forwards-filtering backwards sampling
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../extended/extended_index.html">
+   Extended (linearized) methods
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_filter.html">
+     Extended Kalman filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_smoother.html">
+     Extended Kalman smoother
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../extended/extended_parallel.html">
+     Parallel extended Kalman smoothing
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../unscented/unscented_index.html">
+   Unscented methods
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../unscented/unscented_filter.html">
+     Unscented filtering
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../unscented/unscented_smoother.html">
+     Unscented smoothing
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../quadrature/quadrature_index.html">
+   Quadrature and cubature methods
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../postlin/postlin_index.html">
+   Posterior linearization
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../adf/adf_index.html">
+   Assumed Density Filtering
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../vi/vi_index.html">
+   Variational inference
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../pf/pf_index.html">
+   Particle filtering
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../smc/smc_index.html">
+   Sequential Monte Carlo
+  </a>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../learning/learning_index.html">
+   Offline parameter estimation (learning)
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/em.html">
+     Expectation Maximization (EM)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/sgd.html">
+     Stochastic Gradient Descent (SGD)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/vb.html">
+     Variational Bayes (VB)
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../learning/mcmc.html">
+     Markov Chain Monte Carlo (MCMC)
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../tracking/tracking_index.html">
+   Multi-target tracking
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../ensemble/ensemble_index.html">
+   Data assimilation using Ensemble Kalman filter
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../bnp/bnp_index.html">
+   Bayesian non-parametric SSMs
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../changepoint/changepoint_index.html">
+   Changepoint detection
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../timeseries/timeseries_index.html">
+   Timeseries forecasting
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../gp/gp_index.html">
+   Markovian Gaussian processes
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../ode/ode_index.html">
+   Differential equations and SSMs
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../control/control_index.html">
+   Optimal control
+  </a>
+ </li>
+ <li class="toctree-l1">
+  <a class="reference internal" href="../../bib.html">
+   Bibliography
+  </a>
+ </li>
+</ul>
+
+    </div>
+</nav> <!-- To handle the deprecated key -->
+
+<div class="navbar_extra_footer">
+  Powered by <a href="https://jupyterbook.org">Jupyter Book</a>
+</div>
+
+</div>
+
+
+          
+
+
+          
+<main class="col py-md-3 pl-md-4 bd-content overflow-auto" role="main">
+    
+    <div class="topbar container-xl fixed-top">
+    <div class="topbar-contents row">
+        <div class="col-12 col-md-3 bd-topbar-whitespace site-navigation show"></div>
+        <div class="col pl-md-4 topbar-main">
+            
+            <button id="navbar-toggler" class="navbar-toggler ml-0" type="button" data-toggle="collapse"
+                data-toggle="tooltip" data-placement="bottom" data-target=".site-navigation" aria-controls="navbar-menu"
+                aria-expanded="true" aria-label="Toggle navigation" aria-controls="site-navigation"
+                title="Toggle navigation" data-toggle="tooltip" data-placement="left">
+                <i class="fas fa-bars"></i>
+                <i class="fas fa-arrow-left"></i>
+                <i class="fas fa-arrow-up"></i>
+            </button>
+            
+            
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn" aria-label="Download this page"><i
+            class="fas fa-download"></i></button>
+
+    <div class="dropdown-buttons">
+        <!-- ipynb file if we had a myst markdown file -->
+        
+        <!-- Download raw file -->
+        <a class="dropdown-buttons" href="../../_sources/chapters/ssm/ssm_intro.ipynb"><button type="button"
+                class="btn btn-secondary topbarbtn" title="Download source file" data-toggle="tooltip"
+                data-placement="left">.ipynb</button></a>
+        <!-- Download PDF via print -->
+        <button type="button" id="download-print" class="btn btn-secondary topbarbtn" title="Print to PDF"
+                onclick="printPdf(this)" data-toggle="tooltip" data-placement="left">.pdf</button>
+    </div>
+</div>
+
+            <!-- Source interaction buttons -->
+
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn"
+        aria-label="Connect with source repository"><i class="fab fa-github"></i></button>
+    <div class="dropdown-buttons sourcebuttons">
+        <a class="repository-button"
+            href="https://github.com/probml/ssm-book"><button type="button" class="btn btn-secondary topbarbtn"
+                data-toggle="tooltip" data-placement="left" title="Source repository"><i
+                    class="fab fa-github"></i>repository</button></a>
+        <a class="issues-button"
+            href="https://github.com/probml/ssm-book/issues/new?title=Issue%20on%20page%20%2Fchapters/ssm/ssm_intro.html&body=Your%20issue%20content%20here."><button
+                type="button" class="btn btn-secondary topbarbtn" data-toggle="tooltip" data-placement="left"
+                title="Open an issue"><i class="fas fa-lightbulb"></i>open issue</button></a>
+        
+    </div>
+</div>
+
+            <!-- Full screen (wrap in <a> to have style consistency -->
+
+<a class="full-screen-button"><button type="button" class="btn btn-secondary topbarbtn" data-toggle="tooltip"
+        data-placement="bottom" onclick="toggleFullScreen()" aria-label="Fullscreen mode"
+        title="Fullscreen mode"><i
+            class="fas fa-expand"></i></button></a>
+
+            <!-- Launch buttons -->
+
+<div class="dropdown-buttons-trigger">
+    <button id="dropdown-buttons-trigger" class="btn btn-secondary topbarbtn"
+        aria-label="Launch interactive content"><i class="fas fa-rocket"></i></button>
+    <div class="dropdown-buttons">
+        
+        <a class="binder-button" href="https://mybinder.org/v2/gh/probml/ssm-book/main?urlpath=tree/chapters/ssm/ssm_intro.ipynb"><button type="button"
+                class="btn btn-secondary topbarbtn" title="Launch Binder" data-toggle="tooltip"
+                data-placement="left"><img class="binder-button-logo"
+                    src="../../_static/images/logo_binder.svg"
+                    alt="Interact on binder">Binder</button></a>
+        
+        
+        
+        <a class="colab-button" href="https://colab.research.google.com/github/probml/ssm-book/blob/main/chapters/ssm/ssm_intro.ipynb"><button type="button" class="btn btn-secondary topbarbtn"
+                title="Launch Colab" data-toggle="tooltip" data-placement="left"><img class="colab-button-logo"
+                    src="../../_static/images/logo_colab.png"
+                    alt="Interact on Colab">Colab</button></a>
+        
+        
+    </div>
+</div>
+
+        </div>
+
+        <!-- Table of contents -->
+        <div class="d-none d-md-block col-md-2 bd-toc show noprint">
+            
+        </div>
+    </div>
+</div>
+    <div id="main-content" class="row">
+        <div class="col-12 col-md-9 pl-md-3 pr-md-0">
+            <!-- Table of contents that is only displayed when printing the page -->
+            <div id="jb-print-docs-body" class="onlyprint">
+                <h1>What are State Space Models?</h1>
+                <!-- Table of contents -->
+                <div id="print-main-content">
+                    <div id="jb-print-toc">
+                        
+                    </div>
+                </div>
+            </div>
+            
+              <div>
+                
+  <div class="math notranslate nohighlight">
+\[ \begin{align}\begin{aligned}\newcommand\floor[1]{\lfloor#1\rfloor}\\\newcommand{\real}{\mathbb{R}}\\% Numbers
+\newcommand{\vzero}{\boldsymbol{0}}
+\newcommand{\vone}{\boldsymbol{1}}\\% Greek https://www.latex-tutorial.com/symbols/greek-alphabet/
+\newcommand{\valpha}{\boldsymbol{\alpha}}
+\newcommand{\vbeta}{\boldsymbol{\beta}}
+\newcommand{\vchi}{\boldsymbol{\chi}}
+\newcommand{\vdelta}{\boldsymbol{\delta}}
+\newcommand{\vDelta}{\boldsymbol{\Delta}}
+\newcommand{\vepsilon}{\boldsymbol{\epsilon}}
+\newcommand{\vzeta}{\boldsymbol{\zeta}}
+\newcommand{\vXi}{\boldsymbol{\Xi}}
+\newcommand{\vell}{\boldsymbol{\ell}}
+\newcommand{\veta}{\boldsymbol{\eta}}
+%\newcommand{\vEta}{\boldsymbol{\Eta}}
+\newcommand{\vgamma}{\boldsymbol{\gamma}}
+\newcommand{\vGamma}{\boldsymbol{\Gamma}}
+\newcommand{\vmu}{\boldsymbol{\mu}}
+\newcommand{\vmut}{\boldsymbol{\tilde{\mu}}}
+\newcommand{\vnu}{\boldsymbol{\nu}}
+\newcommand{\vkappa}{\boldsymbol{\kappa}}
+\newcommand{\vlambda}{\boldsymbol{\lambda}}
+\newcommand{\vLambda}{\boldsymbol{\Lambda}}
+\newcommand{\vLambdaBar}{\overline{\vLambda}}
+%\newcommand{\vnu}{\boldsymbol{\nu}}
+\newcommand{\vomega}{\boldsymbol{\omega}}
+\newcommand{\vOmega}{\boldsymbol{\Omega}}
+\newcommand{\vphi}{\boldsymbol{\phi}}
+\newcommand{\vvarphi}{\boldsymbol{\varphi}}
+\newcommand{\vPhi}{\boldsymbol{\Phi}}
+\newcommand{\vpi}{\boldsymbol{\pi}}
+\newcommand{\vPi}{\boldsymbol{\Pi}}
+\newcommand{\vpsi}{\boldsymbol{\psi}}
+\newcommand{\vPsi}{\boldsymbol{\Psi}}
+\newcommand{\vrho}{\boldsymbol{\rho}}
+\newcommand{\vtheta}{\boldsymbol{\theta}}
+\newcommand{\vthetat}{\boldsymbol{\tilde{\theta}}}
+\newcommand{\vTheta}{\boldsymbol{\Theta}}
+\newcommand{\vsigma}{\boldsymbol{\sigma}}
+\newcommand{\vSigma}{\boldsymbol{\Sigma}}
+\newcommand{\vSigmat}{\boldsymbol{\tilde{\Sigma}}}
+\newcommand{\vsigmoid}{\vsigma}
+\newcommand{\vtau}{\boldsymbol{\tau}}
+\newcommand{\vxi}{\boldsymbol{\xi}}\\
+% Lower Roman (Vectors)
+\newcommand{\va}{\mathbf{a}}
+\newcommand{\vb}{\mathbf{b}}
+\newcommand{\vBt}{\mathbf{\tilde{B}}}
+\newcommand{\vc}{\mathbf{c}}
+\newcommand{\vct}{\mathbf{\tilde{c}}}
+\newcommand{\vd}{\mathbf{d}}
+\newcommand{\ve}{\mathbf{e}}
+\newcommand{\vf}{\mathbf{f}}
+\newcommand{\vg}{\mathbf{g}}
+\newcommand{\vh}{\mathbf{h}}
+%\newcommand{\myvh}{\mathbf{h}}
+\newcommand{\vi}{\mathbf{i}}
+\newcommand{\vj}{\mathbf{j}}
+\newcommand{\vk}{\mathbf{k}}
+\newcommand{\vl}{\mathbf{l}}
+\newcommand{\vm}{\mathbf{m}}
+\newcommand{\vn}{\mathbf{n}}
+\newcommand{\vo}{\mathbf{o}}
+\newcommand{\vp}{\mathbf{p}}
+\newcommand{\vq}{\mathbf{q}}
+\newcommand{\vr}{\mathbf{r}}
+\newcommand{\vs}{\mathbf{s}}
+\newcommand{\vt}{\mathbf{t}}
+\newcommand{\vu}{\mathbf{u}}
+\newcommand{\vv}{\mathbf{v}}
+\newcommand{\vw}{\mathbf{w}}
+\newcommand{\vws}{\vw_s}
+\newcommand{\vwt}{\mathbf{\tilde{w}}}
+\newcommand{\vWt}{\mathbf{\tilde{W}}}
+\newcommand{\vwh}{\hat{\vw}}
+\newcommand{\vx}{\mathbf{x}}
+%\newcommand{\vx}{\mathbf{x}}
+\newcommand{\vxt}{\mathbf{\tilde{x}}}
+\newcommand{\vy}{\mathbf{y}}
+\newcommand{\vyt}{\mathbf{\tilde{y}}}
+\newcommand{\vz}{\mathbf{z}}
+%\newcommand{\vzt}{\mathbf{\tilde{z}}}\\
+% Upper Roman (Matrices)
+\newcommand{\vA}{\mathbf{A}}
+\newcommand{\vB}{\mathbf{B}}
+\newcommand{\vC}{\mathbf{C}}
+\newcommand{\vD}{\mathbf{D}}
+\newcommand{\vE}{\mathbf{E}}
+\newcommand{\vF}{\mathbf{F}}
+\newcommand{\vG}{\mathbf{G}}
+\newcommand{\vH}{\mathbf{H}}
+\newcommand{\vI}{\mathbf{I}}
+\newcommand{\vJ}{\mathbf{J}}
+\newcommand{\vK}{\mathbf{K}}
+\newcommand{\vL}{\mathbf{L}}
+\newcommand{\vM}{\mathbf{M}}
+\newcommand{\vMt}{\mathbf{\tilde{M}}}
+\newcommand{\vN}{\mathbf{N}}
+\newcommand{\vO}{\mathbf{O}}
+\newcommand{\vP}{\mathbf{P}}
+\newcommand{\vQ}{\mathbf{Q}}
+\newcommand{\vR}{\mathbf{R}}
+\newcommand{\vS}{\mathbf{S}}
+\newcommand{\vT}{\mathbf{T}}
+\newcommand{\vU}{\mathbf{U}}
+\newcommand{\vV}{\mathbf{V}}
+\newcommand{\vW}{\mathbf{W}}
+\newcommand{\vX}{\mathbf{X}}
+%\newcommand{\vXs}{\vX_{\vs}}
+\newcommand{\vXs}{\vX_{s}}
+\newcommand{\vXt}{\mathbf{\tilde{X}}}
+\newcommand{\vY}{\mathbf{Y}}
+\newcommand{\vZ}{\mathbf{Z}}
+\newcommand{\vZt}{\mathbf{\tilde{Z}}}
+\newcommand{\vzt}{\mathbf{\tilde{z}}}\\
+%%%%
+\newcommand{\hidden}{\vz}
+\newcommand{\hid}{\hidden}
+\newcommand{\observed}{\vy}
+\newcommand{\obs}{\observed}
+\newcommand{\inputs}{\vu}
+\newcommand{\input}{\inputs}\\\newcommand{\hmmTrans}{\vA}
+\newcommand{\hmmObs}{\vB}
+\newcommand{\hmmInit}{\vpi}
+\newcommand{\hmmhid}{\hidden}
+\newcommand{\hmmobs}{\obs}\\\newcommand{\ldsDyn}{\vA}
+\newcommand{\ldsObs}{\vC}
+\newcommand{\ldsDynIn}{\vB}
+\newcommand{\ldsObsIn}{\vD}
+\newcommand{\ldsDynNoise}{\vQ}
+\newcommand{\ldsObsNoise}{\vR}\\\newcommand{\ssmDynFn}{f}
+\newcommand{\ssmObsFn}{h}\\
+%%%
+\newcommand{\gauss}{\mathcal{N}}\\\newcommand{\diag}{\mathrm{diag}}\end{aligned}\end{align} \]</div>
+<div class="tex2jax_ignore mathjax_ignore section" id="what-are-state-space-models">
+<span id="sec-ssm-intro"></span><h1>What are State Space Models?<a class="headerlink" href="#what-are-state-space-models" title="Permalink to this headline">¶</a></h1>
+<p>A state space model or SSM
+is a partially observed Markov model,
+in which the hidden state,  <span class="math notranslate nohighlight">\(\hidden_t\)</span>,
+evolves over time according to a Markov process,
+possibly conditional on external inputs or controls <span class="math notranslate nohighlight">\(\input_t\)</span>,
+and each hidden state generates some
+observations <span class="math notranslate nohighlight">\(\obs_t\)</span> at each time step.
+(In this book, we mostly focus on discrete time systems,
+although  we consider the continuous-time case in  XXX.)
+We get to see the observations, but not the hidden state.
+Our main goal is to infer the hidden state given the observations.
+However, we can also use the model to predict future observations,
+by first predicting future hidden states, and then predicting
+what observations they might generate.
+By using  a hidden state <span class="math notranslate nohighlight">\(\hidden_t\)</span>
+to represent the past observations, <span class="math notranslate nohighlight">\(\obs_{1:t-1}\)</span>,
+the  model can have ``infinite’’ memory,
+unlike a standard Markov model.</p>
+<div class="figure align-default" id="fig-ssm-ar">
+<a class="reference internal image-reference" href="../../_images/SSM-AR-inputs.png"><img alt="../../_images/SSM-AR-inputs.png" src="../../_images/SSM-AR-inputs.png" style="height: 300px;" /></a>
+<p class="caption"><span class="caption-number">Fig. 3 </span><span class="caption-text">Illustration of an SSM as a graphical model.</span><a class="headerlink" href="#fig-ssm-ar" title="Permalink to this image">¶</a></p>
+</div>
+<p>Formally we can define an SSM
+as the following joint distribution:</p>
+<div class="math notranslate nohighlight" id="equation-eq-ssm-ar">
+<span class="eqno">(2)<a class="headerlink" href="#equation-eq-ssm-ar" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T}|\inputs_{1:T})
+ = \left[ p(\hmmhid_1|\inputs_1) \prod_{t=2}^{T}
+ p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) \right]
+ \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t, \inputs_t, \hmmobs_{t-1}) \right]\]</div>
+<p>where <span class="math notranslate nohighlight">\(p(\hmmhid_t|\hmmhid_{t-1},\inputs_t)\)</span> is the
+transition model,
+<span class="math notranslate nohighlight">\(p(\hmmobs_t|\hmmhid_t, \inputs_t, \hmmobs_{t-1})\)</span> is the
+observation model,
+and <span class="math notranslate nohighlight">\(\inputs_{t}\)</span> is an optional input or action.
+See <a class="reference internal" href="#fig-ssm-ar"><span class="std std-numref">Fig. 3</span></a>
+for an illustration of the corresponding graphical model.</p>
+<p>We often consider a simpler setting in which the
+observations are conditionally independent of each other
+(rather than having Markovian dependencies) given the hidden state.
+In this case the joint simplifies to</p>
+<div class="math notranslate nohighlight" id="equation-eq-ssm-input">
+<span class="eqno">(3)<a class="headerlink" href="#equation-eq-ssm-input" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T}|\inputs_{1:T})
+ = \left[ p(\hmmhid_1|\inputs_1) \prod_{t=2}^{T}
+ p(\hmmhid_t|\hmmhid_{t-1},\inputs_t) \right]
+ \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t, \inputs_t) \right]\]</div>
+<p>Sometimes there are no external inputs, so the model further
+simplifies to the following unconditional generative model:</p>
+<div class="math notranslate nohighlight" id="equation-eq-ssm-no-input">
+<span class="eqno">(4)<a class="headerlink" href="#equation-eq-ssm-no-input" title="Permalink to this equation">¶</a></span>\[p(\hmmobs_{1:T},\hmmhid_{1:T})
+ = \left[ p(\hmmhid_1) \prod_{t=2}^{T}
+ p(\hmmhid_t|\hmmhid_{t-1}) \right]
+ \left[ \prod_{t=1}^T p(\hmmobs_t|\hmmhid_t) \right]\]</div>
+<p>See <a class="reference internal" href="#ssm-simplified"><span class="std std-numref">Fig. 4</span></a>
+for an illustration of the corresponding graphical model.</p>
+<div class="figure align-default" id="ssm-simplified">
+<a class="reference internal image-reference" href="../../_images/SSM-simplified.png"><img alt="../../_images/SSM-simplified.png" src="../../_images/SSM-simplified.png" style="width: 136.0px; height: 98.0px;" /></a>
+<p class="caption"><span class="caption-number">Fig. 4 </span><span class="caption-text">Illustration of a simplified SSM.</span><a class="headerlink" href="#ssm-simplified" title="Permalink to this image">¶</a></p>
+</div>
+</div>
+
+    <script type="text/x-thebe-config">
+    {
+        requestKernel: true,
+        binderOptions: {
+            repo: "binder-examples/jupyter-stacks-datascience",
+            ref: "master",
+        },
+        codeMirrorConfig: {
+            theme: "abcdef",
+            mode: "python"
+        },
+        kernelOptions: {
+            kernelName: "python3",
+            path: "./chapters/ssm"
+        },
+        predefinedOutput: true
+    }
+    </script>
+    <script>kernelName = 'python3'</script>
+
+              </div>
+              
+            
+                <!-- Previous / next buttons -->
+<div class='prev-next-area'> 
+    <a class='left-prev' id="prev-link" href="ssm_index.html" title="previous page">
+        <i class="fas fa-angle-left"></i>
+        <div class="prev-next-info">
+            <p class="prev-next-subtitle">previous</p>
+            <p class="prev-next-title">State Space Models</p>
+        </div>
+    </a>
+    <a class='right-next' id="next-link" href="hmm.html" title="next page">
+    <div class="prev-next-info">
+        <p class="prev-next-subtitle">next</p>
+        <p class="prev-next-title">Hidden Markov Models</p>
+    </div>
+    <i class="fas fa-angle-right"></i>
+    </a>
+</div>
+            
+        </div>
+    </div>
+    <footer class="footer">
+  <p>
+    
+      By Kevin Murphy, Scott Linderman, et al.<br/>
+    
+        &copy; Copyright 2021.<br/>
+  </p>
+</footer>
+</main>
+
+
+      </div>
+    </div>
+  
+  <script src="../../_static/js/index.be7d3bbb2ef33a8344ce.js"></script>
+
+  </body>
+</html>

File diff suppressed because it is too large
+ 1806 - 0
_build/html/chapters/ssm/ssm_old.html


+ 43 - 16
_build/html/chapters/timeseries/timeseries_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 43 - 16
_build/html/chapters/tracking/tracking_index.html

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
    Scratchpad
   </a>
   </a>
  </li>
  </li>
- <li class="toctree-l1">
-  <a class="reference internal" href="../ssm/ssm.html">
-   What are State Space Models?
-  </a>
- </li>
  <li class="toctree-l1 has-children">
  <li class="toctree-l1 has-children">
-  <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+  <a class="reference internal" href="../ssm/ssm_index.html">
+   State Space Models
   </a>
   </a>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   </label>
   <ul>
   <ul>
    <li class="toctree-l2">
    <li class="toctree-l2">
-    <a class="reference internal" href="../hmm/hmm.html">
+    <a class="reference internal" href="../ssm/ssm_intro.html">
+     What are State Space Models?
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
      Hidden Markov Models
     </a>
     </a>
    </li>
    </li>
    <li class="toctree-l2">
    <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/lds.html">
+     Linear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/nlds.html">
+     Nonlinear Gaussian SSMs
+    </a>
+   </li>
+   <li class="toctree-l2">
+    <a class="reference internal" href="../ssm/inference.html">
+     Inferential goals
+    </a>
+   </li>
+  </ul>
+ </li>
+ <li class="toctree-l1 has-children">
+  <a class="reference internal" href="../hmm/hmm_index.html">
+   Hidden Markov Models
+  </a>
+  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
+  <label for="toctree-checkbox-2">
+   <i class="fas fa-chevron-down">
+   </i>
+  </label>
+  <ul>
+   <li class="toctree-l2">
     <a class="reference internal" href="../hmm/hmm_filter.html">
     <a class="reference internal" href="../hmm/hmm_filter.html">
      HMM filtering (forwards algorithm)
      HMM filtering (forwards algorithm)
     </a>
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
    Inference in linear-Gaussian SSMs
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/>
-  <label for="toctree-checkbox-2">
+  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
+  <label for="toctree-checkbox-3">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
    Extended (linearized) methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/>
-  <label for="toctree-checkbox-3">
+  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
+  <label for="toctree-checkbox-4">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
    Unscented methods
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/>
-  <label for="toctree-checkbox-4">
+  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
+  <label for="toctree-checkbox-5">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
    Offline parameter estimation (learning)
   </a>
   </a>
-  <input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/>
-  <label for="toctree-checkbox-5">
+  <input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/>
+  <label for="toctree-checkbox-6">
    <i class="fas fa-chevron-down">
    <i class="fas fa-chevron-down">
    </i>
    </i>
   </label>
   </label>

+ 0 - 0
_build/html/chapters/unscented/unscented_filter.html


Some files were not shown because too many files changed in this diff