浏览代码

finished intro chapter.
starting on hmm inference chapter.

Kevin P Murphy 3 年之前
父节点
当前提交
8163e57aac
共有 100 个文件被更改,包括 15767 次插入913 次删除
  1. 二进制
      _build/.doctrees/chapters/blank.doctree
  2. 二进制
      _build/.doctrees/chapters/hmm/hmm_filter.doctree
  3. 二进制
      _build/.doctrees/chapters/hmm/hmm_index.doctree
  4. 二进制
      _build/.doctrees/chapters/learning/learning_index.doctree
  5. 二进制
      _build/.doctrees/chapters/lgssm/lgssm_index.doctree
  6. 二进制
      _build/.doctrees/chapters/scratch.doctree
  7. 二进制
      _build/.doctrees/chapters/ssm/hmm.doctree
  8. 二进制
      _build/.doctrees/chapters/ssm/inference.doctree
  9. 二进制
      _build/.doctrees/chapters/ssm/lds.doctree
  10. 二进制
      _build/.doctrees/chapters/ssm/nlds.doctree
  11. 二进制
      _build/.doctrees/chapters/ssm/ssm.doctree
  12. 二进制
      _build/.doctrees/chapters/ssm/ssm_index.doctree
  13. 二进制
      _build/.doctrees/chapters/ssm/ssm_intro.doctree
  14. 二进制
      _build/.doctrees/chapters/ssm/ssm_old.doctree
  15. 二进制
      _build/.doctrees/environment.pickle
  16. 二进制
      _build/.doctrees/old/ssm.doctree
  17. 二进制
      _build/.doctrees/old/ssm_old.doctree
  18. 二进制
      _build/.doctrees/root.doctree
  19. 1 1
      _build/html/.buildinfo
  20. 43 16
      _build/html/README.html
  21. 二进制
      _build/html/_images/hmm_14_0.png
  22. 二进制
      _build/html/_images/hmm_15_0.png
  23. 二进制
      _build/html/_images/hmm_15_1.png
  24. 二进制
      _build/html/_images/hmm_16_1.png
  25. 二进制
      _build/html/_images/hmm_17_0.png
  26. 二进制
      _build/html/_images/hmm_18_1.png
  27. 二进制
      _build/html/_images/inference-problems-tikz.png
  28. 二进制
      _build/html/_images/inference_10_1.png
  29. 二进制
      _build/html/_images/inference_11_1.png
  30. 二进制
      _build/html/_images/inference_16_1.png
  31. 二进制
      _build/html/_images/inference_17_1.png
  32. 二进制
      _build/html/_images/inference_9_1.png
  33. 二进制
      _build/html/_images/lds_7_1.png
  34. 二进制
      _build/html/_images/ssm_old_15_0.png
  35. 二进制
      _build/html/_images/ssm_old_16_1.png
  36. 二进制
      _build/html/_images/ssm_old_21_1.png
  37. 二进制
      _build/html/_images/ssm_old_30_1.png
  38. 二进制
      _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

二进制
_build/.doctrees/chapters/blank.doctree


二进制
_build/.doctrees/chapters/hmm/hmm_filter.doctree


二进制
_build/.doctrees/chapters/hmm/hmm_index.doctree


二进制
_build/.doctrees/chapters/learning/learning_index.doctree


二进制
_build/.doctrees/chapters/lgssm/lgssm_index.doctree


二进制
_build/.doctrees/chapters/scratch.doctree


二进制
_build/.doctrees/chapters/ssm/hmm.doctree


二进制
_build/.doctrees/chapters/ssm/inference.doctree


二进制
_build/.doctrees/chapters/ssm/lds.doctree


二进制
_build/.doctrees/chapters/ssm/nlds.doctree


二进制
_build/.doctrees/chapters/ssm/ssm.doctree


二进制
_build/.doctrees/chapters/ssm/ssm_index.doctree


二进制
_build/.doctrees/chapters/ssm/ssm_intro.doctree


二进制
_build/.doctrees/chapters/ssm/ssm_old.doctree


二进制
_build/.doctrees/environment.pickle


二进制
_build/.doctrees/old/ssm.doctree


二进制
_build/.doctrees/old/ssm_old.doctree


二进制
_build/.doctrees/root.doctree


+ 1 - 1
_build/html/.buildinfo

@@ -1,4 +1,4 @@
 # 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.
-config: 25d7af8a3b2666f61e7e34d94bfa560e
+config: e1b22480b825cc4d693369dcb5b3d1e3
 tags: 645f666f9bcd5a90fca523b33c5a78b7

+ 43 - 16
_build/html/README.html

@@ -97,14 +97,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -113,11 +108,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </li>
    <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">
      HMM filtering (forwards algorithm)
     </a>
@@ -148,8 +175,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -180,8 +207,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -207,8 +234,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -259,8 +286,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

二进制
_build/html/_images/hmm_14_0.png


二进制
_build/html/_images/hmm_15_0.png


二进制
_build/html/_images/hmm_15_1.png


二进制
_build/html/_images/hmm_16_1.png


二进制
_build/html/_images/hmm_17_0.png


二进制
_build/html/_images/hmm_18_1.png


二进制
_build/html/_images/inference-problems-tikz.png


二进制
_build/html/_images/inference_10_1.png


二进制
_build/html/_images/inference_11_1.png


二进制
_build/html/_images/inference_16_1.png


二进制
_build/html/_images/inference_17_1.png


二进制
_build/html/_images/inference_9_1.png


二进制
_build/html/_images/lds_7_1.png


二进制
_build/html/_images/ssm_old_15_0.png


二进制
_build/html/_images/ssm_old_16_1.png


二进制
_build/html/_images/ssm_old_21_1.png


二进制
_build/html/_images/ssm_old_30_1.png


二进制
_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",
    "metadata": {},
    "source": []
   }
  ],
  "metadata": {
+  "interpreter": {
+   "hash": "6407c60499271029b671b4ff687c4ed4626355c45fd34c44476827f4be42c4d7"
+  },
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3.9.2 ('spyder-dev')",
    "language": "python",
    "name": "python3"
   },
@@ -31,7 +51,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.5"
+   "version": "3.9.2"
   }
  },
  "nbformat": 4,

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

@@ -4,36 +4,532 @@
    "cell_type": "markdown",
    "metadata": {},
    "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",
    "metadata": {},
    "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",
+    "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",
-    "\\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",
-   "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": [
-    "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": {
+  "interpreter": {
+   "hash": "6407c60499271029b671b4ff687c4ed4626355c45fd34c44476827f4be42c4d7"
+  },
   "kernelspec": {
-   "display_name": "Python 3",
+   "display_name": "Python 3.9.2 ('spyder-dev')",
    "language": "python",
    "name": "python3"
   },
@@ -47,7 +543,7 @@
    "name": "python",
    "nbconvert_exporter": "python",
    "pygments_lexer": "ipython3",
-   "version": "3.8.5"
+   "version": "3.9.2"
   }
  },
  "nbformat": 4,

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

@@ -1,10 +1,10 @@
 (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}
 ```
 
-See (sec:casino-ex).

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

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

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

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

文件差异内容过多而无法显示
+ 748 - 0
_build/html/_sources/chapters/ssm/hmm.ipynb


文件差异内容过多而无法显示
+ 763 - 0
_build/html/_sources/chapters/ssm/inference.ipynb


文件差异内容过多而无法显示
+ 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",
     "# Inferential goals\n",
     "\n",
-    "```{figure} /figures/dbn-inference-problems-tikz.png\n",
+    "```{figure} /figures/inference-problems-tikz.png\n",
     ":scale: 100%\n",
     ":name: fig:dbn-inference\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


文件差异内容过多而无法显示
+ 1513 - 0
_build/html/_sources/old/ssm.ipynb


文件差异内容过多而无法显示
+ 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
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -114,11 +109,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </li>
    <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">
      HMM filtering (forwards algorithm)
     </a>
@@ -149,8 +176,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -181,8 +208,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -208,8 +235,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -260,8 +287,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="chapters/learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -97,14 +97,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -113,11 +108,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -148,8 +175,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -180,8 +207,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -207,8 +234,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -259,8 +286,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>
@@ -456,6 +483,18 @@ const thebe_selector_output = ".output, .cell_output"
                 
   <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>
+<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>
 
     <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
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="current reference internal" href="#">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </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>
     <link rel="index" title="Index" href="../../genindex.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="docsearch:language" content="None">
     
@@ -93,33 +91,60 @@ const thebe_selector_output = ".output, .cell_output"
   </a>
  </li>
 </ul>
-<ul class="current nav bd-sidenav">
+<ul class="nav bd-sidenav">
  <li class="toctree-l1">
   <a class="reference internal" href="../scratch.html">
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </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
     </a>
    </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 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">
      HMM filtering (forwards algorithm)
     </a>
@@ -150,8 +175,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +207,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +234,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +286,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </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>
 <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>
-<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>
 <p>There are 2 hidden states, each of which emit 6 possible observations.</p>
 <div class="cell docutils container">
@@ -956,21 +981,7 @@ A[i,j] transition probabilites.</p>
               
             
                 <!-- 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>

+ 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"
 </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>
     <link rel="index" title="Index" href="../../genindex.html" />
     <link rel="search" title="Search" href="../../search.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="docsearch:language" content="None">
     
@@ -101,26 +101,53 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </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">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
     </a>
    </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">
     <a class="current reference internal" href="#">
      HMM filtering (forwards algorithm)
@@ -150,10 +177,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </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>
   </label>
@@ -184,8 +211,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -211,8 +238,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -259,37 +286,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
   </a>
  </li>
- <li class="toctree-l1 has-children">
+ <li class="toctree-l1">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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 class="toctree-l1">
   <a class="reference internal" href="../tracking/tracking_index.html">
@@ -458,21 +458,377 @@ const thebe_selector_output = ".output, .cell_output"
             
               <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_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>
 </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>
 </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>
 
@@ -501,7 +857,7 @@ const thebe_selector_output = ".output, .cell_output"
             
                 <!-- Previous / next buttons -->
 <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>
         <div class="prev-next-info">
             <p class="prev-next-subtitle">previous</p>

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

@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <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/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
@@ -51,10 +51,12 @@ 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="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="docsearch:language" content="None">
     
@@ -99,27 +101,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </label>
   <ul>
    <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
     </a>
    </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="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">
      HMM filtering (forwards algorithm)
     </a>
@@ -148,10 +177,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +211,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +238,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -257,37 +286,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
   </a>
  </li>
- <li class="toctree-l1 has-children">
+ <li class="toctree-l1">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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 class="toctree-l1">
   <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">
             <!-- Table of contents that is only displayed when printing the page -->
             <div id="jb-print-docs-body" class="onlyprint">
-                <h1>Inference in discrete SSMs</h1>
+                <h1>Hidden Markov Models</h1>
                 <!-- Table of contents -->
                 <div id="print-main-content">
                     <div id="jb-print-toc">
@@ -434,12 +436,12 @@ const thebe_selector_output = ".output, .cell_output"
             
               <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">
 <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_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>
@@ -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>
 </ul>
 </div>
-<p>See (sec:casino-ex).</p>
 </div>
 
     <script type="text/x-thebe-config">
@@ -475,17 +476,17 @@ const thebe_selector_output = ".output, .cell_output"
             
                 <!-- Previous / next buttons -->
 <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>
         <div class="prev-next-info">
             <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>
     </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">
         <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>
     <i class="fas fa-angle-right"></i>
     </a>

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

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </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">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
     </a>
    </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">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </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">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
     </a>
    </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">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </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">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
     </a>
    </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">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,27 +99,54 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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>
-  <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">
    <i class="fas fa-chevron-down">
    </i>
   </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">
-    <a class="reference internal" href="hmm.html">
+    <a class="reference internal" href="../ssm/hmm.html">
      Hidden Markov Models
     </a>
    </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">
     <a class="reference internal" href="hmm_filter.html">
      HMM filtering (forwards algorithm)
     </a>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </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>
     <link rel="index" title="Index" href="../../genindex.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" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -148,10 +175,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  <li class="toctree-l1 has-children">
   <a class="reference internal" href="../lgssm/lgssm_index.html">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -257,37 +284,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
   </a>
  </li>
- <li class="toctree-l1 current active has-children">
+ <li class="toctree-l1 current active">
   <a class="current reference internal" href="#">
    Offline parameter estimation (learning)
   </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 class="toctree-l1">
   <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">
 <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>
 
     <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>
         </div>
     </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">
         <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>
     <i class="fas fa-angle-right"></i>
     </a>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -5,7 +5,7 @@
   <head>
     <meta charset="utf-8" />
     <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/index.ff1ffe594081f20da1ef19478df9384b.css" rel="stylesheet">
@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -148,10 +175,10 @@ const thebe_selector_output = ".output, .cell_output"
  </li>
  <li class="toctree-l1 current active has-children">
   <a class="current reference internal" href="#">
-   Inference in linear-Gaussian SSMs
+   Linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -257,37 +284,10 @@ const thebe_selector_output = ".output, .cell_output"
    Sequential Monte Carlo
   </a>
  </li>
- <li class="toctree-l1 has-children">
+ <li class="toctree-l1">
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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 class="toctree-l1">
   <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">
             <!-- Table of contents that is only displayed when printing the page -->
             <div id="jb-print-docs-body" class="onlyprint">
-                <h1>Inference in linear-Gaussian SSMs</h1>
+                <h1>Linear-Gaussian SSMs</h1>
                 <!-- Table of contents -->
                 <div id="print-main-content">
                     <div id="jb-print-toc">
@@ -434,8 +434,8 @@ const thebe_selector_output = ".output, .cell_output"
             
               <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">
 <ul>
 <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
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -51,11 +51,11 @@ 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 = {"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>
     <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/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" />
     <meta name="viewport" content="width=device-width, initial-scale=1" />
     <meta name="docsearch:language" content="None">
@@ -101,14 +101,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -117,11 +112,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -152,8 +179,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -184,8 +211,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -211,8 +238,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -263,8 +290,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>
@@ -512,7 +539,7 @@ Specifically</p>
 <li><p>baz</p></li>
 </ul>
 <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">
 <h2>Python<a class="headerlink" href="#python" title="Permalink to this headline">¶</a></h2>
 <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>
 </div>
 <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>
 </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>
+<div class="admonition note">
+<p class="admonition-title">Note</p>
+<p>I am a useful note!</p>
+</div>
 </div>
 <div class="section" id="math">
 <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>
 <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>
@@ -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>
         </div>
     </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">
         <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>
     <i class="fas fa-angle-right"></i>
     </a>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

文件差异内容过多而无法显示
+ 1177 - 0
_build/html/chapters/ssm/hmm.html


文件差异内容过多而无法显示
+ 1092 - 0
_build/html/chapters/ssm/inference.html


文件差异内容过多而无法显示
+ 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>
     <link rel="index" title="Index" href="../../genindex.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="docsearch:language" content="None">
     
@@ -95,23 +93,55 @@ const thebe_selector_output = ".output, .cell_output"
   </a>
  </li>
 </ul>
-<ul class="current nav bd-sidenav">
+<ul class="nav bd-sidenav">
  <li class="toctree-l1">
   <a class="reference internal" href="../scratch.html">
    Scratchpad
   </a>
  </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>
+  <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 class="toctree-l1 has-children">
   <a class="reference internal" href="../hmm/hmm_index.html">
-   Inference in discrete SSMs
+   Hidden Markov Models
   </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>
   </label>
@@ -152,8 +182,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -184,8 +214,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -211,8 +241,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -263,8 +293,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>
@@ -841,7 +871,7 @@ unlike a standard Markov model.</p>
 <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})
+<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}
  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>
@@ -850,33 +880,33 @@ 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="#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>
 <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>
-<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>
 <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})
+<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}
  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})
+<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}
  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">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>
 <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>
+<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 class="tex2jax_ignore mathjax_ignore section" id="hidden-markov-models">
@@ -910,17 +940,17 @@ meaning each row sums to one.
 We can visualize
 the non-zero entries in the transition matrix by creating a state transition diagram,
 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">
 <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>
 <p>The  observation model
 <span class="math notranslate nohighlight">\(p(\obs_t|\hidden_t=j)\)</span> has the form</p>
 <div class="math notranslate nohighlight">
 \[p(\obs_t=k|\hidden_t=j) = \hmmObs_{jk} \]</div>
 <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,
 the initial state distribution is denoted by</p>
 <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.)
 </pre></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>
 </div>
 </div>
@@ -1118,7 +1148,7 @@ except now there is temporal correlation between the data points.</p>
 </div>
 </div>
 <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>
 </div>
 </div>
@@ -1189,7 +1219,7 @@ except now there is temporal correlation between the data points.</p>
 </div>
 </div>
 <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>
 </div>
 <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">
 <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
-<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
 hidden states and inputs (i.e. there are no auto-regressive dependencies
 between the observables).
@@ -1209,8 +1239,8 @@ a stochastic nonlinear dynamical system (NLDS)
 by defining the distribution of the next hidden state
 as a deterministic function of the past state
 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)  
 \end{align}\]</div>
 <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
 as a deterministic function of the hidden state
 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)
 \end{align}\]</div>
 <p>If we assume additive Gaussian noise,
 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  \\
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
 \end{align}\]</div>
@@ -1237,8 +1267,8 @@ We will call these Gaussian SSMs.</p>
 the transition function <span class="math notranslate nohighlight">\(\ssmDynFn\)</span>
 and the observation function <span class="math notranslate nohighlight">\(\ssmObsFn\)</span> are both linear,
 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}
 + \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.)
 If we use Euler discretization,
 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{
@@ -1293,8 +1323,8 @@ to convert the continuous time process to discrete time.)</p>
 observe the location,
 corrupted by  Gaussian noise.
 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}
   &amp;=
     \underbrace{
@@ -1410,7 +1440,7 @@ The results are shown below.</p>
 </div>
 </div>
 <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 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,
 but the process noise and observation noise are Gaussian.
 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  \\
 \hmmobs_t &amp;= \ssmObsFn(\hmmhid_{t}, \inputs_t) + \veta_t
 \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>
 <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>
-<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">\(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="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>
 <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,
 w(t) is a random external force,
 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).
 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-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}
 = -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-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}
 = \begin{pmatrix} z_2 \\ -g \sin(z_1) \end{pmatrix}
 + \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>,
 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>
-<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{
   \begin{pmatrix} z_{1,t} \\ z_{2,t} \end{pmatrix}
   }_{\hmmhid_t}
@@ -1477,8 +1507,8 @@ formulation <span id="id5">[<a class="reference internal" href="../../bib.html#i
 +\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-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}
   \frac{\Delta^3}{3} &amp;   \frac{\Delta^2}{2} \\
   \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>
 <p>If we observe the angular position, we
 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
 \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-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
 \end{align}\]</div>
 <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">
 <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">
-<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 shaded region is the interval for which we have data.
 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>
 <p>We may also want to compute the
 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})
 &amp;= \sum_{\hmmhid_{t+h}} p(\hmmobs_{t+h}|\hmmhid_{t+h}) p(\hmmhid_{t+h}|\hmmobs_{1:t})
 \end{align}\]</div>
 <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})
 &amp;= \sum_{\hmmhid_{t:t+h-1}}
  p(\hmmhid_t|\hmmobs_{1:t}) 
@@ -1549,7 +1579,7 @@ p(\hmmhid_{t+h}|\hmmobs_{1:t})
 \cdots
  p(\hmmhid_{t+h}|\hmmhid_{t+h-1})
 \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 shaded region is the interval for which we have data.
 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">
 <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
-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>
 
@@ -1751,21 +1781,7 @@ to the 2d tracking HMM from <a class="reference internal" href="#sec-tracking-ld
               
             
                 <!-- 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>

+ 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>

文件差异内容过多而无法显示
+ 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
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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

@@ -99,14 +99,9 @@ const thebe_selector_output = ".output, .cell_output"
    Scratchpad
   </a>
  </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">
-  <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>
   <input class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/>
   <label for="toctree-checkbox-1">
@@ -115,11 +110,43 @@ const thebe_selector_output = ".output, .cell_output"
   </label>
   <ul>
    <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
     </a>
    </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 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>
@@ -150,8 +177,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../lgssm/lgssm_index.html">
    Inference in linear-Gaussian SSMs
   </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>
   </label>
@@ -182,8 +209,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../extended/extended_index.html">
    Extended (linearized) methods
   </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>
   </label>
@@ -209,8 +236,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../unscented/unscented_index.html">
    Unscented methods
   </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>
   </label>
@@ -261,8 +288,8 @@ const thebe_selector_output = ".output, .cell_output"
   <a class="reference internal" href="../learning/learning_index.html">
    Offline parameter estimation (learning)
   </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>
   </label>

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


部分文件因为文件数量过多而无法显示