From e566a89f2672e4541078ead2daf7538068d28ced Mon Sep 17 00:00:00 2001 From: Lei Fang Date: Sat, 2 Dec 2023 23:31:49 +0000 Subject: [PATCH] update --- lectures/lecture_bayes2.jl | 37 +- lectures/lecture_intro.jl | 798 +++++++++---- lectures/lecture_logreg.jl | 2226 ------------------------------------ lectures/lecture_mcmc2.jl | 5 +- 4 files changed, 587 insertions(+), 2479 deletions(-) delete mode 100644 lectures/lecture_logreg.jl diff --git a/lectures/lecture_bayes2.jl b/lectures/lecture_bayes2.jl index 5accb51..c6695d5 100644 --- a/lectures/lecture_bayes2.jl +++ b/lectures/lecture_bayes2.jl @@ -431,27 +431,15 @@ vline!([mean(Beta(3+7, 3+3))], color=3, ls=:dash, lw=2, label="") end) """ -# ╔═╡ 9638d082-5b61-4051-912b-fc263abeb239 -begin - # simulate 200 tosses of a fair coin - N_tosses = 200 - true_θ = 0.5 - Random.seed!(100) - coin_flipping_data = rand(N_tosses) .< true_θ - Nh = sum(coin_flipping_data) - Nt = N_tosses- Nh -end; - # ╔═╡ 30ece808-4852-4cbd-84c5-7e8087753ad5 md""" -## Sequential update. +## Sequential update Conjugate prior also provides us with a simple procedure to do **sequential** inference * *sequential online learning:* update the posterior incrementally as data arrives -* based on the conditional independence assumption ```math \begin{align} @@ -463,6 +451,7 @@ p(\theta|\{d_1, d_2, \ldots, d_N\})&\propto p(\theta) \prod_{n=1}^N p(d_n|\thet * *yesterday's posterior becomes today's prior* +## Sequential update* To be more specific, the sequential update algorithm is: @@ -477,12 +466,21 @@ $$a_n = a_{n-1} + \mathbf{1}(d_n=\texttt{head}), \;\; b_n = b_{n-1} + \mathbf{1 Note that the function ``\mathbf{1}(\cdot)`` returns 1 if the test result of the argument is true and 0 otherwise. -## Demonstration +## Demonstration: 200 coin tosses -A demon with $(N_tosses) tosses of -* a fair coin """ +# ╔═╡ 9638d082-5b61-4051-912b-fc263abeb239 +begin + # simulate 200 tosses of a fair coin + N_tosses = 200 + true_θ = 0.5 + Random.seed!(100) + coin_flipping_data = rand(N_tosses) .< true_θ + Nh = sum(coin_flipping_data) + Nt = N_tosses- Nh +end; + # ╔═╡ 997d45bf-cdbf-4881-b823-ebb7d9ec19db let a₀, b₀ = 1, 1 @@ -717,6 +715,12 @@ let # end end +# ╔═╡ 29a49584-3a52-410e-8f15-1d9293955826 +md""" + +# Bayesian predictive checks +""" + # ╔═╡ 6b460036-890d-4364-aac2-2c61dc44ed75 md""" @@ -2805,6 +2809,7 @@ version = "1.4.1+1" # ╟─83586a99-02e5-42e3-83b2-2d90d3d3e396 # ╠═644cbe41-2027-4e3f-a31f-c656a1158466 # ╟─1a483bed-1639-41b4-ad7f-40b009bd45a9 +# ╟─29a49584-3a52-410e-8f15-1d9293955826 # ╟─6b460036-890d-4364-aac2-2c61dc44ed75 # ╟─df3c6bd8-e81f-4ccb-b0d1-98832e41537f # ╟─5440ceb3-b791-4935-8b59-339010546090 diff --git a/lectures/lecture_intro.jl b/lectures/lecture_intro.jl index a20c4b9..3c8241d 100644 --- a/lectures/lecture_intro.jl +++ b/lectures/lecture_intro.jl @@ -164,26 +164,24 @@ md""" * Model checking: predictive analysis * Beyond i.i.d. model + * **Lecture 3** MCMC * Metropolis-Hastings (MH) and Gibbs sampler * Hamiltonian and NUTS sampler + * **Lecture 4** Practical Bayesian inference with Turing.jl * Quick introduction to Julia and *Turing.jl* #### Second day: -* **Lecture 5** Linear regression and Logistic regression +* **Lecture 5** Bayesian linear regression * and their extensions and variants -* **Lecture 6** Non-linear models +* **Lecture 6** Bayesian logistic regression * Bayesian fixed basis models (sparsity) - * Bayesian neural network -* **Lecture 7** More topics (if time allowed) - * Bayesian unsupervised learning - * Bayesian finite mixture models - * Probabilistic PCA + @@ -247,21 +245,30 @@ $Y = f(X) + \varepsilon$ """ -# ╔═╡ 93b5c93c-682a-49b4-8191-a82a22804a0d +# ╔═╡ e7242619-19fc-461b-a5e0-fc50361d2565 +TwoColumnWideRight( md""" +\ +\ +\ + For example, **linear regression** ```math f(X) = \beta_0 + \beta_1 X ``` """ - -# ╔═╡ 8a8eabbd-a0cd-47f1-a2b7-1e6c10f29c2b -html"""
+ , + html"""
""" + +) + # ╔═╡ 63b92973-1031-439c-aa68-60f00552ab18 md""" +## + Now consider a non-linear dataset: * the relationship is non-linear @@ -280,29 +287,31 @@ md""" $P(Y = \text{class 1} | X=x) = \sigma(x)$ -* what is the probability that an instance belongs to class 1/2 +* what is the probability that an instance belongs to class 1 or 2 """ -# ╔═╡ 24f06a6c-f64f-488b-9fd0-dbbf24007212 +# ╔═╡ 9066781d-b542-4c95-8a5b-d244df217650 +TwoColumnWideRight( md""" +\ + !!! note "Question" - How would you classify data at the following input locations? + ##### How would you classify data at the following input locations? - ```math - \sigma(x) = ? - ``` -""" +""", -# ╔═╡ 4f0a3ee7-d2e9-4945-9491-e48475421574 -Resource(bayes_figure_url * "logis_data.png", :width=>600) + Resource(bayes_figure_url * "logis_data.png", :width=>600) + + +) # ╔═╡ c9b2fa82-841d-47cf-b7b4-23f8a86e60a7 md""" ## Some motivating examples - 4 (cont.) -> Which one do you prefer? +> ##### _Which one do you prefer?_ """ # ╔═╡ 2bc778d0-6974-4a97-8769-3cb66100fd80 @@ -340,15 +349,27 @@ md""" ## Random variable +Let's consider ``\cancel{\textbf{random}} \textbf{variable}`` first, -**Random Variables**: variables' value is *random* rather than *certain* +> e.g. a variable ``\large X= 5`` -* *e.g.* $X$: rolling of a fair 6-faced die 🎲 - * ``X`` can take 1,2,3,...,6 possible values - * with probability **distribution** +* ``X``: a _deterministic_ variable +* *with ``100\%`` certainty*, ``X`` takes the value of 5 + + +## + + +``{\textbf{Random}}\; \textbf{variable}``: the value is _**random**_ rather than _**certain**_ -```math + +*For example*: $X$ is the rolling realisation of a 6--faced die 🎲 +* ``X \in \{1,2,3,4,5,6 \}`` + +* and ``X`` has a *probability distribution* ``P(X)`` +```math +\large \begin{equation} \begin{array}{c|cccccc} & X = 1 & X = 2 & X = 3 & X = 4 & X = 5 & X = 6 \\ \hline @@ -359,14 +380,49 @@ P(X) & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 & 1/6 ``` """ -# ╔═╡ b52911ff-886a-4113-85a5-af508dc0cb8e +# ╔═╡ 0cc7386d-4584-4a34-bbf7-546bf9ac1134 md""" -## Discrete *vs* continuous r.v.s +## Probability distributions +Random variables' uncertainties is quantified by **probability distributions** +$$\large P(X=x) \geq 0, \forall x\;\; \text{and}\;\; \sum_x{P(X=x)}=1$$ +* non-negative and sum to one + + +**Temperature** $T: P(T)$ + +```math + +\begin{equation} \begin{array}{c|c} +T & P(T)\\ +\hline +hot & 0.5 \\ +cold & 0.5 +\end{array} \end{equation} +``` + + +**Weather** $W: P(W)$ + +```math + +\begin{equation} \begin{array}{c|c} +W & P(W)\\ +\hline +sun & 0.6 \\ +rain & 0.1 \\ +fog & 0.2 \\ +snow & 0.1 +\end{array} \end{equation} +``` +""" + +# ╔═╡ b52911ff-886a-4113-85a5-af508dc0cb8e +md""" +## Discrete *vs* continuous r.v.s -Depending on ``\mathcal A``, there are two kinds of random variables **Discrete random variable**: ``\mathcal A`` is discrete, *e.g.* ``\mathcal A=\{\texttt{true},\texttt{false}\}, \mathcal A=\{1,2,3,\ldots, \infty\}`` @@ -403,9 +459,7 @@ md""" ## Examples: discrete r.v. -- Bernoulli -``X``: a random variable taking binary values - -* the domain ``\mathcal{A} = \{1, 0\}`` (for example, coin tossing or court case) +``X``: a random variable taking binary values, the domain ``\mathcal{A} = \{1, 0\}`` * the probability distribution (probability mass function) is @@ -501,27 +555,35 @@ md""" -Gaussian random variable $X$ has a distribution +""" -$$p(X=x) = \mathcal{N}(x; \mu, \sigma^2) = \frac{1}{\sigma \sqrt{2\pi}} e^{-\frac{1}{2} \left(\frac{x-\mu}{\sigma} \right)^2}$$ +# ╔═╡ 7750287e-96e3-4920-9e3e-0dd461e2f2ea +TwoColumn(md""" +\ -* ``\mu``: mean parameter -* ``\sigma^2``: variance +Gaussian random variable $X$ + + +$(Resource("https://leo.host.cs.st-andrews.ac.uk/figs/CS5914/gaussian_eq_1d.png", :width=>450, :align=>"middle")) + +\ + +* ``\mu``: mean or location +* ``\sigma^2``: variance or scale, controls the spread -""" -# ╔═╡ 16754b05-44c5-47b2-9b2e-89f74d5f59ea -let + +""", let μs = [-3, 0, 3] σ²s = [1 , 2 , 5] - plt_gaussian = Plots.plot(title="Gaussian distributions", xlabel=L"X", ylabel=L"p(X)") + plt_gaussian = Plots.plot(title="Gaussian distributions", xlabel=L"X", ylabel=L"p(X)", size=(300,300)) for i in 1:3 plot!(plt_gaussian, Normal(μs[i], sqrt(σ²s[i])), fill=true, alpha=0.5, label=L"\mathcal{N}(μ=%$(μs[i]), σ^2=%$(σ²s[i]))") vline!([μs[i]], color=i, label="", linewidth=2) end plt_gaussian -end +end) # ╔═╡ 7416236c-5ff0-4eb8-b448-e50acb0c016b md""" @@ -540,6 +602,7 @@ A **joint distribution** over a set of random variables: ``X_1, X_2, \ldots, X_n $P(x_1, x_2, \ldots, x_n) \geq 0\;\; \text{and}\;\; \sum_{x_1, x_2, \ldots, x_n} P(x_1, x_2, \ldots, x_n) =1$ +## Example: joint distribution of temperature (``T``) and weather (``W``): ``P(T,W)`` ```math @@ -557,6 +620,25 @@ cold & rain & 0.3\end{array} \end{equation} """ +# ╔═╡ c2f8d8e7-16d5-46c5-a66d-664dbaeb4c91 +md""" + +## Conditional probability + +Conditional probability is defined as + +$$P(A=a|B=b) = \frac{P(A=a, B=b)}{P(B=b)}$$ + +* read: *probability of ``A`` given ``B``* +* the probability of $A=a$ given $B=b$ is true + + + +""" + +# ╔═╡ be70c96c-685d-4136-8828-c8a35a5cbe0b +Resource(figure_url * "figs4CS5010/condiprob.png", :width=>800, :align=>"left") + # ╔═╡ 48484810-1d47-473d-beb3-972ca8b934d5 md""" ## Two probability rules @@ -564,9 +646,9 @@ md""" There are only two probability rules -* **sum rule** +* #### *sum rule* -* **product rule** +* #### *product rule* @@ -596,10 +678,10 @@ Resource(figure_url * "/figs4CS5010/sumrule_.png", :width=>800, :align=>"left") # ╔═╡ 05e3c6d0-f59b-4e1e-b631-11eb8f8b0945 md""" -## Probability rule 2: chain rule +## Probability rule 2: product rule -Chain rule (*a.k.a* **product rule**) +Product rule (*a.k.a* **chain rule**) $$P(X, Y) = P(X)P(Y|X);\;\; P(X, Y) = P(Y)P(X|Y)$$ @@ -624,7 +706,6 @@ $P(x_1, x_2, x_3) = P(x_1)P(x_2|x_1)P(x_3|x_1, x_2)$ $P(x_1, x_2, \ldots, x_n) = P(x_1)P(x_2|x_1)P(x_3|x_1,x_2) \ldots=\prod_i P(x_i|x_1, \ldots, x_{i-1})$ -**Chain rule**: chain distributions together """ # ╔═╡ e12f0e44-2b7d-4075-9986-6322fb1498c4 @@ -634,58 +715,76 @@ md""" -**Bayes' rule** is a direct result of the two rules (based on two r.v.s) +""" -* ``H``: hypothesis -* ``\mathcal{D}``: observation +# ╔═╡ 01140639-6cda-49e0-a9c9-8b7d9169a52d +html"
" + +# ╔═╡ f60b1407-df78-41b5-959c-742910364fa6 +md""" + +* **Bayes' rule** provides us a way to find out the posterior; +* given the prior and likelihood -Recall the definition of conditional probability -```math -p(H| \mathcal{D}) =\frac{p(H, \mathcal{D})}{p(\mathcal{D})}=\frac{p(H)p(\mathcal{D}|H)}{\sum_{h'} p(H=h', \mathcal{D})} -``` +## Bayes' theorem -- the evidence term """ -# ╔═╡ 2229e882-e2b6-4de3-897f-7a75d69c24ec -md""" +# ╔═╡ 058f1e9b-6e77-4cbc-9338-3de93bc6e5c3 +html"
" -## Bayes' theorem +# ╔═╡ 01231683-61fc-4f36-b004-c005723c53e0 +md""" -!!! infor "Bayes' rule" - $$p(H|\mathcal D) =\frac{\overbrace{p(H)}^{\text{prior}} \overbrace{p(\mathcal D|H)}^{\text{likelihood}}}{\underbrace{p(\mathcal D)}_{\text{evidence}}}$$ +* note the **Evidence** is the sum of the numerator +* it serves the purpose of **normalising constant** such that the posterior sum to 1 +```math +\large +\sum_h p(h|\mathcal{D}) = 1 +``` +## - * ``p(h)`` **prior**: prior belief of ``\theta`` before we observe the data - * ``p(\mathcal D|h)`` **likelihood**: conditional probability of observing the data given a particular $\theta$ - * ``p(\mathcal D)`` **evidence** (also known as *marginal likelihood*) +##### Since the *Evidence* ``p(\mathcal{D})`` is a constant +* it does **not** depend on ``h`` """ -# ╔═╡ a602e848-8438-4a41-ab76-ec3f6497de3e -md""" +# ╔═╡ 8b8ac80b-daa5-4dea-b847-e0e660c1c0c6 +html"
" +# ╔═╡ cf969c4c-909d-4dc7-ad95-74352f987c1f +md""" ## Why chain rule (or Bayes' rule) is useful +""" -Easier for us to specify the joint distribution forwardly via **chain rule** +# ╔═╡ 571a31d9-77fe-4457-827a-6a746a529a4a +TwoColumn(md"""It is always easier for us to think generatively or causally $$H \xRightarrow[\text{probability}]{\text{forward}} \mathcal{D}$$ -$$\text{or}$$ -$$P(H,\mathcal{D}) = P(H)P(\mathcal{D}|H)$$ + * ``h`` is the possible hypothesis (which is usually unknown), with some prior $$\text{prior: }P(H)$$ -* ``\mathcal{D}`` is the observation; given the cause, how likely you observe the data: +* ``\mathcal{D}`` the observation, or `cough`; given the hidden `h`, how likely you observe the data: $$P(\mathcal D|H):\;\; \text{likelihood function}.$$ +""", html"""
+""") + +# ╔═╡ a602e848-8438-4a41-ab76-ec3f6497de3e +md""" + + ## Example: Cough example ### first Bayesian inference problem @@ -837,8 +936,6 @@ Bayesian inference is a belief update procedure \text{prior } P(H) \Rightarrow \text{posterior } P(H|\mathcal{D}) ``` -It **update** *prior* to *posterior* based on the observed ``\mathcal{D}`` - """ # ╔═╡ 9c2086db-b108-4b15-87c8-8f38e53767fb @@ -859,7 +956,7 @@ plot(post_plt) # ╔═╡ 65d9e2ed-1702-43aa-aafd-e2b38d0b403a md""" -## Another example -- change point detection +## Another example -- change point detection* > Your friend has two coins: @@ -873,7 +970,7 @@ md""" # ╔═╡ 5920cd07-30b9-44a7-8f5c-999c1f8ef043 md""" -## Forward generative modelling +## Forward generative modelling* Let's identify the random variables first @@ -898,7 +995,7 @@ S \Rightarrow {d_1, d_2, \ldots, d_n} # ╔═╡ 5acefb1f-209e-489f-afb9-dce517ad6225 md""" -## Forward generative modelling (cont.) +## Forward generative modelling (cont.)* $$P(\mathcal D|S) = \underbrace{\prod_{i=1}^S P(d_i|p_1 =0.5)}_{\text{fair coin}} \underbrace{\prod_{j=S+1}^N P(d_j|p_2 = 0.2)}_{\text{bent coin}};$$ @@ -922,7 +1019,7 @@ $$P(\{0,1,1,0,1,0,0\}|S=2) = \underbrace{0.5\cdot 0.5}_{\text{before switch: }\{ # ╔═╡ 6593bd28-f483-4168-ac69-eae469fbcb27 md""" -## Forward generative modelling: Prior for P(S) +## Forward generative modelling: Prior for P(S)* To reflect our ignorance, we use a uniform flat prior @@ -958,7 +1055,7 @@ end # ╔═╡ 72fb8fa0-8263-4729-af19-ff6047865a61 md""" -## Make the inference +## Make the inference* The rest is very routine: **apply Bayes' rule** mechanically $$P(S|\mathcal D) \propto P(S) P(\mathcal D|S)$$ @@ -986,7 +1083,7 @@ end md""" -## Another dataset ? +## Another dataset ?* """ @@ -1026,19 +1123,126 @@ md""" ## Independence -Random variable $X,Y$ are independent, if - -$$\forall x,y : P(x,y) = P(x)P(y)$$ +Random variable $X,Y$ are **independent**, if -* the joint is formed by the product of the marginals +$$\large \forall x,y : P(x,y) = P(x)P(y)$$ -Another equivalent definition +*Alternatively* -$$\forall x,y: P(x|y) = P(x)$$ +$$\large \forall x,y: P(x|y) = P(x)$$ * intuition: knowing (conditional on $Y=y$) does not change the probability of ``X`` + + +## + +For _multiple_ independent random variables, + +```math +P(X_1, X_2, \ldots, X_n) = \prod_{i=1}^n P(X_i) +``` +""" + +# ╔═╡ 776649a0-d8ef-4fcb-a9ea-69e956dbd637 +md""" +## Independence: genuine coin toss + +> Two sequences of 300 “coin flips” (H for heads, T for tails). +> +> * which one is the genuine **independent** coin tosses? + +**Sequence 1** + +> TTHHTHTTHTTTHTTTHTTTHTTHTHHTHHTHTHHTTTHHTHTHTTHTHHTTHTHHTHTTTHHTTHHTTHHHTHHTHTTHTHTTHHTHHHTTHTHTTTHHTTHTHTHTHTHTTHTHTHHHTTHTHTHHTHHHTHTHTTHTTHHTHTHTHTTHHTTHTHTTHHHTHTHTHTTHTTHHTTHTHHTHHHTTHHTHTTHTHTHTHTHTHTHHHTHTHTHTHHTHHTHTHTTHTTTHHTHTTTHTHHTHHHHTTTHHTHTHTHTHHHTTHHTHTTTHTHHTHTHTHHTHTTHTTHTHHTHTHTTT + +**Sequence 2** + +> HTHHHTHTTHHTTTTTTTTHHHTTTHHTTTTHHTTHHHTTHTHTTTTTTHTHTTTTHHHHTHTHTTHTTTHTTHTTTTHTHHTHHHHTTTTTHHHHTHHHTTTTHTHTTHHHHTHHHHHHHHTTHHTHHTHHHHHHHTTHTHTTTHHTTTTHTHHTTHTTHTHTHTTHHHHHTTHTTTHTHTHHTTTTHTTTTTHHTHTHHHHTTTTHTHHHTHHTHTHTHTHHHTHTTHHHTHHHHHHTHHHTHTTTHHHTTTHHTHTTHHTHHHTHTTHTTHTTTHHTHTHTTTTHTHTHTTHTHTHT + +* both of them have ``N_h = 148`` and ``N_t= 152`` +""" + +# ╔═╡ 0c78067b-e2cc-4866-b12e-abebe09cf564 +md""" + +## Independence: genuine coin toss (cont.) + + +Recall **independence**'s definition + +```math +\large +P(X_{t+1}|X_{t}) = P(X_{t+1}) +``` + +* ``X_{t}``: current toss at ``t`` +* ``X_{t+1}``: next toss + + +Therefore, if **independent**, then + +```math +\large +P(X_{t+1}=\texttt{h}|X_{t}=\texttt{h}) = P(X_{t+1}=\texttt{h}|X_{t}=\texttt{t}) =P(X_{t+1}=\texttt{h}) = 0.5 +``` + +""" + +# ╔═╡ ef748d34-071b-4e59-a96c-2d606d483ee9 +md""" + +## + + +**Sequence 1** + +> TTHHTHTTHTTTHTTTHTTTHTTHTHHTHHTHTHHTTTHHTHTHTTHTHHTTHTHHTHTTTHHTTHHTTHHHTHHTHTTHTHTTHHTHHHTTHTHTTTHHTTHTHTHTHTHTTHTHTHHHTTHTHTHHTHHHTHTHTTHTTHHTHTHTHTTHHTTHTHTTHHHTHTHTHTTHTTHHTTHTHHTHHHTTHHTHTTHTHTHTHTHTHTHHHTHTHTHTHHTHHTHTHTTHTTTHHTHTTTHTHHTHHHHTTTHHTHTHTHTHHHTTHHTHTTTHTHHTHTHTHHTHTTHTTHTHHTHTHTTT + +The joint frequency table is + +```math + +\begin{equation} \begin{array}{c|cc} +n(X_{t}, X_{t+1}) & X_{t+1} = \texttt h & X_{t+1} =\texttt t \\ +\hline +X_t =\texttt h & 46 & 102 \\ + +X_t= \texttt t & 102 & 49 \\ + +\end{array} \end{equation} + +``` + +* ``P(X_{t+1}=\texttt h|X_t=\texttt h) =\frac{46}{46+102} \approx 0.311 \ll 0.5`` +* ``P(X_{t+1}=\texttt h|X_t=\texttt t) =\frac{102}{102+49} \approx 0.675 \gg 0.5`` """ +# ╔═╡ 3caf5284-3c82-4fc9-a705-1215b9881df9 +md""" + +## + +**Sequence 2** + +> HTHHHTHTTHHTTTTTTTTHHHTTTHHTTTTHHTTHHHTTHTHTTTTTTHTHTTTTHHHHTHTHTTHTTTHTTHTTTTHTHHTHHHHTTTTTHHHHTHHHTTTTHTHTTHHHHTHHHHHHHHTTHHTHHTHHHHHHHTTHTHTTTHHTTTTHTHHTTHTTHTHTHTTHHHHHTTHTTTHTHTHHTTTTHTTTTTHHTHTHHHHTTTTHTHHHTHHTHTHTHTHHHTHTTHHHTHHHHHHTHHHTHTTTHHHTTTHHTHTTHHTHHHTHTTHTTHTTTHHTHTHTTTTHTHTHTTHTHTHT + +```math + +\begin{equation} \begin{array}{c|cc} +n(X_{t}, X_{t+1}) & X_{t+1} = \texttt h & X_{t+1} =\texttt t \\ +\hline +X_t =\texttt h & 71 & 77 \\ + +X_t= \texttt t & 76 & 75 \\ + +\end{array} \end{equation} + +``` + +* ``\hat P(X_{t+1}=\texttt h|X_t=\texttt h) =\frac{71}{71+77} \approx 0.48 \approx 0.5`` +* ``\hat P(X_{t+1}=\texttt h|X_t=\texttt t) =\frac{76}{76+75} \approx 0.503 \approx 0.5`` +""" + # ╔═╡ 8afac55e-44f9-4127-b16a-969560307f90 md""" @@ -1047,11 +1251,11 @@ md""" ``X`` is conditionally independent of ``Y`` given ``Z``, if and only if -$$\forall x,y,z: P(x,y|z) = P(x|z)p(y|z)$$ +$$\Large \forall x,y,z: P(x,y|z) = P(x|z)p(y|z)$$ or equivalently (**more useful**), if and only if -$$\forall x,y,z: P(x|z, y) = P(x|z)$$ +$$\Large\forall x,y,z: P(x|z, y) = P(x|z)$$ * intuition: knowing ``z``, ``x`` is no longer influenced by ``y`` (therefore independence): ``p(x|z, \cancel{y})`` @@ -1112,48 +1316,74 @@ $$P(\text{Umbrella}|\cancel{\text{Traffic}}, {\text{Rain}}) = P(\text{Umbrella}| """ # ╔═╡ 12751639-7cdc-4e39-ba72-30ee2fe2cd49 +# md""" + +# ## Example + +# Consider the coin switching problem + + +# Based on *chain rule* (or product rule) + +# $$P(\text{S},\mathcal{D}) = P(S) P(\mathcal{D}|S)$$ + +# * ``\mathcal{D} = [d_1, d_2, \ldots, d_n]`` +# Then applies **conditional independence assumption** + +# $$P(\mathcal{D}|S) = P(d_1|S)P(d_2|S) \ldots P(d_n|S)$$ + +# * conditioned on the switching time ``S``, the tosses are independent + + +# Conditional independence greatly simplies probability models +# * we only need to spell out ``P(S)`` and ``P(d_i|S)`` rather than the conditional joint ``P(d_1, d_2, \ldots, d_n|S)`` +# * also note that ``P(d_i|S)`` are the same for all ``i`` + +# """ + +# ╔═╡ 7ac35147-4c3d-421e-ba42-6e6e1325584f md""" -## Example +## More example -- coin guess +""" -Consider the coin switching problem +# ╔═╡ c31706a2-cb86-4fe2-9d64-a1d09490792c +md""" -Based on *chain rule* (or product rule) +> ##### Two coins (with biases ``0.5`` and ``0.99`` respectively) in an urn +> * ###### randomly pick one and toss it 3 times -$$P(\text{S},\mathcal{D}) = P(S) P(\mathcal{D}|S)$$ -* ``\mathcal{D} = [d_1, d_2, \ldots, d_n]`` -Then applies **conditional independence assumption** -$$P(\mathcal{D}|S) = P(d_1|S)P(d_2|S) \ldots P(d_n|S)$$ +""" -* conditioned on the switching time ``S``, the tosses are independent +# ╔═╡ 393e9b36-d85e-440b-a113-2d748c3ac03b +md""" +The tossing results $\{Y_1, Y_2, Y_3\}$ are conditionally independent given coin choice $C$ -Conditional independence greatly simplies probability models -* we only need to spell out ``P(S)`` and ``P(d_i|S)`` rather than the conditional joint ``P(d_1, d_2, \ldots, d_n|S)`` -* also note that ``P(d_i|S)`` are the same for all ``i`` +```math +\Large +P(Y_1, Y_2, Y_3|C) = P(Y_1|C)P(Y_2|C)P(Y_3|C) +``` """ # ╔═╡ 532a9f66-b04a-446a-becf-d74759bcf750 md""" ## Probabilistic graphical models +#### What is Probabilistic graphical models (PGMs) +> ##### Graphical representation of a probabilistic model -Probabilistic graphical models are very useful probabilistic modelling tool -* to model conditional independence graphically - - -We consider a specific kind: **directed graphical model** -* also known as Bayes' network -* a directed acyclic graph (DAG) - * **node**: random variables - * **edges**: relationship between random variable +* or joint distribution +###### For example, the cough example, the PGM represents -For example, the cough example +```math + P(H, \texttt{Cough}) = P(H)P(\texttt{Cough}|H) +``` """ @@ -1237,9 +1467,8 @@ md""" ## Directed graphical model: a DAG with local distributions -A Directed graphical model is -> **Directed Acyclic Graph (DAG)** + local prob. distributions, $P(X_i|\text{parents}(X_i))$ +> **Directed Acyclic Graph (DAG)** + **local prob. distributions** $P(X_i|\text{parents}(X_i))$ * **DAG**, ``G``: * ``V=\{X_1, X_2, \ldots, X_n\}``, one random variable per vertex (also called node) @@ -1251,18 +1480,19 @@ A Directed graphical model is """ -# ╔═╡ eda02250-b88d-45a1-9430-114e3d60f72a -md""" +# ╔═╡ 6699af84-5adb-44ce-89c3-03cde2fac07b +TwoColumn(md""" +\ +\ For example, cough example * ``H`` is with ``P(H)`` * ``\texttt{Cough}``: ``P(\texttt{Cough}|H=h)`` -""" - -# ╔═╡ 7aea40a5-be9f-4ac0-94e7-b692985ea35d +""", html"""
""" +) # ╔═╡ be4b66ed-dc94-4450-97dd-a57175913b20 md""" @@ -1284,12 +1514,11 @@ md""" ## Example - Traffic, Rain, Umbrella -Recall the **Traffic, Umbrella, Raining** example The full joint (based on the **conditional independence assumption**) becomes -$$P(\text{Rain},\text{Umbrella}, \text{Traffic}) = P(\text{Rain}) P(\text{Traffic}|\text{Rain}) P(\text{Umbrella}|\text{Rain})$$ +$$\large P(\text{Rain},\text{Umbrella}, \text{Traffic}) = P(\text{Rain}) P(\text{Traffic}|\text{Rain}) P(\text{Umbrella}|\text{Rain})$$ The corresponding graphical model is @@ -1305,32 +1534,30 @@ md""" ## Example -- coin guess +""" -> Two coins (with biases ``0.5`` and ``0.99`` respectively) in an urn -> * you randomly pick one and toss it 3 times +# ╔═╡ 01794f0a-0c40-43fc-9621-32b46099d6cf +md""" +> ##### Two coins (with biases ``0.5`` and ``0.99`` respectively) in an urn +> * ###### randomly pick one and toss it 3 times -""" -# ╔═╡ 10ad19a7-f1ba-4f3c-ada7-8ce1391ef151 -html"""
""" -# ╔═╡ 884b5699-08fb-4aba-abf8-2628d71818ce -md""" +""" -For node Coin Choice: $P(C)$: +# ╔═╡ 15f2ebfd-cced-48a3-a13c-5ed166111022 +TwoColumn(html"""

""", md""" + +Coin Choice: $P(C)$ |``C`` | ``P(C=c)`` | | --- | --- | | 1 | 0.5 | | 2 | 0.5 | -""" - -# ╔═╡ 71cdf6a5-90bc-4a4d-80f7-214406f22019 -md""" -For node $Y_i$, the local conditional distributions $P(Y_i|C)$: +Observation ``Y_i``: $P(Y_i|C)$ |``C`` | ``\texttt{head}`` | ``\texttt{tail}`` | | ---| --- | --- | @@ -1339,7 +1566,8 @@ For node $Y_i$, the local conditional distributions $P(Y_i|C)$: * each row is a valid conditional distributions -""" + +""") # ╔═╡ b96cc13e-5fd9-4fa1-a9bc-4ea7b22c07a3 md""" @@ -1354,34 +1582,45 @@ Note that $P(Y_i|C)$ for $i =1,2,3$ are repeated # ╔═╡ a94dac61-af9b-4820-bc2a-812a282a5603 html"""
""" -# ╔═╡ 8044aa77-b299-4874-b90b-ee36fb8d374e +# ╔═╡ 17c47cc4-63ab-40ec-86af-b17d0b2d6b5f md""" ## Some graphical model patterns There are three patterns in graphical models -* common cause pattern -* chain pattern -* collider pattern +* ##### common cause pattern +* ##### chain pattern +* ##### collider pattern -All other general graphical models are **composition** of the three patterns +> All graphical models are **composition** of the three patterns ## Common cause pattern (*a.k.a.* tail to tail) +""" + +# ╔═╡ fb5bd9c6-6e5c-49d9-9118-9c6de78fa6f7 +TwoColumn(md""" + +\ + ``Y`` is the common cause of ``X`` and ``Z`` * also known as tail to tail (from ``Y``'s perspective) * *e.g.* the unknown bias is the common cause of the two tossing realisations -""" -# ╔═╡ 63c2da6b-4f7a-40dd-95fe-17aead4134a6 -html"""
""" +""", html"""
""") -# ╔═╡ cc8e87da-216c-40bf-9fc1-0e8c929ad7a1 +# ╔═╡ 2bb41562-6011-46a8-a753-b91315911577 +md""" +## Common cause pattern (*a.k.a.* tail to tail) +""" + +# ╔═╡ 6f4acf7a-4978-465f-a50f-25476cacd54b +TwoColumn( md""" It can be shown that @@ -1391,36 +1630,55 @@ X \perp Z |Y\;\; \text{or}\;\;P(X,Z|Y) =P(X|Y)P(Z|Y) ``` -But not **marginally** independent +But **marginally** not independent ```math -X \not\perp Z\;\; \text{or}\;\;P(X,Z) \neq P(X)P(Z) +X \not\perp Z|\emptyset\;\; \text{or}\;\;P(X,Z) \neq P(X)P(Z) ``` -""" +""", + +html"""
""" + + +) -# ╔═╡ 15cf6021-b172-41ae-9392-0838c39d551b +# ╔═╡ 49a22f7e-b7a2-45dd-a44b-c176da48fd28 +TwoColumn( md""" +\ **Example**: "Vaccine" effectiveness * common cause: whether a vaccine is effective (**Y**) -* child nodes: two independent patients' treatment outcome after receiving the vaccine (**X**, **Z**) -""" +* ``X, Z`` nodes: two patients' treatment outcomes after receiving the vaccine (**X**, **Z**) +""", + +html"""
""" -# ╔═╡ 588eec3d-fc0b-4384-ac9b-bb8d8816b184 + +) + +# ╔═╡ 7f201df4-9ddb-4565-8b22-aa34ef8a9950 md""" ## Chain pattern (*a.k.a.* tip to tail) -``X`` impacts ``Z`` via ``Y`` +> ##### ``X`` impacts ``Z`` _via_ ``Y`` +> * models **indirect** influence -* indirect impact +""" +# ╔═╡ 7c27ad55-a49e-4b56-b41e-1a64b99f3688 +html"""
""" + +# ╔═╡ 108d0def-f048-4010-aba9-3f4385875540 +md""" + +## Chain pattern (*a.k.a.* tip to tail) """ -# ╔═╡ 450de0ac-e2a9-4e0a-b542-72534c751fa2 -html"""
""" +# ╔═╡ e7f3feae-9c29-4e9f-81b9-28895f562d59 +TwoColumn( -# ╔═╡ b96539d8-5ca9-4a04-84bf-660db2a4f609 md""" It can be shown @@ -1431,19 +1689,24 @@ X \perp Z|Y \;\; \text{or}\;\;P(X,Z|Y) = P(X|Y)P(Z|Y) ``` -but not marginally independent +but marginally **not** independent ```math -X \perp Z \;\; \text{or}\;\;P(X,Z) \neq P(X)P(Z) +X \not\perp Z|\emptyset \;\; \text{or}\;\;P(X,Z) \neq P(X)P(Z) ``` -""" +""", + + +html"""

""" + +) -# ╔═╡ c6653de5-1542-44a6-9fcb-2e9bd091f2bb +# ╔═╡ e5f08691-e099-4cee-9bbb-b893b512f4bc md""" -**Example**: Rain, Floor is Wet, Slip +**Example**: `Rain`, `Floor_is_Wet`, `Slip` ```math @@ -1453,35 +1716,18 @@ md""" ``` * add *Injured* ? - -* explain the CI assumptions for this case """ -# ╔═╡ 9fafd041-2d42-4bf1-a17a-c31deb23d97d +# ╔═╡ c5b2a9f7-9261-444c-812a-64efa3c500ef md""" ## A classic example -- chain case -**Voting for Trump** does not **directly** make you **die**! -""" - -# ╔═╡ 615b57fb-0ad5-4175-bc71-000aaae89b65 -html"""
-""" - -# ╔═╡ 83e1f7fa-c711-4db6-a2be-6914a4e7e8a2 -md""" - - -But via **Vaccination**, everything makes sense - +##### *Voting for Trump* does not *directly* make you more likely to *die*! +* but there is a hidden intermediate cause, *i.e.* vaccination rate """ -# ╔═╡ d0868210-baa4-4bdc-8d99-f318b6b8f6df -html"""
-""" - -# ╔═╡ 3db2f0f1-d8b1-4483-af5e-71889be766d9 +# ╔═╡ a3fe5cfe-6f41-432f-bb60-f08446231fbf md""" A suitable model @@ -1493,19 +1739,40 @@ A suitable model """ -# ╔═╡ 94767935-df48-4466-9454-aa000217ddda +# ╔═╡ 95319916-264a-4893-854a-4d02543fc6c1 +TwoColumn(html"""
+""", html"""
+""") + +# ╔═╡ 4f90a063-7aaf-4287-8616-301a7636665d md""" ## Common effect (*a.k.a.* collider, or tip to tip) -``Y`` is the effect of some joint causes of ``X`` and ``Z`` -* also known as point to point (from ``Y``'s perspective) """ -# ╔═╡ 41f94bdc-5a92-4bc7-accb-f927b02e4032 -html"""
""" +# ╔═╡ 7f30f317-82b9-45f2-a6a7-6bcd785b825b +TwoColumn(md""" + -# ╔═╡ fbe1bc73-f1c8-484a-8c5f-02781b3f871f + +\ +\ +\ + +``Y`` is the joint **effect** of some combination of *independent* causes ``X`` and ``Z`` + +""", + +html"""
""") + +# ╔═╡ 67117028-356f-4ccb-86cd-25b791e76722 md""" +## Common effect (*a.k.a.* collider, or tip to tip) + +""" + +# ╔═╡ b67b29a9-aa19-4bc2-ae60-26ca2453a905 +TwoColumn(md""" **Quite the opposite** to the previous two cases, * ``X, Z`` are marginally independent @@ -1520,58 +1787,105 @@ X\perp Z|\emptyset\;\; \text{or} \;\; P(X, Z)= P(X)P(Z) ```math X\not \perp Z|Y\;\; \text{or} \;\; P(X, Z|Y)\neq P(X|Y)P(Z|Y) ``` +```math +\text{or } P(X|Z, Y)\neq P(X|Y) +``` -""" +""", + +html"""
""") -# ╔═╡ 99b465f0-63d6-4daf-bcfd-4704888d9e72 -md""" +# ╔═╡ 82bd4b52-34a6-44ea-8a18-2e4186cf2210 +TwoColumn(md""" +\ **Example**: Exam performance * ``X``: your knowledge of the subject * ``Z``: exam's difficulty * ``Y``: exam grade + +*Marginally,* `Knowledge` ``\perp`` `Exam_Difficulty` + + + +""", html"""
""") + +# ╔═╡ dd5a7d7b-e59a-4899-8517-d8168a4639ca +md""" +*Conditional* on the effect `Grade`, they become dependent + +```math +\begin{align} +P(\texttt{Knowledge}=good|\texttt{Grade}=fail,\; \texttt{Exam\_diff}=easy)\; {\Large\neq}\; \\ P(\texttt{Knowledge}=good|\texttt{Grade}=fail, \texttt{Exam\_diff}=hard) +\end{align} +``` + + +* exam is easy ``\Rightarrow`` `knowledge` is bad +* exam is difficult ``\Rightarrow`` `knowledge` is probably not that bad """ -# ╔═╡ 583812b3-7517-4177-b1c7-7cd5b2f1908b +# ╔═╡ 608eac2e-544b-44e0-8162-c777123d3e04 md""" -## Exercise & discussion +## More collider examples + + + +##### Colliders are very common and they help explain a lot +\ + + + +!!! example "Example (location vs food)" + Why food served at restaurants at **touristy locations** are usually **bad**? -!!! exercise "Coin swicth's graphical model" - Recall the coin switching problem - * construct the corresponding graphical model representation - * which pattern the model involves - * consider the three node types: observed, unobserved, fixed - * which type of nodes are used - * how to add *fixed* nodes? """ -# ╔═╡ 2e2f0b68-b8b1-41fc-981d-46e43037ac3a -html"
" +# ╔═╡ c8c61f65-49f3-489d-aff8-b58f498335ca +Foldable("", md""" -# ╔═╡ 7d48dff8-9b53-462a-bbf4-4a9cd4d51be9 -md""" +Restaurants' **Success** depends on *Good Food* and/or *Good Location* + +```math +\large +\text{Good Location}\, \longrightarrow \text{Restaurant's Survival} \longleftarrow \text{Good Food} +``` -## Summary +* both good food and good location are desired but relatively rare; even rarer to have both -* Two probability rules: sum and chain rule +* one **explains away** the other +""") +# ╔═╡ 0b374958-5ee4-4c34-b653-28a115f07e6a +TwoColumn(md""" -* To form a probabilistic model, it is easier to think generatively via chain rule +\ -$$P(H,\mathcal{D}) = P(H) P(\mathcal{D}|H)$$ +!!! example "Example (skills vs attractiveness)" + Why **attractive** actors/actress are usually **not very skilled** ? + or the opposite: **skilled** actors/actress usually not necessarily **attractive** +""", html"""
""") -* Bayes' rule provides a way to do reverse inference +# ╔═╡ 3b488fba-d5df-4c8e-9d68-03c958a8244c +Foldable("", md""" +An actor's **Success** depends on *Good Looking* and/or *Good Skills* -* Probabilistic graphical model is a useful modelling tool +```math +\large +\text{Good Looking}\, \longrightarrow \text{Actor's Success} \longleftarrow \text{Good Skills} +``` -""" +* both attractiveness and good skills are desired but relatively rare; even rarer to have both + +* one **explains away** the other +""") # ╔═╡ 61e3f627-5752-48e3-9100-3c96575f1805 md""" @@ -1643,6 +1957,7 @@ plt=plot(plt1, plt2, layout=(1,2), size=(600,300)); # ╔═╡ 8eec2a38-c5fb-48c7-8801-81d6d4afb796 md""" +## !!! note "Question" @@ -3169,19 +3484,18 @@ version = "1.4.1+1" # ╟─8bf95702-90ac-4b3c-a027-e1b673359a60 # ╟─3a80d31d-9f32-48b1-b5fd-788b588d96cb # ╟─dede5ea1-c67d-4344-b6d0-c4a9b8d8dbeb -# ╟─93b5c93c-682a-49b4-8191-a82a22804a0d -# ╟─8a8eabbd-a0cd-47f1-a2b7-1e6c10f29c2b +# ╟─e7242619-19fc-461b-a5e0-fc50361d2565 # ╟─63b92973-1031-439c-aa68-60f00552ab18 # ╟─8f2452a3-79cc-4f22-90dc-82f88adc46be # ╟─8eec2a38-c5fb-48c7-8801-81d6d4afb796 # ╟─926be45c-84a4-4bb5-8cc0-56bdf74bc581 -# ╟─24f06a6c-f64f-488b-9fd0-dbbf24007212 -# ╟─4f0a3ee7-d2e9-4945-9491-e48475421574 +# ╟─9066781d-b542-4c95-8a5b-d244df217650 # ╟─c9b2fa82-841d-47cf-b7b4-23f8a86e60a7 # ╟─2bc778d0-6974-4a97-8769-3cb66100fd80 # ╟─2fba13a9-a0ab-44a6-ba4d-b828ebe96274 # ╟─db1f6632-f894-4ce7-a5b4-493158a13860 # ╟─f05dcb39-84c9-42e5-95f6-67238c574609 +# ╟─0cc7386d-4584-4a34-bbf7-546bf9ac1134 # ╟─b52911ff-886a-4113-85a5-af508dc0cb8e # ╟─34a4fdfa-df3f-426c-acbd-d18056246714 # ╟─910399dd-ebe1-447f-967f-7a38e4913b56 @@ -3197,8 +3511,10 @@ version = "1.4.1+1" # ╟─1e4db58a-e57d-457e-9bf4-20961a4775b1 # ╟─42466480-2d4d-4a62-be06-ede102d818f0 # ╟─d1e63621-5e4a-4f43-aa4f-a41f12fe632a -# ╟─16754b05-44c5-47b2-9b2e-89f74d5f59ea +# ╟─7750287e-96e3-4920-9e3e-0dd461e2f2ea # ╟─7416236c-5ff0-4eb8-b448-e50acb0c016b +# ╟─c2f8d8e7-16d5-46c5-a66d-664dbaeb4c91 +# ╟─be70c96c-685d-4136-8828-c8a35a5cbe0b # ╟─48484810-1d47-473d-beb3-972ca8b934d5 # ╟─559b0936-a051-4f2e-b0ca-81becd631bce # ╟─1a930c29-0b6e-405b-9ada-08468c69173c @@ -3206,7 +3522,13 @@ version = "1.4.1+1" # ╟─05e3c6d0-f59b-4e1e-b631-11eb8f8b0945 # ╟─32bd86a4-0396-47f5-9025-6df83268850e # ╟─e12f0e44-2b7d-4075-9986-6322fb1498c4 -# ╟─2229e882-e2b6-4de3-897f-7a75d69c24ec +# ╟─01140639-6cda-49e0-a9c9-8b7d9169a52d +# ╟─f60b1407-df78-41b5-959c-742910364fa6 +# ╟─058f1e9b-6e77-4cbc-9338-3de93bc6e5c3 +# ╟─01231683-61fc-4f36-b004-c005723c53e0 +# ╟─8b8ac80b-daa5-4dea-b847-e0e660c1c0c6 +# ╟─cf969c4c-909d-4dc7-ad95-74352f987c1f +# ╟─571a31d9-77fe-4457-827a-6a746a529a4a # ╟─a602e848-8438-4a41-ab76-ec3f6497de3e # ╟─eca7d42f-a038-40c9-b584-a6a020ffa9da # ╟─fea3395d-250d-406c-9a8c-646f5c48ab12 @@ -3238,10 +3560,17 @@ version = "1.4.1+1" # ╟─7652aa5c-47c7-4263-a673-00f073f91018 # ╟─0198a401-ed47-4f5c-8aca-441cccff472b # ╟─6db0a9fa-0137-413e-b122-24a51c4319e0 +# ╟─776649a0-d8ef-4fcb-a9ea-69e956dbd637 +# ╟─0c78067b-e2cc-4866-b12e-abebe09cf564 +# ╟─ef748d34-071b-4e59-a96c-2d606d483ee9 +# ╟─3caf5284-3c82-4fc9-a705-1215b9881df9 # ╟─8afac55e-44f9-4127-b16a-969560307f90 # ╟─5bcfc1a8-99d4-4b48-b45c-4c8d0c5acae4 # ╟─6dc34d66-366f-4e1a-9b73-a74c07e58feb # ╟─12751639-7cdc-4e39-ba72-30ee2fe2cd49 +# ╟─7ac35147-4c3d-421e-ba42-6e6e1325584f +# ╟─c31706a2-cb86-4fe2-9d64-a1d09490792c +# ╟─393e9b36-d85e-440b-a113-2d748c3ac03b # ╟─532a9f66-b04a-446a-becf-d74759bcf750 # ╟─79f88e1e-9eca-49ed-84e1-3dac5ef1819c # ╟─9da0bf21-3d2f-4df0-a8b3-3891dd665c7f @@ -3256,37 +3585,38 @@ version = "1.4.1+1" # ╟─2f5af892-249f-40c8-a2a2-0bc7acc7f000 # ╟─7b9577e1-e1ce-44a9-9737-a60061ad0dc7 # ╟─41ee5127-4390-4fb8-b41f-9856346877cf -# ╟─eda02250-b88d-45a1-9430-114e3d60f72a -# ╟─7aea40a5-be9f-4ac0-94e7-b692985ea35d +# ╟─6699af84-5adb-44ce-89c3-03cde2fac07b # ╟─be4b66ed-dc94-4450-97dd-a57175913b20 # ╟─c7217173-3b9e-439a-ad59-6fdea81bb12c # ╟─4c4f8078-b3ed-479f-9c0b-35c9e81fe44d # ╟─33a8d7e1-cb9b-48c8-9b63-7a817c0497b2 -# ╟─10ad19a7-f1ba-4f3c-ada7-8ce1391ef151 -# ╟─884b5699-08fb-4aba-abf8-2628d71818ce -# ╟─71cdf6a5-90bc-4a4d-80f7-214406f22019 +# ╟─01794f0a-0c40-43fc-9621-32b46099d6cf +# ╟─15f2ebfd-cced-48a3-a13c-5ed166111022 # ╟─b96cc13e-5fd9-4fa1-a9bc-4ea7b22c07a3 # ╟─a94dac61-af9b-4820-bc2a-812a282a5603 -# ╟─8044aa77-b299-4874-b90b-ee36fb8d374e -# ╟─63c2da6b-4f7a-40dd-95fe-17aead4134a6 -# ╟─cc8e87da-216c-40bf-9fc1-0e8c929ad7a1 -# ╟─15cf6021-b172-41ae-9392-0838c39d551b -# ╟─588eec3d-fc0b-4384-ac9b-bb8d8816b184 -# ╟─450de0ac-e2a9-4e0a-b542-72534c751fa2 -# ╟─b96539d8-5ca9-4a04-84bf-660db2a4f609 -# ╟─c6653de5-1542-44a6-9fcb-2e9bd091f2bb -# ╟─9fafd041-2d42-4bf1-a17a-c31deb23d97d -# ╟─615b57fb-0ad5-4175-bc71-000aaae89b65 -# ╟─83e1f7fa-c711-4db6-a2be-6914a4e7e8a2 -# ╟─d0868210-baa4-4bdc-8d99-f318b6b8f6df -# ╟─3db2f0f1-d8b1-4483-af5e-71889be766d9 -# ╟─94767935-df48-4466-9454-aa000217ddda -# ╟─41f94bdc-5a92-4bc7-accb-f927b02e4032 -# ╟─fbe1bc73-f1c8-484a-8c5f-02781b3f871f -# ╟─99b465f0-63d6-4daf-bcfd-4704888d9e72 -# ╟─583812b3-7517-4177-b1c7-7cd5b2f1908b -# ╟─2e2f0b68-b8b1-41fc-981d-46e43037ac3a -# ╟─7d48dff8-9b53-462a-bbf4-4a9cd4d51be9 +# ╟─17c47cc4-63ab-40ec-86af-b17d0b2d6b5f +# ╟─fb5bd9c6-6e5c-49d9-9118-9c6de78fa6f7 +# ╟─2bb41562-6011-46a8-a753-b91315911577 +# ╟─6f4acf7a-4978-465f-a50f-25476cacd54b +# ╟─49a22f7e-b7a2-45dd-a44b-c176da48fd28 +# ╟─7f201df4-9ddb-4565-8b22-aa34ef8a9950 +# ╟─7c27ad55-a49e-4b56-b41e-1a64b99f3688 +# ╟─108d0def-f048-4010-aba9-3f4385875540 +# ╟─e7f3feae-9c29-4e9f-81b9-28895f562d59 +# ╟─e5f08691-e099-4cee-9bbb-b893b512f4bc +# ╟─c5b2a9f7-9261-444c-812a-64efa3c500ef +# ╟─a3fe5cfe-6f41-432f-bb60-f08446231fbf +# ╟─95319916-264a-4893-854a-4d02543fc6c1 +# ╟─4f90a063-7aaf-4287-8616-301a7636665d +# ╟─7f30f317-82b9-45f2-a6a7-6bcd785b825b +# ╟─67117028-356f-4ccb-86cd-25b791e76722 +# ╟─b67b29a9-aa19-4bc2-ae60-26ca2453a905 +# ╟─82bd4b52-34a6-44ea-8a18-2e4186cf2210 +# ╟─dd5a7d7b-e59a-4899-8517-d8168a4639ca +# ╟─608eac2e-544b-44e0-8162-c777123d3e04 +# ╟─c8c61f65-49f3-489d-aff8-b58f498335ca +# ╟─0b374958-5ee4-4c34-b653-28a115f07e6a +# ╟─3b488fba-d5df-4c8e-9d68-03c958a8244c # ╟─61e3f627-5752-48e3-9100-3c96575f1805 # ╟─c0e7844b-111f-469a-9d6e-33751a441adb # ╟─94ef0651-e697-4806-868a-bce137d8437e diff --git a/lectures/lecture_logreg.jl b/lectures/lecture_logreg.jl deleted file mode 100644 index 7f9dfe4..0000000 --- a/lectures/lecture_logreg.jl +++ /dev/null @@ -1,2226 +0,0 @@ -### A Pluto.jl notebook ### -# v0.19.22 - -using Markdown -using InteractiveUtils - -# ╔═╡ bce03358-19c9-11ed-31d9-5b0929af50b6 -begin - using PlutoUI - using StatsPlots - using Turing - using DataFrames - using StatsFuns: logistic - using Random - using LaTeXStrings - using Logging; Logging.disable_logging(Logging.Warn); -end; - -# ╔═╡ 74a2053f-ef53-41df-8afc-997c166e6f67 -begin - using RDatasets - # Import the "Default" dataset. - default_df = dataset("ISLR", "Default"); - # Show the first six rows of the dataset. - first(default_df, 6) -end - -# ╔═╡ 920b9b1f-b56d-465c-bce2-e08530ec4bb4 -using StatsBase - -# ╔═╡ 0a8fff98-24fd-49d6-a6b2-061e6350350b -TableOfContents() - -# ╔═╡ 9810605e-586b-4f38-a43c-4240cb91e154 -md""" - -# Bayesian logistic regression 2 - -**Bayesian logistic regression with Turing** - - -$(Resource("https://www.st-andrews.ac.uk/assets/university/brand/logos/standard-vertical-black.png", :width=>130, :align=>"right")) - -Lei Fang (lf28@st-andrews.ac.uk) - -*School of Computer Science* - -*University of St Andrews, UK* - -*April 2023* - -""" - -# ╔═╡ ada4ad28-358e-4144-9d5c-f3b1d27deff1 -md""" -## A toy dataset - -""" - -# ╔═╡ 7a189076-f53f-48ed-ace2-ffbcc287ff6f -begin - D1 = [ - 7 4; - 5 6; - 8 6; - 9.5 5; - 9 7 - ] - - D2 = [ - 2 3; - 3 2; - 3 6; - 5.5 4.5; - 5 3; - ] - - D = [D1; D2] - targets = [ones(5); zeros(5)] - AB = [1.5 8; 10 1.9] -end; - -# ╔═╡ 1068259e-a7f6-4a56-b526-59e080c54d27 -begin - using GLM - glm_fit = glm([ones(size(D)[1]) D], targets, Bernoulli(), LogitLink()) -end - -# ╔═╡ d12ed6f0-b5c7-4492-9cd3-7ac2a6afafcd -md""" - -## Frequentist MLE -""" - -# ╔═╡ 60a5cad4-c676-4334-8cbe-47877a68943f -md""" -We have plotted the fit model below. It can be observed the fitted regression function, defined as - -```math -p(y_n=1|\mathbf{x}_n, \hat\beta_0, \hat{\boldsymbol{\beta}}_1) = \hat{\sigma}(\mu_n)= \frac{1}{1+\exp(- \hat\beta_0 - \mathbf{x}_n^\top\hat{\boldsymbol{\beta}}_1)} -``` - -is a very sharp S-shaped surface valued between 0 and 1 -""" - -# ╔═╡ e2918ef9-7f86-4d3b-93cb-65b8b5f48987 -md""" - -## Bayesian logistic regression - - - -!!! infor "Bayesian logistic regression" - ```math - \begin{align} - \text{Priors: }\;\;\;\;\;\;\beta_0 &\sim \mathcal{N}(m_0^{\beta_0}, v_0^{\beta_0})\\ - \boldsymbol{\beta}_1 &\sim \mathcal{N}(\mathbf{m}_0^{{\beta}_1}, \mathbf{V}_0^{{\beta}_1})\\ - \text{Likelihood: }\;\;\text{for } n &= 1,2,\ldots, N:\\ - \mu_n &=\beta_0 + \boldsymbol{\beta}_1^\top\mathbf{x}_n \\ - \sigma_n &= \texttt{logistic}(\mu_n)\\ - y_n &\sim \texttt{Bernoulli}(\sigma_n). - \end{align} - ``` -""" - -# ╔═╡ 1f27c1d3-a4ee-4278-8140-d17d5c0d31c9 -Resource("https://leo.host.cs.st-andrews.ac.uk/figs/bayes/logis_bayes.png", :height=>240, :align=>"left") - -# ╔═╡ 8b73706e-fe00-4489-8095-b3ec4528c58b -md""" - -## With `Turing.jl` - -Model translation is straightforward. -""" - -# ╔═╡ 6d2af85d-8c9e-4da7-8a38-6c0df102f954 -begin - @model function bayesian_logistic_reg(X, y; v₀=10^2, V₀ = 10^2) - # priors - β₀ ~ Normal(0, sqrt(v₀)) - nfeatures = size(X)[2] - β ~ MvNormal(zeros(nfeatures), sqrt(V₀)) - # Likelihood - μs = β₀ .+ X * β - # logistic transformations - σs = logistic.(μs) - for i in eachindex(y) - y[i] ~ Bernoulli(σs[i]) - end - return (; σs) - end - -end; - -# ╔═╡ 8a8d8eb9-9cea-43f0-9607-9d3ca908c370 -md"Next, we use `Turing` to do Bayesian logistic regression analysis on the toy data example introduced earlier." - -# ╔═╡ 41a3984c-aee4-494f-8ba2-69c0274185ed -chain_logreg_sim_data = let - sample( - bayesian_logistic_reg(D, targets; v₀=5^2), - NUTS(), - MCMCThreads(), - 2000, - 3 - ) -end; - -# ╔═╡ e1e43074-9e5f-4516-bf0d-0ce4209afb6c -summarystats(chain_logreg_sim_data) - -# ╔═╡ 15b2d945-4e78-4c41-9712-5d623b15914e -describe(chain_logreg_sim_data)[2] - -# ╔═╡ 5e5fdd62-ac1c-4ef6-a5a4-64ffe441b496 -plot(chain_logreg_sim_data) - -# ╔═╡ bdcc9726-d1fd-4d34-987e-925e1a96e58f -md""" - -## Bayesian prediction -""" - -# ╔═╡ fd9d6126-d764-40f5-9a4d-fda49a0962a9 -md""" - -To make a prediction at a new input location ``\mathbf{x}_\ast``, we can use - -* either `predict()` - -* or `generated_quantities()` - -The procedure - -* starts with initialising a `Turing` model with `missing` prediction targets ``\mathbf{y}_\ast`` - -* then use either `predict()` or `generated_quantities()` to generate samples -""" - -# ╔═╡ bea7b8a5-f20a-4de1-8358-8697dc525aa3 -md""" -**Demonstration** -""" - -# ╔═╡ 69258680-fc21-40ca-998a-1a81279342ea -begin - # randomly generated test dataset - N_test = 5 - D_test = rand(N_test, 2) * 10 - pred_model = bayesian_logistic_reg(D_test, Vector{Union{Missing, Float64}}(undef, size(D_test)[1])) - y_preds = predict(pred_model, chain_logreg_sim_data) -end; - -# ╔═╡ be4d04ff-9ae8-40c6-ae7b-9ec29cd23b43 -mixeddensity(y_preds[:,1:1,:], size(100,100)); - -# ╔═╡ a84e1f2f-fdde-432f-89d3-265480ef9f53 -md""" -## Prediction comparison - -""" - -# ╔═╡ 44ccb675-a657-4fe8-934f-ddf29cb78f74 -md""" - -In this case, what we are interested in is the predictive distribution on a new input location ``\mathbf{x}_\ast``: - -```math -p(y_\ast=1|\mathbf{x}_\ast, \mathcal{D}). -``` -The contour plot of the Bayesian predictive distribution is listed below. - - -""" - -# ╔═╡ 68b88445-fb94-4d26-a723-234b3045ca54 -begin - p1_ = Plots.plot(D1[:,1], D1[:,2], xlabel=L"$x_1$", ylabel=L"$x_2$", label="class 1", seriestype=:scatter, markersize = 4, legend = :outerright, title="Binary classification", xlim=[0, 11], ylim=[0, 9.5]) - Plots.plot!(p1_, D2[:,1], D2[:,2], label="class 2", seriestype=:scatter, markersize = 4) - Plots.plot!(p1_, AB[1:1, 1], AB[1:1, 2], label="", seriestype=:scatter, markersize = 3, markershape =:x, annotate = [(AB[1,1]-0.8, AB[1,2], "A"), (AB[2,1]-0.8, AB[2,2], "B")], markerstrokewidth = 3, markercolor=:red) - Plots.plot!(p1_, AB[2:2, 1], AB[2:2,2], seriestype=:scatter, label="", markersize = 3, markershape =:x, markerstrokewidth = 3, markercolor=:red) - # Plots.plot!(size=(500,500)) -end; - -# ╔═╡ 39c43d27-6806-4fb6-a0e8-5f41ae0ee94e -md""" -# A real-world example - - -The data used here is described in the book [Introduction to Statistical Learning](https://hastie.su.domains/ISLR2/ISLRv2_website.pdf) - -* the dataset (referred to as `Default`) is about customer default records for a credit card company -""" - -# ╔═╡ 436f0628-ee73-4045-82f3-6d785b5ba51f -md""" - -## Step 1: import the dataset -""" - -# ╔═╡ e47c4ad6-17e4-4265-bee2-738b81e61696 -md""" - -## Step 2: pre-process the dataset -""" - -# ╔═╡ 8b56260f-2e42-4a89-a1c0-bf856b9f75d3 -md""" -By checking the raw data, we find the `Default` and `Student` variables are of `string` type. We need to first encode them into binary data types. -""" - -# ╔═╡ 40db5082-3558-4fd4-ab47-1127f6d67e38 -begin - # transform the non-numerical features to numerical - default_df[!, :DefaultNum] = map((x) -> x.Default == "Yes" ? true : false, eachrow(default_df)) - default_df[!, :StudentNum] = map((x) -> x.Student == "Yes" ? true : false, eachrow(default_df)) -end; - -# ╔═╡ fbcdbc4e-f55b-4bf8-a10d-42f2627dbfdb -describe(default_df) - -# ╔═╡ 8c73a18f-55a1-4740-8795-5bbb6ff425de -md" - - -The two numerical features `Balance` and `Income` are with very different mean and value ranges. - - -It is generally a good idea to - -* standardize them: zero mean and unit variance - - -By standardising the features - -* the prior's variances, *i.e. ``\mathbf{V}_0^{\boldsymbol{\beta}}``*, are also easier to be specified, since all the features are of the same scale. -" - -# ╔═╡ 0ca3c752-627f-40ce-ac6c-d10fc90d4663 -begin - XX, yy = Matrix(default_df[!, [:Balance, :Income, :StudentNum]]), default_df[!, :DefaultNum] - feature_scalar = fit(ZScoreTransform, XX[:, 1:2], dims=1) - XX[:, 1:2] .= StatsBase.transform(feature_scalar, XX[:, 1:2]) -end; - -# ╔═╡ a84de1b9-3c27-4b63-822f-f454b7d3098b -md""" - -## Step 3: making inference with `Turing` -""" - -# ╔═╡ bd11a4c4-1f2b-4d3c-8e3f-8382dd9f3b3c -md"Use `Turing` to do the inference." - -# ╔═╡ 244ba3cf-63ba-4501-8e88-f71c95c15a7c -chain_default = let - chain = sample( - bayesian_logistic_reg(XX, yy; v₀=1, V₀ =1), - NUTS(), - MCMCThreads(), - 2000, - 3 - ) - replacenames(chain, Dict(["β[1]" => "Balance", "β[2]" => "Income", "β[3]" => "Student"])) -end; - -# ╔═╡ c83f3735-6aba-4183-b010-5f21cd2ff968 -describe(chain_default)[1] - -# ╔═╡ 53c5b238-61fd-4ef3-9194-b076b3434b16 -describe(chain_default)[2] - -# ╔═╡ 0c34decf-ee35-4f9d-bf83-cfff75f8ff3b -md"The Bayesian's credible interval tells us - -* the intercept, `Balance`, and `Student` are significant predictors (their 95% credible intervals are either strictly positive or negative) - -* but `Income` factor's impact on predicting the log-ratio of `Default` is not statistically significant, which is in agreement with the Frequentist's analysis. -" - -# ╔═╡ f092a42e-16e9-45ac-88cd-133a92402ff6 -plot(chain_default) - -# ╔═╡ 59245146-ef30-4df1-9ac3-776871e5d062 -md""" -## Appendix - -""" - -# ╔═╡ ea897f9a-89ff-421c-989a-b5f395cec705 -begin - prediction(ws, x1, x2) = mean(logistic.(ws * [1.0, x1, x2])) -end - -# ╔═╡ 78d6fe62-432b-49f3-b38f-0f6f6f5a04ed -chain_array = let - model_ex1 = bayesian_logistic_reg(D, targets) - Random.seed!(100) - chain=sample(model_ex1, NUTS(), 1000, discard_initial=100, thinning=10) - Array(chain) -end; - -# ╔═╡ 3e45f16f-ea6c-4960-98b7-1e642fb919c1 -p_bayes_1 = let - p_bayes_1 = Plots.contour(2:0.1:9, 2:0.1:8, (x, y) -> prediction(chain_array, x, y), fill=false, connectgaps=true, levels=8, line_smoothing = 0.85, legend=:left, title="Bayesian Prediction", c=:roma, ratio=1.0, xlabel=L"x_1", ylabel=L"$x_2") - Plots.plot!(p_bayes_1, D1[:, 1], D1[:,2], seriestype=:scatter, markersize = 3, markercolor=1, label="class 1") - Plots.plot!(p_bayes_1, D2[:, 1], D2[:,2], seriestype=:scatter, markersize = 3, markercolor=2, label="class 2") - Plots.plot!(p_bayes_1, AB[1:2, 1], AB[1:2, 2], label="", seriestype=:scatter, markersize = 2, markershape =:star4, annotate = [(AB[1,1], AB[1,2], text("A", :top,:red, 9)), (AB[2,1], AB[2,2], text("B", :top, :red, 9))], markerstrokewidth = 1, markercolor=:red) - markers = [2, 5, 6, 9] - for m in markers - p0 = round(prediction(chain_array, D[m, 1], D[m, 2]), digits=2) - annotate!(D[m, 1], D[m,2], text(L"\hat{\sigma}="*"$(p0)", :bottom, 10)) - end - - for i in 1:2 - p0 = round(prediction(chain_array, AB[i, 1], AB[i, 2]), digits=2) - annotate!(AB[i, 1], AB[i,2], text(L"\hat{\sigma}="*"$(p0)", :bottom, :red, 10)) - end - p_bayes_1 -end - -# ╔═╡ 2a632fe1-698f-4265-8509-453ee7827ae6 -let - p_bayes_pred = Plots.plot(D1[:, 1], D1[:,2], seriestype=:scatter, markersize = 5, markercolor=1, label="class 1", legend=:topright, xlim=[-1, 11], ylim=[-1,11]) - Plots.plot!(p_bayes_pred, D2[:, 1], D2[:,2], seriestype=:scatter, markersize = 5, markercolor=2, label="class 2") - mean_pred = mean(chain_array, dims=1)[:] - - b, k = -chain_array[1, 1:2] ./ chain_array[1, 3] - plot!(-2:12, (x) -> k*x+b, lw=0.1, lc=:gray, label=L"\sigma^{(r)}\sim p(\sigma|\mathcal{D})") - for i in 2:60 - b, k = -chain_array[i, 1:2] ./ chain_array[i, 3] - plot!(-2:12, (x) -> k*x+b, lw=0.1, lc=:gray, label="") - end - b, k = - mean_pred[1:2] ./ mean_pred[3] - plot!(-2:12, (x) -> k*x+b, lw=3, lc=3, label=L"\texttt{mean}(\sigma^{(r)})") - p_bayes_pred - -end - -# ╔═╡ c92f0602-9a6c-4e2c-8a28-2a870d332fe4 -begin - p1 = Plots.plot(D1[:,1], D1[:,2], xlabel=L"$x_1$", ylabel=L"$x_2$", label="class 1", seriestype=:scatter, markersize = 4, legend = :bottomright, title="Binary classification", ratio =1.0) - Plots.plot!(p1, D2[:,1], D2[:,2], label="class 2", seriestype=:scatter, markersize = 4) - # plot!((x)-> -x, lw=4, lc=:gray, label="Decision boundary", ls=:dash, legend=:outerright) -end; - -# ╔═╡ 82fc962c-a172-47ef-a86c-fa49bace3567 -p_freq_1= let - freq_coef = coef(glm_fit)' - # prediction(ws, x1, x2) = logistic(ws * [1.0, x1, x2]) - p_freq_1 = Plots.contour(2:0.1:9, 2:0.1:8, (x, y) -> prediction(freq_coef, x, y), fill=false, connectgaps=true, levels=8, line_smoothing = 0.85, legend=:left, title="Frequentist Prediction", c=:roma, ratio=1.0, xlabel=L"x_1", ylabel=L"$x_2") - Plots.plot!(p_freq_1, D1[:, 1], D1[:,2], seriestype=:scatter, markersize = 3, markercolor=1, label="class 1") - Plots.plot!(p_freq_1, D2[:, 1], D2[:,2], seriestype=:scatter, markersize = 3, markercolor=2, label="class 2") - Plots.plot!(p_freq_1, AB[1:2, 1], AB[1:2, 2], label="", seriestype=:scatter, markersize = 2, markershape =:star4, annotate = [(AB[1,1], AB[1,2], text("A", :top,:red, 9)), (AB[2,1], AB[2,2], text("B", :top, :red, 9))], markerstrokewidth = 1, markercolor=:red) - markers = [2, 5, 6, 9] - for m in markers - p0 = round(prediction(freq_coef, D[m, 1], D[m, 2]), digits=2) - annotate!(D[m, 1], D[m,2], text(L"\hat{\sigma}="*"$(p0)", :bottom, 10)) - end - - for i in 1:2 - p0 = round(prediction(freq_coef, AB[i, 1], AB[i, 2]), digits=2) - annotate!(AB[i, 1], AB[i,2], text(L"\hat{\sigma}="*"$(p0)", :bottom, :red, 10)) - end - p_freq_1 -end; - -# ╔═╡ cd76fa94-d0d7-43bb-8221-2a4dafa8af53 -p_freq_1 - -# ╔═╡ 8a21c570-9bfe-4f66-9157-1b0dc4028ef4 -p_freq_surface_1 = let - freq_coef = coef(glm_fit)' - Plots.surface(0:0.1:10, 0:0.1:10, (x, y) -> prediction(freq_coef, x, y), legend=:best, title="Frequentist Prediction", c=:roma, ratio=1.0, xlabel=L"x_1", ylabel=L"$x_2", zlabel=L"p(y=1|\ldots)") -end; - -# ╔═╡ 0c70c6be-518b-4ba4-bd69-cc34d2217077 -p_freq_surface_1 - -# ╔═╡ f9b3916a-d4b2-4e6b-9a7d-be077fd45ac0 -p_bayes_surface_1 = let - Plots.surface(0:0.1:10, 0:0.1:10, (x, y) -> prediction(chain_array, x, y), legend=:best, title="Bayesian Prediction", c=:roma, ratio=1.0, xlabel=L"x_1", ylabel=L"$x_2", zlabel=L"p(y=1|\ldots)") -end; - -# ╔═╡ 922704a0-b0c9-4fe0-a0fb-3ab58a7f01d9 -plot(p_freq_surface_1, p_bayes_surface_1, size=(800,400)) - -# ╔═╡ 00000000-0000-0000-0000-000000000001 -PLUTO_PROJECT_TOML_CONTENTS = """ -[deps] -DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -GLM = "38e38edf-8417-5370-95a0-9cbb8c7f171a" -LaTeXStrings = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -Logging = "56ddb016-857b-54e1-b83d-db4d58db5568" -PlutoUI = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -RDatasets = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -Random = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" -StatsBase = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -StatsFuns = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -StatsPlots = "f3b207a7-027a-5e70-b257-86293d7955fd" -Turing = "fce5fe82-541a-59a6-adf8-730c64b5f9a0" - -[compat] -DataFrames = "~1.3.4" -GLM = "~1.8.0" -LaTeXStrings = "~1.3.0" -PlutoUI = "~0.7.39" -RDatasets = "~0.7.7" -StatsBase = "~0.33.21" -StatsFuns = "~1.0.1" -StatsPlots = "~0.15.1" -Turing = "~0.21.9" -""" - -# ╔═╡ 00000000-0000-0000-0000-000000000002 -PLUTO_MANIFEST_TOML_CONTENTS = """ -# This file is machine-generated - editing it directly is not advised - -julia_version = "1.8.5" -manifest_format = "2.0" -project_hash = "50f4d97c12c5e4fcbfdd0d0aab004e966888a69b" - -[[deps.AbstractFFTs]] -deps = ["ChainRulesCore", "LinearAlgebra"] -git-tree-sha1 = "69f7020bd72f069c219b5e8c236c1fa90d2cb409" -uuid = "621f4979-c628-5d54-868e-fcf4e3e8185c" -version = "1.2.1" - -[[deps.AbstractMCMC]] -deps = ["BangBang", "ConsoleProgressMonitor", "Distributed", "Logging", "LoggingExtras", "ProgressLogging", "Random", "StatsBase", "TerminalLoggers", "Transducers"] -git-tree-sha1 = "5c26c7759412ffcaf0dd6e3172e55d783dd7610b" -uuid = "80f14c24-f653-4e6a-9b94-39d6b0f70001" -version = "4.1.3" - -[[deps.AbstractPPL]] -deps = ["AbstractMCMC", "DensityInterface", "Setfield", "SparseArrays"] -git-tree-sha1 = "6320752437e9fbf49639a410017d862ad64415a5" -uuid = "7a57a42e-76ec-4ea3-a279-07e840d6d9cf" -version = "0.5.2" - -[[deps.AbstractPlutoDingetjes]] -deps = ["Pkg"] -git-tree-sha1 = "8eaf9f1b4921132a4cff3f36a1d9ba923b14a481" -uuid = "6e696c72-6542-2067-7265-42206c756150" -version = "1.1.4" - -[[deps.AbstractTrees]] -git-tree-sha1 = "03e0550477d86222521d254b741d470ba17ea0b5" -uuid = "1520ce14-60c1-5f80-bbc7-55ef81b5835c" -version = "0.3.4" - -[[deps.Adapt]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "195c5505521008abea5aee4f96930717958eac6f" -uuid = "79e6a3ab-5dfb-504d-930d-738a2a938a0e" -version = "3.4.0" - -[[deps.AdvancedHMC]] -deps = ["AbstractMCMC", "ArgCheck", "DocStringExtensions", "InplaceOps", "LinearAlgebra", "ProgressMeter", "Random", "Requires", "Setfield", "Statistics", "StatsBase", "StatsFuns", "UnPack"] -git-tree-sha1 = "345effa84030f273ee86fcdd706d8484ce9a1a3c" -uuid = "0bf59076-c3b1-5ca4-86bd-e02cd72cde3d" -version = "0.3.5" - -[[deps.AdvancedMH]] -deps = ["AbstractMCMC", "Distributions", "Random", "Requires"] -git-tree-sha1 = "d7a7dabeaef34e5106cdf6c2ac956e9e3f97f666" -uuid = "5b7e9947-ddc0-4b3f-9b55-0d8042f74170" -version = "0.6.8" - -[[deps.AdvancedPS]] -deps = ["AbstractMCMC", "Distributions", "Libtask", "Random", "StatsFuns"] -git-tree-sha1 = "9ff1247be1e2aa2e740e84e8c18652bd9d55df22" -uuid = "576499cb-2369-40b2-a588-c64705576edc" -version = "0.3.8" - -[[deps.AdvancedVI]] -deps = ["Bijectors", "Distributions", "DistributionsAD", "DocStringExtensions", "ForwardDiff", "LinearAlgebra", "ProgressMeter", "Random", "Requires", "StatsBase", "StatsFuns", "Tracker"] -git-tree-sha1 = "e743af305716a527cdb3a67b31a33a7c3832c41f" -uuid = "b5ca4192-6429-45e5-a2d9-87aec30a685c" -version = "0.1.5" - -[[deps.ArgCheck]] -git-tree-sha1 = "a3a402a35a2f7e0b87828ccabbd5ebfbebe356b4" -uuid = "dce04be8-c92d-5529-be00-80e4d2c0e197" -version = "2.3.0" - -[[deps.ArgTools]] -uuid = "0dad84c5-d112-42e6-8d28-ef12dabb789f" -version = "1.1.1" - -[[deps.Arpack]] -deps = ["Arpack_jll", "Libdl", "LinearAlgebra", "Logging"] -git-tree-sha1 = "91ca22c4b8437da89b030f08d71db55a379ce958" -uuid = "7d9fca2a-8960-54d3-9f78-7d1dccf2cb97" -version = "0.5.3" - -[[deps.Arpack_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "OpenBLAS_jll", "Pkg"] -git-tree-sha1 = "5ba6c757e8feccf03a1554dfaf3e26b3cfc7fd5e" -uuid = "68821587-b530-5797-8361-c406ea357684" -version = "3.5.1+1" - -[[deps.ArrayInterfaceCore]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "40debc9f72d0511e12d817c7ca06a721b6423ba3" -uuid = "30b0a656-2188-435a-8636-2ec0e6a096e2" -version = "0.1.17" - -[[deps.ArrayInterfaceStaticArraysCore]] -deps = ["Adapt", "ArrayInterfaceCore", "LinearAlgebra", "StaticArraysCore"] -git-tree-sha1 = "a1e2cf6ced6505cbad2490532388683f1e88c3ed" -uuid = "dd5226c6-a4d4-4bc7-8575-46859f9c95b9" -version = "0.1.0" - -[[deps.Artifacts]] -uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" - -[[deps.AxisAlgorithms]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "WoodburyMatrices"] -git-tree-sha1 = "66771c8d21c8ff5e3a93379480a2307ac36863f7" -uuid = "13072b0f-2c55-5437-9ae7-d433b7a33950" -version = "1.0.1" - -[[deps.AxisArrays]] -deps = ["Dates", "IntervalSets", "IterTools", "RangeArrays"] -git-tree-sha1 = "1dd4d9f5beebac0c03446918741b1a03dc5e5788" -uuid = "39de3d68-74b9-583c-8d2d-e117c070f3a9" -version = "0.4.6" - -[[deps.BangBang]] -deps = ["Compat", "ConstructionBase", "Future", "InitialValues", "LinearAlgebra", "Requires", "Setfield", "Tables", "ZygoteRules"] -git-tree-sha1 = "b15a6bc52594f5e4a3b825858d1089618871bf9d" -uuid = "198e06fe-97b7-11e9-32a5-e1d131e6ad66" -version = "0.3.36" - -[[deps.Base64]] -uuid = "2a0f44e3-6c83-55bd-87e4-b1978d98bd5f" - -[[deps.Baselet]] -git-tree-sha1 = "aebf55e6d7795e02ca500a689d326ac979aaf89e" -uuid = "9718e550-a3fa-408a-8086-8db961cd8217" -version = "0.1.1" - -[[deps.Bijectors]] -deps = ["ArgCheck", "ChainRulesCore", "ChangesOfVariables", "Compat", "Distributions", "Functors", "InverseFunctions", "IrrationalConstants", "LinearAlgebra", "LogExpFunctions", "MappedArrays", "Random", "Reexport", "Requires", "Roots", "SparseArrays", "Statistics"] -git-tree-sha1 = "875f3845e1256ee1d9e0c8ca3993e709b32c0ed1" -uuid = "76274a88-744f-5084-9051-94815aaf08c4" -version = "0.10.3" - -[[deps.Bzip2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "19a35467a82e236ff51bc17a3a44b69ef35185a2" -uuid = "6e34b625-4abd-537c-b88f-471c36dfa7a0" -version = "1.0.8+0" - -[[deps.CSV]] -deps = ["CodecZlib", "Dates", "FilePathsBase", "InlineStrings", "Mmap", "Parsers", "PooledArrays", "SentinelArrays", "Tables", "Unicode", "WeakRefStrings"] -git-tree-sha1 = "873fb188a4b9d76549b81465b1f75c82aaf59238" -uuid = "336ed68f-0bac-5ca0-87d4-7b16caf5d00b" -version = "0.10.4" - -[[deps.Cairo_jll]] -deps = ["Artifacts", "Bzip2_jll", "CompilerSupportLibraries_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "JLLWrappers", "LZO_jll", "Libdl", "Pixman_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "4b859a208b2397a7a623a03449e4636bdb17bcf2" -uuid = "83423d85-b0ee-5818-9007-b63ccbeb887a" -version = "1.16.1+1" - -[[deps.Calculus]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f641eb0a4f00c343bbc32346e1217b86f3ce9dad" -uuid = "49dc2e85-a5d0-5ad3-a950-438e2897f1b9" -version = "0.5.1" - -[[deps.CategoricalArrays]] -deps = ["DataAPI", "Future", "Missings", "Printf", "Requires", "Statistics", "Unicode"] -git-tree-sha1 = "5f5a975d996026a8dd877c35fe26a7b8179c02ba" -uuid = "324d7699-5711-5eae-9e2f-1d82baa6b597" -version = "0.10.6" - -[[deps.ChainRules]] -deps = ["ChainRulesCore", "Compat", "Distributed", "GPUArraysCore", "IrrationalConstants", "LinearAlgebra", "Random", "RealDot", "SparseArrays", "Statistics"] -git-tree-sha1 = "f9d6dd293ed05233d37a5644f880f5def9fdfae3" -uuid = "082447d4-558c-5d27-93f4-14fc19e9eca2" -version = "1.42.0" - -[[deps.ChainRulesCore]] -deps = ["Compat", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "80ca332f6dcb2508adba68f22f551adb2d00a624" -uuid = "d360d2e6-b24c-11e9-a2a3-2a2ae2dbcce4" -version = "1.15.3" - -[[deps.ChangesOfVariables]] -deps = ["ChainRulesCore", "LinearAlgebra", "Test"] -git-tree-sha1 = "38f7a08f19d8810338d4f5085211c7dfa5d5bdd8" -uuid = "9e997f8a-9a97-42d5-a9f1-ce6bfc15e2c0" -version = "0.1.4" - -[[deps.Clustering]] -deps = ["Distances", "LinearAlgebra", "NearestNeighbors", "Printf", "SparseArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "75479b7df4167267d75294d14b58244695beb2ac" -uuid = "aaaa29a8-35af-508c-8bc3-b662a17a0fe5" -version = "0.14.2" - -[[deps.CodecZlib]] -deps = ["TranscodingStreams", "Zlib_jll"] -git-tree-sha1 = "ded953804d019afa9a3f98981d99b33e3db7b6da" -uuid = "944b1d66-785c-5afd-91f1-9de20f533193" -version = "0.7.0" - -[[deps.ColorSchemes]] -deps = ["ColorTypes", "ColorVectorSpace", "Colors", "FixedPointNumbers", "Random"] -git-tree-sha1 = "1fd869cc3875b57347f7027521f561cf46d1fcd8" -uuid = "35d6a980-a343-548e-a6ea-1d62b119f2f4" -version = "3.19.0" - -[[deps.ColorTypes]] -deps = ["FixedPointNumbers", "Random"] -git-tree-sha1 = "eb7f0f8307f71fac7c606984ea5fb2817275d6e4" -uuid = "3da002f7-5984-5a60-b8a6-cbb66c0b333f" -version = "0.11.4" - -[[deps.ColorVectorSpace]] -deps = ["ColorTypes", "FixedPointNumbers", "LinearAlgebra", "SpecialFunctions", "Statistics", "TensorCore"] -git-tree-sha1 = "d08c20eef1f2cbc6e60fd3612ac4340b89fea322" -uuid = "c3611d14-8923-5661-9e6a-0046d554d3a4" -version = "0.9.9" - -[[deps.Colors]] -deps = ["ColorTypes", "FixedPointNumbers", "Reexport"] -git-tree-sha1 = "417b0ed7b8b838aa6ca0a87aadf1bb9eb111ce40" -uuid = "5ae59095-9a9b-59fe-a467-6f913c188581" -version = "0.12.8" - -[[deps.Combinatorics]] -git-tree-sha1 = "08c8b6831dc00bfea825826be0bc8336fc369860" -uuid = "861a8166-3701-5b0c-9a16-15d98fcdc6aa" -version = "1.0.2" - -[[deps.CommonSolve]] -git-tree-sha1 = "332a332c97c7071600984b3c31d9067e1a4e6e25" -uuid = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2" -version = "0.2.1" - -[[deps.CommonSubexpressions]] -deps = ["MacroTools", "Test"] -git-tree-sha1 = "7b8a93dba8af7e3b42fecabf646260105ac373f7" -uuid = "bbf7d656-a473-5ed7-a52c-81e309532950" -version = "0.3.0" - -[[deps.Compat]] -deps = ["Base64", "Dates", "DelimitedFiles", "Distributed", "InteractiveUtils", "LibGit2", "Libdl", "LinearAlgebra", "Markdown", "Mmap", "Pkg", "Printf", "REPL", "Random", "SHA", "Serialization", "SharedArrays", "Sockets", "SparseArrays", "Statistics", "Test", "UUIDs", "Unicode"] -git-tree-sha1 = "9be8be1d8a6f44b96482c8af52238ea7987da3e3" -uuid = "34da2185-b29b-5c13-b0c7-acf172513d20" -version = "3.45.0" - -[[deps.CompilerSupportLibraries_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "e66e0078-7015-5450-92f7-15fbd957f2ae" -version = "1.0.1+0" - -[[deps.CompositionsBase]] -git-tree-sha1 = "455419f7e328a1a2493cabc6428d79e951349769" -uuid = "a33af91c-f02d-484b-be07-31d278c5ca2b" -version = "0.1.1" - -[[deps.ConsoleProgressMonitor]] -deps = ["Logging", "ProgressMeter"] -git-tree-sha1 = "3ab7b2136722890b9af903859afcf457fa3059e8" -uuid = "88cd18e8-d9cc-4ea6-8889-5259c0d15c8b" -version = "0.1.2" - -[[deps.ConstructionBase]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "59d00b3139a9de4eb961057eabb65ac6522be954" -uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.4.0" - -[[deps.Contour]] -git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" -uuid = "d38c429a-6771-53c6-b99e-75d170b6e991" -version = "0.6.2" - -[[deps.Crayons]] -git-tree-sha1 = "249fe38abf76d48563e2f4556bebd215aa317e15" -uuid = "a8cc5b0e-0ffa-5ad4-8c14-923d3ee1735f" -version = "4.1.1" - -[[deps.DataAPI]] -git-tree-sha1 = "fb5f5316dd3fd4c5e7c30a24d50643b73e37cd40" -uuid = "9a962f9c-6df0-11e9-0e5d-c546b8b5ee8a" -version = "1.10.0" - -[[deps.DataFrames]] -deps = ["Compat", "DataAPI", "Future", "InvertedIndices", "IteratorInterfaceExtensions", "LinearAlgebra", "Markdown", "Missings", "PooledArrays", "PrettyTables", "Printf", "REPL", "Reexport", "SortingAlgorithms", "Statistics", "TableTraits", "Tables", "Unicode"] -git-tree-sha1 = "daa21eb85147f72e41f6352a57fccea377e310a9" -uuid = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0" -version = "1.3.4" - -[[deps.DataStructures]] -deps = ["Compat", "InteractiveUtils", "OrderedCollections"] -git-tree-sha1 = "d1fff3a548102f48987a52a2e0d114fa97d730f0" -uuid = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8" -version = "0.18.13" - -[[deps.DataValueInterfaces]] -git-tree-sha1 = "bfc1187b79289637fa0ef6d4436ebdfe6905cbd6" -uuid = "e2d170a0-9d28-54be-80f0-106bbe20a464" -version = "1.0.0" - -[[deps.DataValues]] -deps = ["DataValueInterfaces", "Dates"] -git-tree-sha1 = "d88a19299eba280a6d062e135a43f00323ae70bf" -uuid = "e7dc6d0d-1eca-5fa6-8ad6-5aecde8b7ea5" -version = "0.4.13" - -[[deps.Dates]] -deps = ["Printf"] -uuid = "ade2ca70-3891-5945-98fb-dc099432e06a" - -[[deps.DefineSingletons]] -git-tree-sha1 = "0fba8b706d0178b4dc7fd44a96a92382c9065c2c" -uuid = "244e2a9f-e319-4986-a169-4d1fe445cd52" -version = "0.1.2" - -[[deps.DelimitedFiles]] -deps = ["Mmap"] -uuid = "8bb1440f-4735-579b-a4ab-409b98df4dab" - -[[deps.DensityInterface]] -deps = ["InverseFunctions", "Test"] -git-tree-sha1 = "80c3e8639e3353e5d2912fb3a1916b8455e2494b" -uuid = "b429d917-457f-4dbc-8f4c-0cc954292b1d" -version = "0.4.0" - -[[deps.DiffResults]] -deps = ["StaticArrays"] -git-tree-sha1 = "c18e98cba888c6c25d1c3b048e4b3380ca956805" -uuid = "163ba53b-c6d8-5494-b064-1a9d43ac40c5" -version = "1.0.3" - -[[deps.DiffRules]] -deps = ["IrrationalConstants", "LogExpFunctions", "NaNMath", "Random", "SpecialFunctions"] -git-tree-sha1 = "28d605d9a0ac17118fe2c5e9ce0fbb76c3ceb120" -uuid = "b552c78f-8df3-52c6-915a-8e097449b14b" -version = "1.11.0" - -[[deps.Distances]] -deps = ["LinearAlgebra", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "3258d0659f812acde79e8a74b11f17ac06d0ca04" -uuid = "b4f34e82-e78d-54a5-968a-f98e89d6e8f7" -version = "0.10.7" - -[[deps.Distributed]] -deps = ["Random", "Serialization", "Sockets"] -uuid = "8ba89e20-285c-5b6f-9357-94700520ee1b" - -[[deps.Distributions]] -deps = ["ChainRulesCore", "DensityInterface", "FillArrays", "LinearAlgebra", "PDMats", "Printf", "QuadGK", "Random", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Test"] -git-tree-sha1 = "aafa0665e3db0d3d0890cdc8191ea03dc279b042" -uuid = "31c24e10-a181-5473-b8eb-7969acd0382f" -version = "0.25.66" - -[[deps.DistributionsAD]] -deps = ["Adapt", "ChainRules", "ChainRulesCore", "Compat", "DiffRules", "Distributions", "FillArrays", "LinearAlgebra", "NaNMath", "PDMats", "Random", "Requires", "SpecialFunctions", "StaticArrays", "StatsBase", "StatsFuns", "ZygoteRules"] -git-tree-sha1 = "ec811a2688b3504ce5b315fe7bc86464480d5964" -uuid = "ced4e74d-a319-5a8a-b0ac-84af2272839c" -version = "0.6.41" - -[[deps.DocStringExtensions]] -deps = ["LibGit2"] -git-tree-sha1 = "b19534d1895d702889b219c382a6e18010797f0b" -uuid = "ffbed154-4ef7-542d-bbb7-c09d3a79fcae" -version = "0.8.6" - -[[deps.Downloads]] -deps = ["ArgTools", "FileWatching", "LibCURL", "NetworkOptions"] -uuid = "f43a241f-c20a-4ad4-852c-f6b1247861c6" -version = "1.6.0" - -[[deps.DualNumbers]] -deps = ["Calculus", "NaNMath", "SpecialFunctions"] -git-tree-sha1 = "5837a837389fccf076445fce071c8ddaea35a566" -uuid = "fa6b7ba4-c1ee-5f82-b5fc-ecf0adba8f74" -version = "0.6.8" - -[[deps.DynamicPPL]] -deps = ["AbstractMCMC", "AbstractPPL", "BangBang", "Bijectors", "ChainRulesCore", "Distributions", "LinearAlgebra", "MacroTools", "Random", "Setfield", "Test", "ZygoteRules"] -git-tree-sha1 = "c6f574d855670c2906af3f4053e6db10224e5dda" -uuid = "366bfd00-2699-11ea-058f-f148b4cae6d8" -version = "0.19.3" - -[[deps.EarCut_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3f3a2501fa7236e9b911e0f7a588c657e822bb6d" -uuid = "5ae413db-bbd1-5e63-b57d-d24a61df00f5" -version = "2.2.3+0" - -[[deps.EllipticalSliceSampling]] -deps = ["AbstractMCMC", "ArrayInterfaceCore", "Distributions", "Random", "Statistics"] -git-tree-sha1 = "4cda4527e990c0cc201286e0a0bfbbce00abcfc2" -uuid = "cad2338a-1db2-11e9-3401-43bc07c9ede2" -version = "1.0.0" - -[[deps.Expat_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bad72f730e9e91c08d9427d5e8db95478a3c323d" -uuid = "2e619515-83b5-522b-bb60-26c02a35a201" -version = "2.4.8+0" - -[[deps.ExprTools]] -git-tree-sha1 = "56559bbef6ca5ea0c0818fa5c90320398a6fbf8d" -uuid = "e2ba6199-217a-4e67-a87a-7c52f15ade04" -version = "0.1.8" - -[[deps.Extents]] -git-tree-sha1 = "5e1e4c53fa39afe63a7d356e30452249365fba99" -uuid = "411431e0-e8b7-467b-b5e0-f676ba4f2910" -version = "0.1.1" - -[[deps.FFMPEG]] -deps = ["FFMPEG_jll"] -git-tree-sha1 = "b57e3acbe22f8484b4b5ff66a7499717fe1a9cc8" -uuid = "c87230d0-a227-11e9-1b43-d7ebe4e7570a" -version = "0.4.1" - -[[deps.FFMPEG_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "JLLWrappers", "LAME_jll", "Libdl", "Ogg_jll", "OpenSSL_jll", "Opus_jll", "PCRE2_jll", "Pkg", "Zlib_jll", "libaom_jll", "libass_jll", "libfdk_aac_jll", "libvorbis_jll", "x264_jll", "x265_jll"] -git-tree-sha1 = "74faea50c1d007c85837327f6775bea60b5492dd" -uuid = "b22a6f82-2f65-5046-a5b2-351ab43fb4e5" -version = "4.4.2+2" - -[[deps.FFTW]] -deps = ["AbstractFFTs", "FFTW_jll", "LinearAlgebra", "MKL_jll", "Preferences", "Reexport"] -git-tree-sha1 = "90630efff0894f8142308e334473eba54c433549" -uuid = "7a1cc6ca-52ef-59f5-83cd-3a7055c09341" -version = "1.5.0" - -[[deps.FFTW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c6033cc3892d0ef5bb9cd29b7f2f0331ea5184ea" -uuid = "f5851436-0d7a-5f13-b9de-f02708fd171a" -version = "3.3.10+0" - -[[deps.FileIO]] -deps = ["Pkg", "Requires", "UUIDs"] -git-tree-sha1 = "94f5101b96d2d968ace56f7f2db19d0a5f592e28" -uuid = "5789e2e9-d7fb-5bc7-8068-2c6fae9b9549" -version = "1.15.0" - -[[deps.FilePathsBase]] -deps = ["Compat", "Dates", "Mmap", "Printf", "Test", "UUIDs"] -git-tree-sha1 = "129b104185df66e408edd6625d480b7f9e9823a0" -uuid = "48062228-2e41-5def-b9a4-89aafe57970f" -version = "0.9.18" - -[[deps.FileWatching]] -uuid = "7b1f6079-737a-58dc-b8bc-7a2ca5c1b5ee" - -[[deps.FillArrays]] -deps = ["LinearAlgebra", "Random", "SparseArrays", "Statistics"] -git-tree-sha1 = "246621d23d1f43e3b9c368bf3b72b2331a27c286" -uuid = "1a297f60-69ca-5386-bcde-b61e274b549b" -version = "0.13.2" - -[[deps.FixedPointNumbers]] -deps = ["Statistics"] -git-tree-sha1 = "335bfdceacc84c5cdf16aadc768aa5ddfc5383cc" -uuid = "53c48c17-4a7d-5ca2-90c5-79b7896eea93" -version = "0.8.4" - -[[deps.Fontconfig_jll]] -deps = ["Artifacts", "Bzip2_jll", "Expat_jll", "FreeType2_jll", "JLLWrappers", "Libdl", "Libuuid_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "21efd19106a55620a188615da6d3d06cd7f6ee03" -uuid = "a3f928ae-7b40-5064-980b-68af3947d34b" -version = "2.13.93+0" - -[[deps.Formatting]] -deps = ["Printf"] -git-tree-sha1 = "8339d61043228fdd3eb658d86c926cb282ae72a8" -uuid = "59287772-0a20-5a39-b81b-1366585eb4c0" -version = "0.4.2" - -[[deps.ForwardDiff]] -deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "425e126d13023600ebdecd4cf037f96e396187dd" -uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.31" - -[[deps.FreeType2_jll]] -deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "87eb71354d8ec1a96d4a7636bd57a7347dde3ef9" -uuid = "d7e528f0-a631-5988-bf34-fe36492bcfd7" -version = "2.10.4+0" - -[[deps.FriBidi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "aa31987c2ba8704e23c6c8ba8a4f769d5d7e4f91" -uuid = "559328eb-81f9-559d-9380-de523a88c83c" -version = "1.0.10+0" - -[[deps.FunctionWrappers]] -git-tree-sha1 = "241552bc2209f0fa068b6415b1942cc0aa486bcc" -uuid = "069b7b12-0de2-55c6-9aab-29f3d0a68a2e" -version = "1.1.2" - -[[deps.Functors]] -git-tree-sha1 = "223fffa49ca0ff9ce4f875be001ffe173b2b7de4" -uuid = "d9f16b24-f501-4c13-a1f2-28368ffc5196" -version = "0.2.8" - -[[deps.Future]] -deps = ["Random"] -uuid = "9fa8497b-333b-5362-9e8d-4d0656e87820" - -[[deps.GLFW_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libglvnd_jll", "Pkg", "Xorg_libXcursor_jll", "Xorg_libXi_jll", "Xorg_libXinerama_jll", "Xorg_libXrandr_jll"] -git-tree-sha1 = "d972031d28c8c8d9d7b41a536ad7bb0c2579caca" -uuid = "0656b61e-2033-5cc2-a64a-77c0f6c09b89" -version = "3.3.8+0" - -[[deps.GLM]] -deps = ["Distributions", "LinearAlgebra", "Printf", "Reexport", "SparseArrays", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "StatsModels"] -git-tree-sha1 = "039118892476c2bf045a43b88fcb75ed566000ff" -uuid = "38e38edf-8417-5370-95a0-9cbb8c7f171a" -version = "1.8.0" - -[[deps.GPUArraysCore]] -deps = ["Adapt"] -git-tree-sha1 = "d88b17a38322e153c519f5a9ed8d91e9baa03d8f" -uuid = "46192b85-c4d5-4398-a991-12ede77f4527" -version = "0.1.1" - -[[deps.GR]] -deps = ["Base64", "DelimitedFiles", "GR_jll", "HTTP", "JSON", "Libdl", "LinearAlgebra", "Pkg", "Printf", "Random", "RelocatableFolders", "Serialization", "Sockets", "Test", "UUIDs"] -git-tree-sha1 = "037a1ca47e8a5989cc07d19729567bb71bfabd0c" -uuid = "28b8d3ca-fb5f-59d9-8090-bfdbd6d07a71" -version = "0.66.0" - -[[deps.GR_jll]] -deps = ["Artifacts", "Bzip2_jll", "Cairo_jll", "FFMPEG_jll", "Fontconfig_jll", "GLFW_jll", "JLLWrappers", "JpegTurbo_jll", "Libdl", "Libtiff_jll", "Pixman_jll", "Pkg", "Qt5Base_jll", "Zlib_jll", "libpng_jll"] -git-tree-sha1 = "c8ab731c9127cd931c93221f65d6a1008dad7256" -uuid = "d2c73de3-f751-5644-a686-071e5b155ba9" -version = "0.66.0+0" - -[[deps.GeoInterface]] -deps = ["Extents"] -git-tree-sha1 = "fb28b5dc239d0174d7297310ef7b84a11804dfab" -uuid = "cf35fbd7-0cd7-5166-be24-54bfbe79505f" -version = "1.0.1" - -[[deps.GeometryBasics]] -deps = ["EarCut_jll", "GeoInterface", "IterTools", "LinearAlgebra", "StaticArrays", "StructArrays", "Tables"] -git-tree-sha1 = "a7a97895780dab1085a97769316aa348830dc991" -uuid = "5c1252a2-5f33-56bf-86c9-59e7332b4326" -version = "0.4.3" - -[[deps.Gettext_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "9b02998aba7bf074d14de89f9d37ca24a1a0b046" -uuid = "78b55507-aeef-58d4-861c-77aaff3498b1" -version = "0.21.0+0" - -[[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "a32d672ac2c967f3deb8a81d828afc739c838a06" -uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.68.3+2" - -[[deps.Graphite2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "344bf40dcab1073aca04aa0df4fb092f920e4011" -uuid = "3b182d85-2403-5c21-9c21-1e1f0cc25472" -version = "1.3.14+0" - -[[deps.Grisu]] -git-tree-sha1 = "53bb909d1151e57e2484c3d1b53e19552b887fb2" -uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" -version = "1.0.2" - -[[deps.HTTP]] -deps = ["Base64", "CodecZlib", "Dates", "IniFile", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "ed47af35905b7cc8f1a522ca684b35a212269bd8" -uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.2.0" - -[[deps.HarfBuzz_jll]] -deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] -git-tree-sha1 = "129acf094d168394e80ee1dc4bc06ec835e510a3" -uuid = "2e76f6c2-a576-52d4-95c1-20adfe4de566" -version = "2.8.1+1" - -[[deps.HypergeometricFunctions]] -deps = ["DualNumbers", "LinearAlgebra", "OpenLibm_jll", "SpecialFunctions", "Test"] -git-tree-sha1 = "709d864e3ed6e3545230601f94e11ebc65994641" -uuid = "34004b35-14d8-5ef3-9330-4cdb6864b03a" -version = "0.3.11" - -[[deps.Hyperscript]] -deps = ["Test"] -git-tree-sha1 = "8d511d5b81240fc8e6802386302675bdf47737b9" -uuid = "47d2ed2b-36de-50cf-bf87-49c2cf4b8b91" -version = "0.0.4" - -[[deps.HypertextLiteral]] -deps = ["Tricks"] -git-tree-sha1 = "c47c5fa4c5308f27ccaac35504858d8914e102f9" -uuid = "ac1192a8-f4b3-4bfe-ba22-af5b92cd3ab2" -version = "0.9.4" - -[[deps.IOCapture]] -deps = ["Logging", "Random"] -git-tree-sha1 = "f7be53659ab06ddc986428d3a9dcc95f6fa6705a" -uuid = "b5f81e59-6552-4d32-b1f0-c071b021bf89" -version = "0.2.2" - -[[deps.IniFile]] -git-tree-sha1 = "f550e6e32074c939295eb5ea6de31849ac2c9625" -uuid = "83e8ac13-25f8-5344-8a64-a9f2b223428f" -version = "0.5.1" - -[[deps.InitialValues]] -git-tree-sha1 = "4da0f88e9a39111c2fa3add390ab15f3a44f3ca3" -uuid = "22cec73e-a1b8-11e9-2c92-598750a2cf9c" -version = "0.3.1" - -[[deps.InlineStrings]] -deps = ["Parsers"] -git-tree-sha1 = "d19f9edd8c34760dca2de2b503f969d8700ed288" -uuid = "842dd82b-1e85-43dc-bf29-5d0ee9dffc48" -version = "1.1.4" - -[[deps.InplaceOps]] -deps = ["LinearAlgebra", "Test"] -git-tree-sha1 = "50b41d59e7164ab6fda65e71049fee9d890731ff" -uuid = "505f98c9-085e-5b2c-8e89-488be7bf1f34" -version = "0.3.0" - -[[deps.IntelOpenMP_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "d979e54b71da82f3a65b62553da4fc3d18c9004c" -uuid = "1d5cc7b8-4909-519e-a0f8-d0f5ad9712d0" -version = "2018.0.3+2" - -[[deps.InteractiveUtils]] -deps = ["Markdown"] -uuid = "b77e0a4c-d291-57a0-90e8-8db25a27a240" - -[[deps.Interpolations]] -deps = ["Adapt", "AxisAlgorithms", "ChainRulesCore", "LinearAlgebra", "OffsetArrays", "Random", "Ratios", "Requires", "SharedArrays", "SparseArrays", "StaticArrays", "WoodburyMatrices"] -git-tree-sha1 = "23e651bbb8d00e9971015d0dd306b780edbdb6b9" -uuid = "a98d9a8b-a2ab-59e6-89dd-64a1c18fca59" -version = "0.14.3" - -[[deps.IntervalSets]] -deps = ["Dates", "Random", "Statistics"] -git-tree-sha1 = "57af5939800bce15980bddd2426912c4f83012d8" -uuid = "8197267c-284f-5f27-9208-e0e47529a953" -version = "0.7.1" - -[[deps.InverseFunctions]] -deps = ["Test"] -git-tree-sha1 = "b3364212fb5d870f724876ffcd34dd8ec6d98918" -uuid = "3587e190-3f89-42d0-90ee-14403ec27112" -version = "0.1.7" - -[[deps.InvertedIndices]] -git-tree-sha1 = "bee5f1ef5bf65df56bdd2e40447590b272a5471f" -uuid = "41ab1584-1d38-5bbf-9106-f11c6c58b48f" -version = "1.1.0" - -[[deps.IrrationalConstants]] -git-tree-sha1 = "7fd44fd4ff43fc60815f8e764c0f352b83c49151" -uuid = "92d709cd-6900-40b7-9082-c6be49f344b6" -version = "0.1.1" - -[[deps.IterTools]] -git-tree-sha1 = "fa6287a4469f5e048d763df38279ee729fbd44e5" -uuid = "c8e1da08-722c-5040-9ed9-7db0dc04731e" -version = "1.4.0" - -[[deps.IteratorInterfaceExtensions]] -git-tree-sha1 = "a3f24677c21f5bbe9d2a714f95dcd58337fb2856" -uuid = "82899510-4779-5014-852e-03e436cf321d" -version = "1.0.0" - -[[deps.JLLWrappers]] -deps = ["Preferences"] -git-tree-sha1 = "abc9885a7ca2052a736a600f7fa66209f96506e1" -uuid = "692b3bcd-3c85-4b1f-b108-f13ce0eb3210" -version = "1.4.1" - -[[deps.JSON]] -deps = ["Dates", "Mmap", "Parsers", "Unicode"] -git-tree-sha1 = "3c837543ddb02250ef42f4738347454f95079d4e" -uuid = "682c06a0-de6a-54ab-a142-c8b1cf79cde6" -version = "0.21.3" - -[[deps.JpegTurbo_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b53380851c6e6664204efb2e62cd24fa5c47e4ba" -uuid = "aacddb02-875f-59d6-b918-886e6ef4fbf8" -version = "2.1.2+0" - -[[deps.KernelDensity]] -deps = ["Distributions", "DocStringExtensions", "FFTW", "Interpolations", "StatsBase"] -git-tree-sha1 = "9816b296736292a80b9a3200eb7fbb57aaa3917a" -uuid = "5ab0869b-81aa-558d-bb23-cbf5423bbe9b" -version = "0.6.5" - -[[deps.LAME_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "f6250b16881adf048549549fba48b1161acdac8c" -uuid = "c1c5ebd0-6772-5130-a774-d5fcae4a789d" -version = "3.100.1+0" - -[[deps.LERC_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "bf36f528eec6634efc60d7ec062008f171071434" -uuid = "88015f11-f218-50d7-93a8-a6af411a945d" -version = "3.0.0+1" - -[[deps.LRUCache]] -git-tree-sha1 = "d64a0aff6691612ab9fb0117b0995270871c5dfc" -uuid = "8ac3fa9e-de4c-5943-b1dc-09c6b5f20637" -version = "1.3.0" - -[[deps.LZO_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e5b909bcf985c5e2605737d2ce278ed791b89be6" -uuid = "dd4b983a-f0e5-5f8d-a1b7-129d4a5fb1ac" -version = "2.10.1+0" - -[[deps.LaTeXStrings]] -git-tree-sha1 = "f2355693d6778a178ade15952b7ac47a4ff97996" -uuid = "b964fa9f-0449-5b57-a5c2-d3ea65f4040f" -version = "1.3.0" - -[[deps.Latexify]] -deps = ["Formatting", "InteractiveUtils", "LaTeXStrings", "MacroTools", "Markdown", "Printf", "Requires"] -git-tree-sha1 = "1a43be956d433b5d0321197150c2f94e16c0aaa0" -uuid = "23fbe1c1-3f47-55db-b15f-69d7ec21a316" -version = "0.15.16" - -[[deps.LazyArtifacts]] -deps = ["Artifacts", "Pkg"] -uuid = "4af54fe1-eca0-43a8-85a7-787d91b784e3" - -[[deps.LeftChildRightSiblingTrees]] -deps = ["AbstractTrees"] -git-tree-sha1 = "b864cb409e8e445688bc478ef87c0afe4f6d1f8d" -uuid = "1d6d02ad-be62-4b6b-8a6d-2f90e265016e" -version = "0.1.3" - -[[deps.LibCURL]] -deps = ["LibCURL_jll", "MozillaCACerts_jll"] -uuid = "b27032c2-a3e7-50c8-80cd-2d36dbcbfd21" -version = "0.6.3" - -[[deps.LibCURL_jll]] -deps = ["Artifacts", "LibSSH2_jll", "Libdl", "MbedTLS_jll", "Zlib_jll", "nghttp2_jll"] -uuid = "deac9b47-8bc7-5906-a0fe-35ac56dc84c0" -version = "7.84.0+0" - -[[deps.LibGit2]] -deps = ["Base64", "NetworkOptions", "Printf", "SHA"] -uuid = "76f85450-5226-5b5a-8eaa-529ad045b433" - -[[deps.LibSSH2_jll]] -deps = ["Artifacts", "Libdl", "MbedTLS_jll"] -uuid = "29816b5a-b9ab-546f-933c-edad1886dfa8" -version = "1.10.2+0" - -[[deps.Libdl]] -uuid = "8f399da3-3557-5675-b5ff-fb832c97cbdb" - -[[deps.Libffi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "0b4a5d71f3e5200a7dff793393e09dfc2d874290" -uuid = "e9f186c6-92d2-5b65-8a66-fee21dc1b490" -version = "3.2.2+1" - -[[deps.Libgcrypt_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgpg_error_jll", "Pkg"] -git-tree-sha1 = "64613c82a59c120435c067c2b809fc61cf5166ae" -uuid = "d4300ac3-e22c-5743-9152-c294e39db1e4" -version = "1.8.7+0" - -[[deps.Libglvnd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll", "Xorg_libXext_jll"] -git-tree-sha1 = "7739f837d6447403596a75d19ed01fd08d6f56bf" -uuid = "7e76a0d4-f3c7-5321-8279-8d96eeed0f29" -version = "1.3.0+3" - -[[deps.Libgpg_error_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c333716e46366857753e273ce6a69ee0945a6db9" -uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" -version = "1.42.0+0" - -[[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" -uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" - -[[deps.Libmount_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "9c30530bf0effd46e15e0fdcf2b8636e78cbbd73" -uuid = "4b2f31a3-9ecc-558c-b454-b3730dcb73e9" -version = "2.35.0+0" - -[[deps.Libtask]] -deps = ["FunctionWrappers", "LRUCache", "LinearAlgebra", "Statistics"] -git-tree-sha1 = "dfa6c5f2d5a8918dd97c7f1a9ea0de68c2365426" -uuid = "6f1fad26-d15e-5dc8-ae53-837a1d7b8c9f" -version = "0.7.5" - -[[deps.Libtiff_jll]] -deps = ["Artifacts", "JLLWrappers", "JpegTurbo_jll", "LERC_jll", "Libdl", "Pkg", "Zlib_jll", "Zstd_jll"] -git-tree-sha1 = "3eb79b0ca5764d4799c06699573fd8f533259713" -uuid = "89763e89-9b03-5906-acba-b20f662cd828" -version = "4.4.0+0" - -[[deps.Libuuid_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "7f3efec06033682db852f8b3bc3c1d2b0a0ab066" -uuid = "38a345b3-de98-5d2b-a5d3-14cd9215e700" -version = "2.36.0+0" - -[[deps.LinearAlgebra]] -deps = ["Libdl", "libblastrampoline_jll"] -uuid = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" - -[[deps.LogExpFunctions]] -deps = ["ChainRulesCore", "ChangesOfVariables", "DocStringExtensions", "InverseFunctions", "IrrationalConstants", "LinearAlgebra"] -git-tree-sha1 = "361c2b088575b07946508f135ac556751240091c" -uuid = "2ab3a3ac-af41-5b50-aa03-7779005ae688" -version = "0.3.17" - -[[deps.Logging]] -uuid = "56ddb016-857b-54e1-b83d-db4d58db5568" - -[[deps.LoggingExtras]] -deps = ["Dates", "Logging"] -git-tree-sha1 = "5d4d2d9904227b8bd66386c1138cf4d5ffa826bf" -uuid = "e6f89c97-d47a-5376-807f-9c37f3926c36" -version = "0.4.9" - -[[deps.MCMCChains]] -deps = ["AbstractMCMC", "AxisArrays", "Compat", "Dates", "Distributions", "Formatting", "IteratorInterfaceExtensions", "KernelDensity", "LinearAlgebra", "MCMCDiagnosticTools", "MLJModelInterface", "NaturalSort", "OrderedCollections", "PrettyTables", "Random", "RecipesBase", "Serialization", "Statistics", "StatsBase", "StatsFuns", "TableTraits", "Tables"] -git-tree-sha1 = "8cb9b8fb081afd7728f5de25b9025bff97cb5c7a" -uuid = "c7f686f2-ff18-58e9-bc7b-31028e88f75d" -version = "5.3.1" - -[[deps.MCMCDiagnosticTools]] -deps = ["AbstractFFTs", "DataAPI", "Distributions", "LinearAlgebra", "MLJModelInterface", "Random", "SpecialFunctions", "Statistics", "StatsBase", "Tables"] -git-tree-sha1 = "058d08594e91ba1d98dcc3669f9421a76824aa95" -uuid = "be115224-59cd-429b-ad48-344e309966f0" -version = "0.1.3" - -[[deps.MKL_jll]] -deps = ["Artifacts", "IntelOpenMP_jll", "JLLWrappers", "LazyArtifacts", "Libdl", "Pkg"] -git-tree-sha1 = "e595b205efd49508358f7dc670a940c790204629" -uuid = "856f044c-d86e-5d09-b602-aeab76dc8ba7" -version = "2022.0.0+0" - -[[deps.MLJModelInterface]] -deps = ["Random", "ScientificTypesBase", "StatisticalTraits"] -git-tree-sha1 = "16fa7c2e14aa5b3854bc77ab5f1dbe2cdc488903" -uuid = "e80e1ace-859a-464e-9ed9-23947d8ae3ea" -version = "1.6.0" - -[[deps.MacroTools]] -deps = ["Markdown", "Random"] -git-tree-sha1 = "3d3e902b31198a27340d0bf00d6ac452866021cf" -uuid = "1914dd2f-81c6-5fcd-8719-6d5c9610ff09" -version = "0.5.9" - -[[deps.MappedArrays]] -git-tree-sha1 = "e8b359ef06ec72e8c030463fe02efe5527ee5142" -uuid = "dbb5928d-eab1-5f90-85c2-b9b0edb7c900" -version = "0.4.1" - -[[deps.Markdown]] -deps = ["Base64"] -uuid = "d6f4376e-aef5-505a-96c1-9c027394607a" - -[[deps.MbedTLS]] -deps = ["Dates", "MbedTLS_jll", "MozillaCACerts_jll", "Random", "Sockets"] -git-tree-sha1 = "d9ab10da9de748859a7780338e1d6566993d1f25" -uuid = "739be429-bea8-5141-9913-cc70e7f3736d" -version = "1.1.3" - -[[deps.MbedTLS_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "c8ffd9c3-330d-5841-b78e-0817d7145fa1" -version = "2.28.0+0" - -[[deps.Measures]] -git-tree-sha1 = "e498ddeee6f9fdb4551ce855a46f54dbd900245f" -uuid = "442fdcdd-2543-5da2-b0f3-8c86c306513e" -version = "0.3.1" - -[[deps.MicroCollections]] -deps = ["BangBang", "InitialValues", "Setfield"] -git-tree-sha1 = "6bb7786e4f24d44b4e29df03c69add1b63d88f01" -uuid = "128add7d-3638-4c79-886c-908ea0c25c34" -version = "0.1.2" - -[[deps.Missings]] -deps = ["DataAPI"] -git-tree-sha1 = "bf210ce90b6c9eed32d25dbcae1ebc565df2687f" -uuid = "e1d29d7a-bbdc-5cf2-9ac0-f12de2c33e28" -version = "1.0.2" - -[[deps.Mmap]] -uuid = "a63ad114-7e13-5084-954f-fe012c677804" - -[[deps.Mocking]] -deps = ["Compat", "ExprTools"] -git-tree-sha1 = "29714d0a7a8083bba8427a4fbfb00a540c681ce7" -uuid = "78c3b35d-d492-501b-9361-3d52fe80e533" -version = "0.7.3" - -[[deps.MozillaCACerts_jll]] -uuid = "14a3606d-f60d-562e-9121-12d972cd8159" -version = "2022.2.1" - -[[deps.MultivariateStats]] -deps = ["Arpack", "LinearAlgebra", "SparseArrays", "Statistics", "StatsBase"] -git-tree-sha1 = "6d019f5a0465522bbfdd68ecfad7f86b535d6935" -uuid = "6f286f6a-111f-5878-ab1e-185364afe411" -version = "0.9.0" - -[[deps.NNlib]] -deps = ["Adapt", "ChainRulesCore", "LinearAlgebra", "Pkg", "Requires", "Statistics"] -git-tree-sha1 = "415108fd88d6f55cedf7ee940c7d4b01fad85421" -uuid = "872c559c-99b0-510c-b3b7-b6c96a88d5cd" -version = "0.8.9" - -[[deps.NaNMath]] -deps = ["OpenLibm_jll"] -git-tree-sha1 = "a7c3d1da1189a1c2fe843a3bfa04d18d20eb3211" -uuid = "77ba4419-2d1f-58cd-9bb1-8ffee604a2e3" -version = "1.0.1" - -[[deps.NamedArrays]] -deps = ["Combinatorics", "DataStructures", "DelimitedFiles", "InvertedIndices", "LinearAlgebra", "Random", "Requires", "SparseArrays", "Statistics"] -git-tree-sha1 = "2fd5787125d1a93fbe30961bd841707b8a80d75b" -uuid = "86f7a689-2022-50b4-a561-43c23ac3c673" -version = "0.9.6" - -[[deps.NaturalSort]] -git-tree-sha1 = "eda490d06b9f7c00752ee81cfa451efe55521e21" -uuid = "c020b1a1-e9b0-503a-9c33-f039bfc54a85" -version = "1.0.0" - -[[deps.NearestNeighbors]] -deps = ["Distances", "StaticArrays"] -git-tree-sha1 = "0e353ed734b1747fc20cd4cba0edd9ac027eff6a" -uuid = "b8a86587-4115-5ab1-83bc-aa920d37bbce" -version = "0.4.11" - -[[deps.NetworkOptions]] -uuid = "ca575930-c2e3-43a9-ace4-1e988b2c1908" -version = "1.2.0" - -[[deps.Observables]] -git-tree-sha1 = "dfd8d34871bc3ad08cd16026c1828e271d554db9" -uuid = "510215fc-4207-5dde-b226-833fc4488ee2" -version = "0.5.1" - -[[deps.OffsetArrays]] -deps = ["Adapt"] -git-tree-sha1 = "1ea784113a6aa054c5ebd95945fa5e52c2f378e7" -uuid = "6fe1bfb0-de20-5000-8ca7-80f57d26f881" -version = "1.12.7" - -[[deps.Ogg_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "887579a3eb005446d514ab7aeac5d1d027658b8f" -uuid = "e7412a2a-1a6e-54c0-be00-318e2571c051" -version = "1.3.5+1" - -[[deps.OpenBLAS_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Libdl"] -uuid = "4536629a-c528-5b80-bd46-f80d51c5b363" -version = "0.3.20+0" - -[[deps.OpenLibm_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "05823500-19ac-5b8b-9628-191a04bc5112" -version = "0.8.1+0" - -[[deps.OpenSSL_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e60321e3f2616584ff98f0a4f18d98ae6f89bbb3" -uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.17+0" - -[[deps.OpenSpecFun_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "13652491f6856acfd2db29360e1bbcd4565d04f1" -uuid = "efe28fd5-8261-553b-a9e1-b2916fc3738e" -version = "0.5.5+0" - -[[deps.Opus_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "51a08fb14ec28da2ec7a927c4337e4332c2a4720" -uuid = "91d4177d-7536-5919-b921-800302f37372" -version = "1.3.2+0" - -[[deps.OrderedCollections]] -git-tree-sha1 = "85f8e6578bf1f9ee0d11e7bb1b1456435479d47c" -uuid = "bac558e1-5e72-5ebc-8fee-abe8a469f55d" -version = "1.4.1" - -[[deps.PCRE2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "efcefdf7-47ab-520b-bdef-62a2eaa19f15" -version = "10.40.0+0" - -[[deps.PCRE_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b2a7af664e098055a7529ad1a900ded962bca488" -uuid = "2f80f16e-611a-54ab-bc61-aa92de5b98fc" -version = "8.44.0+0" - -[[deps.PDMats]] -deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse"] -git-tree-sha1 = "cf494dca75a69712a72b80bc48f59dcf3dea63ec" -uuid = "90014a1f-27ba-587c-ab20-58faa44d9150" -version = "0.11.16" - -[[deps.Parsers]] -deps = ["Dates"] -git-tree-sha1 = "0044b23da09b5608b4ecacb4e5e6c6332f833a7e" -uuid = "69de0a69-1ddd-5017-9359-2bf0b02dc9f0" -version = "2.3.2" - -[[deps.Pixman_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "b4f5d02549a10e20780a24fce72bea96b6329e29" -uuid = "30392449-352a-5448-841d-b1acce4e97dc" -version = "0.40.1+0" - -[[deps.Pkg]] -deps = ["Artifacts", "Dates", "Downloads", "LibGit2", "Libdl", "Logging", "Markdown", "Printf", "REPL", "Random", "SHA", "Serialization", "TOML", "Tar", "UUIDs", "p7zip_jll"] -uuid = "44cfe95a-1eb2-52ea-b672-e2afdf69b78f" -version = "1.8.0" - -[[deps.PlotThemes]] -deps = ["PlotUtils", "Statistics"] -git-tree-sha1 = "8162b2f8547bc23876edd0c5181b27702ae58dce" -uuid = "ccf2f8ad-2431-5c83-bf29-c5338b663b6a" -version = "3.0.0" - -[[deps.PlotUtils]] -deps = ["ColorSchemes", "Colors", "Dates", "Printf", "Random", "Reexport", "Statistics"] -git-tree-sha1 = "9888e59493658e476d3073f1ce24348bdc086660" -uuid = "995b91a9-d308-5afd-9ec6-746e21dbc043" -version = "1.3.0" - -[[deps.Plots]] -deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "GeometryBasics", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "Unzip"] -git-tree-sha1 = "79830c17fe30f234931767238c584b3a75b3329d" -uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.31.6" - -[[deps.PlutoUI]] -deps = ["AbstractPlutoDingetjes", "Base64", "ColorTypes", "Dates", "Hyperscript", "HypertextLiteral", "IOCapture", "InteractiveUtils", "JSON", "Logging", "Markdown", "Random", "Reexport", "UUIDs"] -git-tree-sha1 = "8d1f54886b9037091edf146b517989fc4a09efec" -uuid = "7f904dfe-b85e-4ff6-b463-dae2292396a8" -version = "0.7.39" - -[[deps.PooledArrays]] -deps = ["DataAPI", "Future"] -git-tree-sha1 = "a6062fe4063cdafe78f4a0a81cfffb89721b30e7" -uuid = "2dfb63ee-cc39-5dd5-95bd-886bf059d720" -version = "1.4.2" - -[[deps.Preferences]] -deps = ["TOML"] -git-tree-sha1 = "47e5f437cc0e7ef2ce8406ce1e7e24d44915f88d" -uuid = "21216c6a-2e73-6563-6e65-726566657250" -version = "1.3.0" - -[[deps.PrettyTables]] -deps = ["Crayons", "Formatting", "Markdown", "Reexport", "Tables"] -git-tree-sha1 = "dfb54c4e414caa595a1f2ed759b160f5a3ddcba5" -uuid = "08abe8d2-0d0c-5749-adfa-8a2ac140af0d" -version = "1.3.1" - -[[deps.Printf]] -deps = ["Unicode"] -uuid = "de0858da-6303-5e67-8744-51eddeeeb8d7" - -[[deps.ProgressLogging]] -deps = ["Logging", "SHA", "UUIDs"] -git-tree-sha1 = "80d919dee55b9c50e8d9e2da5eeafff3fe58b539" -uuid = "33c8b6b6-d38a-422a-b730-caa89a2f386c" -version = "0.1.4" - -[[deps.ProgressMeter]] -deps = ["Distributed", "Printf"] -git-tree-sha1 = "d7a7aef8f8f2d537104f170139553b14dfe39fe9" -uuid = "92933f4c-e287-5a05-a399-4b506db050ca" -version = "1.7.2" - -[[deps.Qt5Base_jll]] -deps = ["Artifacts", "CompilerSupportLibraries_jll", "Fontconfig_jll", "Glib_jll", "JLLWrappers", "Libdl", "Libglvnd_jll", "OpenSSL_jll", "Pkg", "Xorg_libXext_jll", "Xorg_libxcb_jll", "Xorg_xcb_util_image_jll", "Xorg_xcb_util_keysyms_jll", "Xorg_xcb_util_renderutil_jll", "Xorg_xcb_util_wm_jll", "Zlib_jll", "xkbcommon_jll"] -git-tree-sha1 = "0c03844e2231e12fda4d0086fd7cbe4098ee8dc5" -uuid = "ea2cea3b-5b76-57ae-a6ef-0a8af62496e1" -version = "5.15.3+2" - -[[deps.QuadGK]] -deps = ["DataStructures", "LinearAlgebra"] -git-tree-sha1 = "78aadffb3efd2155af139781b8a8df1ef279ea39" -uuid = "1fd47b50-473d-5c70-9696-f719f8f3bcdc" -version = "2.4.2" - -[[deps.RData]] -deps = ["CategoricalArrays", "CodecZlib", "DataFrames", "Dates", "FileIO", "Requires", "TimeZones", "Unicode"] -git-tree-sha1 = "19e47a495dfb7240eb44dc6971d660f7e4244a72" -uuid = "df47a6cb-8c03-5eed-afd8-b6050d6c41da" -version = "0.8.3" - -[[deps.RDatasets]] -deps = ["CSV", "CodecZlib", "DataFrames", "FileIO", "Printf", "RData", "Reexport"] -git-tree-sha1 = "2720e6f6afb3e562ccb70a6b62f8f308ff810333" -uuid = "ce6b1742-4840-55fa-b093-852dadbb1d8b" -version = "0.7.7" - -[[deps.REPL]] -deps = ["InteractiveUtils", "Markdown", "Sockets", "Unicode"] -uuid = "3fa0cd96-eef1-5676-8a61-b3b8758bbffb" - -[[deps.Random]] -deps = ["SHA", "Serialization"] -uuid = "9a3f8284-a2c9-5f02-9a11-845980a1fd5c" - -[[deps.RangeArrays]] -git-tree-sha1 = "b9039e93773ddcfc828f12aadf7115b4b4d225f5" -uuid = "b3c3ace0-ae52-54e7-9d0b-2c1406fd6b9d" -version = "0.3.2" - -[[deps.Ratios]] -deps = ["Requires"] -git-tree-sha1 = "dc84268fe0e3335a62e315a3a7cf2afa7178a734" -uuid = "c84ed2f1-dad5-54f0-aa8e-dbefe2724439" -version = "0.4.3" - -[[deps.RealDot]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "9f0a1b71baaf7650f4fa8a1d168c7fb6ee41f0c9" -uuid = "c1ae055f-0cd5-4b69-90a6-9a35b1a98df9" -version = "0.1.0" - -[[deps.RecipesBase]] -git-tree-sha1 = "6bf3f380ff52ce0832ddd3a2a7b9538ed1bcca7d" -uuid = "3cdcf5f2-1ef4-517c-9805-6587b60abb01" -version = "1.2.1" - -[[deps.RecipesPipeline]] -deps = ["Dates", "NaNMath", "PlotUtils", "RecipesBase"] -git-tree-sha1 = "e7eac76a958f8664f2718508435d058168c7953d" -uuid = "01d81517-befc-4cb6-b9ec-a95719d0359c" -version = "0.6.3" - -[[deps.RecursiveArrayTools]] -deps = ["Adapt", "ArrayInterfaceCore", "ArrayInterfaceStaticArraysCore", "ChainRulesCore", "DocStringExtensions", "FillArrays", "GPUArraysCore", "LinearAlgebra", "RecipesBase", "StaticArraysCore", "Statistics", "ZygoteRules"] -git-tree-sha1 = "4ce7584604489e537b2ab84ed92b4107d03377f0" -uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.31.2" - -[[deps.Reexport]] -git-tree-sha1 = "45e428421666073eab6f2da5c9d310d99bb12f9b" -uuid = "189a3867-3050-52da-a836-e630ba90ab69" -version = "1.2.2" - -[[deps.RelocatableFolders]] -deps = ["SHA", "Scratch"] -git-tree-sha1 = "22c5201127d7b243b9ee1de3b43c408879dff60f" -uuid = "05181044-ff0b-4ac5-8273-598c1e38db00" -version = "0.3.0" - -[[deps.Requires]] -deps = ["UUIDs"] -git-tree-sha1 = "838a3a4188e2ded87a4f9f184b4b0d78a1e91cb7" -uuid = "ae029012-a4dd-5104-9daa-d747884805df" -version = "1.3.0" - -[[deps.Rmath]] -deps = ["Random", "Rmath_jll"] -git-tree-sha1 = "bf3188feca147ce108c76ad82c2792c57abe7b1f" -uuid = "79098fc4-a85e-5d69-aa6a-4863f24498fa" -version = "0.7.0" - -[[deps.Rmath_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "68db32dff12bb6127bac73c209881191bf0efbb7" -uuid = "f50d1b31-88e8-58de-be2c-1cc44531875f" -version = "0.3.0+0" - -[[deps.Roots]] -deps = ["CommonSolve", "Printf", "Setfield"] -git-tree-sha1 = "50f945fb7d7fdece03bbc76ff1ab96170f64a892" -uuid = "f2b01f46-fcfa-551c-844a-d8ac1e96c665" -version = "2.0.2" - -[[deps.SHA]] -uuid = "ea8e919c-243c-51af-8825-aaa63cd721ce" -version = "0.7.0" - -[[deps.SciMLBase]] -deps = ["ArrayInterfaceCore", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "RecipesBase", "RecursiveArrayTools", "StaticArraysCore", "Statistics", "Tables"] -git-tree-sha1 = "3077587613bd4ba73e2acd4df2d1300ef19d8513" -uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.47.0" - -[[deps.ScientificTypesBase]] -git-tree-sha1 = "a8e18eb383b5ecf1b5e6fc237eb39255044fd92b" -uuid = "30f210dd-8aff-4c5f-94ba-8e64358c1161" -version = "3.0.0" - -[[deps.Scratch]] -deps = ["Dates"] -git-tree-sha1 = "f94f779c94e58bf9ea243e77a37e16d9de9126bd" -uuid = "6c6a2e73-6563-6170-7368-637461726353" -version = "1.1.1" - -[[deps.SentinelArrays]] -deps = ["Dates", "Random"] -git-tree-sha1 = "db8481cf5d6278a121184809e9eb1628943c7704" -uuid = "91c51154-3ec4-41a3-a24f-3f23e20d615c" -version = "1.3.13" - -[[deps.Serialization]] -uuid = "9e88b42a-f829-5b0c-bbe9-9e923198166b" - -[[deps.Setfield]] -deps = ["ConstructionBase", "Future", "MacroTools", "Requires"] -git-tree-sha1 = "38d88503f695eb0301479bc9b0d4320b378bafe5" -uuid = "efcf1570-3423-57d1-acb7-fd33fddbac46" -version = "0.8.2" - -[[deps.SharedArrays]] -deps = ["Distributed", "Mmap", "Random", "Serialization"] -uuid = "1a1011a3-84de-559e-8e89-a11a2f7dc383" - -[[deps.ShiftedArrays]] -git-tree-sha1 = "22395afdcf37d6709a5a0766cc4a5ca52cb85ea0" -uuid = "1277b4bf-5013-50f5-be3d-901d8477a67a" -version = "1.0.0" - -[[deps.Showoff]] -deps = ["Dates", "Grisu"] -git-tree-sha1 = "91eddf657aca81df9ae6ceb20b959ae5653ad1de" -uuid = "992d4aef-0814-514b-bc4d-f2e9a6c4116f" -version = "1.0.3" - -[[deps.SimpleBufferStream]] -git-tree-sha1 = "874e8867b33a00e784c8a7e4b60afe9e037b74e1" -uuid = "777ac1f9-54b0-4bf8-805c-2214025038e7" -version = "1.1.0" - -[[deps.Sockets]] -uuid = "6462fe0b-24de-5631-8697-dd941f90decc" - -[[deps.SortingAlgorithms]] -deps = ["DataStructures"] -git-tree-sha1 = "b3363d7460f7d098ca0912c69b082f75625d7508" -uuid = "a2af1166-a08f-5f64-846c-94a0d3cef48c" -version = "1.0.1" - -[[deps.SparseArrays]] -deps = ["LinearAlgebra", "Random"] -uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" - -[[deps.SpecialFunctions]] -deps = ["ChainRulesCore", "IrrationalConstants", "LogExpFunctions", "OpenLibm_jll", "OpenSpecFun_jll"] -git-tree-sha1 = "d75bda01f8c31ebb72df80a46c88b25d1c79c56d" -uuid = "276daf66-3868-5448-9aa4-cd146d93841b" -version = "2.1.7" - -[[deps.SplittablesBase]] -deps = ["Setfield", "Test"] -git-tree-sha1 = "39c9f91521de844bad65049efd4f9223e7ed43f9" -uuid = "171d559e-b47b-412a-8079-5efa626c420e" -version = "0.1.14" - -[[deps.StaticArrays]] -deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "23368a3313d12a2326ad0035f0db0c0966f438ef" -uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.5.2" - -[[deps.StaticArraysCore]] -git-tree-sha1 = "66fe9eb253f910fe8cf161953880cfdaef01cdf0" -uuid = "1e83bf80-4336-4d27-bf5d-d5a4f845583c" -version = "1.0.1" - -[[deps.StatisticalTraits]] -deps = ["ScientificTypesBase"] -git-tree-sha1 = "30b9236691858e13f167ce829490a68e1a597782" -uuid = "64bff920-2084-43da-a3e6-9bb72801c0c9" -version = "3.2.0" - -[[deps.Statistics]] -deps = ["LinearAlgebra", "SparseArrays"] -uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" - -[[deps.StatsAPI]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "f9af7f195fb13589dd2e2d57fdb401717d2eb1f6" -uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.5.0" - -[[deps.StatsBase]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] -git-tree-sha1 = "d1bf48bfcc554a3761a133fe3a9bb01488e06916" -uuid = "2913bbd2-ae8a-5f71-8c99-4fb6c76f3a91" -version = "0.33.21" - -[[deps.StatsFuns]] -deps = ["ChainRulesCore", "HypergeometricFunctions", "InverseFunctions", "IrrationalConstants", "LogExpFunctions", "Reexport", "Rmath", "SpecialFunctions"] -git-tree-sha1 = "5783b877201a82fc0014cbf381e7e6eb130473a4" -uuid = "4c63d2b9-4356-54db-8cca-17b64c39e42c" -version = "1.0.1" - -[[deps.StatsModels]] -deps = ["DataAPI", "DataStructures", "LinearAlgebra", "Printf", "REPL", "ShiftedArrays", "SparseArrays", "StatsBase", "StatsFuns", "Tables"] -git-tree-sha1 = "f8ba54b202c77622a713e25e7616d618308b34d3" -uuid = "3eaba693-59b7-5ba5-a881-562e759f1c8d" -version = "0.6.31" - -[[deps.StatsPlots]] -deps = ["AbstractFFTs", "Clustering", "DataStructures", "DataValues", "Distributions", "Interpolations", "KernelDensity", "LinearAlgebra", "MultivariateStats", "Observables", "Plots", "RecipesBase", "RecipesPipeline", "Reexport", "StatsBase", "TableOperations", "Tables", "Widgets"] -git-tree-sha1 = "2b35ba790f1f823872dcf378a6d3c3b520092eac" -uuid = "f3b207a7-027a-5e70-b257-86293d7955fd" -version = "0.15.1" - -[[deps.StructArrays]] -deps = ["Adapt", "DataAPI", "StaticArrays", "Tables"] -git-tree-sha1 = "ec47fb6069c57f1cee2f67541bf8f23415146de7" -uuid = "09ab397b-f2b6-538f-b94a-2f83cf4a842a" -version = "0.6.11" - -[[deps.SuiteSparse]] -deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] -uuid = "4607b0f0-06f3-5cda-b6b1-a6196a1729e9" - -[[deps.TOML]] -deps = ["Dates"] -uuid = "fa267f1f-6049-4f14-aa54-33bafae1ed76" -version = "1.0.0" - -[[deps.TableOperations]] -deps = ["SentinelArrays", "Tables", "Test"] -git-tree-sha1 = "e383c87cf2a1dc41fa30c093b2a19877c83e1bc1" -uuid = "ab02a1b2-a7df-11e8-156e-fb1833f50b87" -version = "1.2.0" - -[[deps.TableTraits]] -deps = ["IteratorInterfaceExtensions"] -git-tree-sha1 = "c06b2f539df1c6efa794486abfb6ed2022561a39" -uuid = "3783bdb8-4a98-5b6b-af9a-565f29a5fe9c" -version = "1.0.1" - -[[deps.Tables]] -deps = ["DataAPI", "DataValueInterfaces", "IteratorInterfaceExtensions", "LinearAlgebra", "OrderedCollections", "TableTraits", "Test"] -git-tree-sha1 = "5ce79ce186cc678bbb5c5681ca3379d1ddae11a1" -uuid = "bd369af6-aec1-5ad0-b16a-f7cc5008161c" -version = "1.7.0" - -[[deps.Tar]] -deps = ["ArgTools", "SHA"] -uuid = "a4e569a6-e804-4fa4-b0f3-eef7a1d5b13e" -version = "1.10.1" - -[[deps.TensorCore]] -deps = ["LinearAlgebra"] -git-tree-sha1 = "1feb45f88d133a655e001435632f019a9a1bcdb6" -uuid = "62fd8b95-f654-4bbd-a8a5-9c27f68ccd50" -version = "0.1.1" - -[[deps.TerminalLoggers]] -deps = ["LeftChildRightSiblingTrees", "Logging", "Markdown", "Printf", "ProgressLogging", "UUIDs"] -git-tree-sha1 = "62846a48a6cd70e63aa29944b8c4ef704360d72f" -uuid = "5d786b92-1e48-4d6f-9151-6b4477ca9bed" -version = "0.1.5" - -[[deps.Test]] -deps = ["InteractiveUtils", "Logging", "Random", "Serialization"] -uuid = "8dfed614-e22c-5e08-85e1-65c5234f0b40" - -[[deps.TimeZones]] -deps = ["Dates", "Downloads", "InlineStrings", "LazyArtifacts", "Mocking", "Printf", "RecipesBase", "Scratch", "Unicode"] -git-tree-sha1 = "d634a3641062c040fc8a7e2a3ea17661cc159688" -uuid = "f269a46b-ccf7-5d73-abea-4c690281aa53" -version = "1.9.0" - -[[deps.Tracker]] -deps = ["Adapt", "DiffRules", "ForwardDiff", "LinearAlgebra", "LogExpFunctions", "MacroTools", "NNlib", "NaNMath", "Printf", "Random", "Requires", "SpecialFunctions", "Statistics"] -git-tree-sha1 = "0874c1b5de1b5529b776cfeca3ec0acfada97b1b" -uuid = "9f7883ad-71c0-57eb-9f7f-b5c9e6d3789c" -version = "0.2.20" - -[[deps.TranscodingStreams]] -deps = ["Random", "Test"] -git-tree-sha1 = "216b95ea110b5972db65aa90f88d8d89dcb8851c" -uuid = "3bb67fe8-82b1-5028-8e26-92a6c54297fa" -version = "0.9.6" - -[[deps.Transducers]] -deps = ["Adapt", "ArgCheck", "BangBang", "Baselet", "CompositionsBase", "DefineSingletons", "Distributed", "InitialValues", "Logging", "Markdown", "MicroCollections", "Requires", "Setfield", "SplittablesBase", "Tables"] -git-tree-sha1 = "c76399a3bbe6f5a88faa33c8f8a65aa631d95013" -uuid = "28d57a85-8fef-5791-bfe6-a80928e7c999" -version = "0.4.73" - -[[deps.Tricks]] -git-tree-sha1 = "6bac775f2d42a611cdfcd1fb217ee719630c4175" -uuid = "410a4b4d-49e4-4fbc-ab6d-cb71b17b3775" -version = "0.1.6" - -[[deps.Turing]] -deps = ["AbstractMCMC", "AdvancedHMC", "AdvancedMH", "AdvancedPS", "AdvancedVI", "BangBang", "Bijectors", "DataStructures", "DiffResults", "Distributions", "DistributionsAD", "DocStringExtensions", "DynamicPPL", "EllipticalSliceSampling", "ForwardDiff", "Libtask", "LinearAlgebra", "MCMCChains", "NamedArrays", "Printf", "Random", "Reexport", "Requires", "SciMLBase", "SpecialFunctions", "Statistics", "StatsBase", "StatsFuns", "Tracker", "ZygoteRules"] -git-tree-sha1 = "d5e128d1a8db72ebdd2b76644d19128cf90dda29" -uuid = "fce5fe82-541a-59a6-adf8-730c64b5f9a0" -version = "0.21.9" - -[[deps.URIs]] -git-tree-sha1 = "e59ecc5a41b000fa94423a578d29290c7266fc10" -uuid = "5c2747f8-b7ea-4ff2-ba2e-563bfd36b1d4" -version = "1.4.0" - -[[deps.UUIDs]] -deps = ["Random", "SHA"] -uuid = "cf7118a7-6976-5b1a-9a39-7adc72f591a4" - -[[deps.UnPack]] -git-tree-sha1 = "387c1f73762231e86e0c9c5443ce3b4a0a9a0c2b" -uuid = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" -version = "1.0.2" - -[[deps.Unicode]] -uuid = "4ec0a83e-493e-50e2-b9ac-8f72acf5a8f5" - -[[deps.UnicodeFun]] -deps = ["REPL"] -git-tree-sha1 = "53915e50200959667e78a92a418594b428dffddf" -uuid = "1cfade01-22cf-5700-b092-accc4b62d6e1" -version = "0.4.1" - -[[deps.Unzip]] -git-tree-sha1 = "34db80951901073501137bdbc3d5a8e7bbd06670" -uuid = "41fe7b60-77ed-43a1-b4f0-825fd5a5650d" -version = "0.1.2" - -[[deps.Wayland_jll]] -deps = ["Artifacts", "Expat_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg", "XML2_jll"] -git-tree-sha1 = "3e61f0b86f90dacb0bc0e73a0c5a83f6a8636e23" -uuid = "a2964d1f-97da-50d4-b82a-358c7fce9d89" -version = "1.19.0+0" - -[[deps.Wayland_protocols_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4528479aa01ee1b3b4cd0e6faef0e04cf16466da" -uuid = "2381bf8a-dfd0-557d-9999-79630e7b1b91" -version = "1.25.0+0" - -[[deps.WeakRefStrings]] -deps = ["DataAPI", "InlineStrings", "Parsers"] -git-tree-sha1 = "b1be2855ed9ed8eac54e5caff2afcdb442d52c23" -uuid = "ea10d353-3f73-51f8-a26c-33c1cb351aa5" -version = "1.4.2" - -[[deps.Widgets]] -deps = ["Colors", "Dates", "Observables", "OrderedCollections"] -git-tree-sha1 = "fcdae142c1cfc7d89de2d11e08721d0f2f86c98a" -uuid = "cc8bc4a8-27d6-5769-a93b-9d913e69aa62" -version = "0.6.6" - -[[deps.WoodburyMatrices]] -deps = ["LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "de67fa59e33ad156a590055375a30b23c40299d3" -uuid = "efce3f68-66dc-5838-9240-27a6d6f5f9b6" -version = "0.5.5" - -[[deps.XML2_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libiconv_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "58443b63fb7e465a8a7210828c91c08b92132dff" -uuid = "02c8fc9c-b97f-50b9-bbe4-9be30ff0a78a" -version = "2.9.14+0" - -[[deps.XSLT_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Libgcrypt_jll", "Libgpg_error_jll", "Libiconv_jll", "Pkg", "XML2_jll", "Zlib_jll"] -git-tree-sha1 = "91844873c4085240b95e795f692c4cec4d805f8a" -uuid = "aed1982a-8fda-507f-9586-7b0439959a61" -version = "1.1.34+0" - -[[deps.Xorg_libX11_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll", "Xorg_xtrans_jll"] -git-tree-sha1 = "5be649d550f3f4b95308bf0183b82e2582876527" -uuid = "4f6342f7-b3d2-589e-9d20-edeb45f2b2bc" -version = "1.6.9+4" - -[[deps.Xorg_libXau_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4e490d5c960c314f33885790ed410ff3a94ce67e" -uuid = "0c0b7dd1-d40b-584c-a123-a41640f87eec" -version = "1.0.9+4" - -[[deps.Xorg_libXcursor_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXfixes_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "12e0eb3bc634fa2080c1c37fccf56f7c22989afd" -uuid = "935fb764-8cf2-53bf-bb30-45bb1f8bf724" -version = "1.2.0+4" - -[[deps.Xorg_libXdmcp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fe47bd2247248125c428978740e18a681372dd4" -uuid = "a3789734-cfe1-5b06-b2d0-1dd0d9d62d05" -version = "1.1.3+4" - -[[deps.Xorg_libXext_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "b7c0aa8c376b31e4852b360222848637f481f8c3" -uuid = "1082639a-0dae-5f34-9b06-72781eeb8cb3" -version = "1.3.4+4" - -[[deps.Xorg_libXfixes_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "0e0dc7431e7a0587559f9294aeec269471c991a4" -uuid = "d091e8ba-531a-589c-9de9-94069b037ed8" -version = "5.0.3+4" - -[[deps.Xorg_libXi_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXfixes_jll"] -git-tree-sha1 = "89b52bc2160aadc84d707093930ef0bffa641246" -uuid = "a51aa0fd-4e3c-5386-b890-e753decda492" -version = "1.7.10+4" - -[[deps.Xorg_libXinerama_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll"] -git-tree-sha1 = "26be8b1c342929259317d8b9f7b53bf2bb73b123" -uuid = "d1454406-59df-5ea1-beac-c340f2130bc3" -version = "1.1.4+4" - -[[deps.Xorg_libXrandr_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libXext_jll", "Xorg_libXrender_jll"] -git-tree-sha1 = "34cea83cb726fb58f325887bf0612c6b3fb17631" -uuid = "ec84b674-ba8e-5d96-8ba1-2a689ba10484" -version = "1.5.2+4" - -[[deps.Xorg_libXrender_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "19560f30fd49f4d4efbe7002a1037f8c43d43b96" -uuid = "ea2f1a96-1ddc-540d-b46f-429655e07cfa" -version = "0.9.10+4" - -[[deps.Xorg_libpthread_stubs_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "6783737e45d3c59a4a4c4091f5f88cdcf0908cbb" -uuid = "14d82f49-176c-5ed1-bb49-ad3f5cbd8c74" -version = "0.1.0+3" - -[[deps.Xorg_libxcb_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "XSLT_jll", "Xorg_libXau_jll", "Xorg_libXdmcp_jll", "Xorg_libpthread_stubs_jll"] -git-tree-sha1 = "daf17f441228e7a3833846cd048892861cff16d6" -uuid = "c7cfdc94-dc32-55de-ac96-5a1b8d977c5b" -version = "1.13.0+3" - -[[deps.Xorg_libxkbfile_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libX11_jll"] -git-tree-sha1 = "926af861744212db0eb001d9e40b5d16292080b2" -uuid = "cc61e674-0454-545c-8b26-ed2c68acab7a" -version = "1.1.0+4" - -[[deps.Xorg_xcb_util_image_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "0fab0a40349ba1cba2c1da699243396ff8e94b97" -uuid = "12413925-8142-5f55-bb0e-6d7ca50bb09b" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxcb_jll"] -git-tree-sha1 = "e7fd7b2881fa2eaa72717420894d3938177862d1" -uuid = "2def613f-5ad1-5310-b15b-b15d46f528f5" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_keysyms_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "d1151e2c45a544f32441a567d1690e701ec89b00" -uuid = "975044d2-76e6-5fbe-bf08-97ce7c6574c7" -version = "0.4.0+1" - -[[deps.Xorg_xcb_util_renderutil_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "dfd7a8f38d4613b6a575253b3174dd991ca6183e" -uuid = "0d47668e-0667-5a69-a72c-f761630bfb7e" -version = "0.3.9+1" - -[[deps.Xorg_xcb_util_wm_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xcb_util_jll"] -git-tree-sha1 = "e78d10aab01a4a154142c5006ed44fd9e8e31b67" -uuid = "c22f9ab0-d5fe-5066-847c-f4bb1cd4e361" -version = "0.4.1+1" - -[[deps.Xorg_xkbcomp_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_libxkbfile_jll"] -git-tree-sha1 = "4bcbf660f6c2e714f87e960a171b119d06ee163b" -uuid = "35661453-b289-5fab-8a00-3d9160c6a3a4" -version = "1.4.2+4" - -[[deps.Xorg_xkeyboard_config_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Xorg_xkbcomp_jll"] -git-tree-sha1 = "5c8424f8a67c3f2209646d4425f3d415fee5931d" -uuid = "33bec58e-1273-512f-9401-5d533626f822" -version = "2.27.0+4" - -[[deps.Xorg_xtrans_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "79c31e7844f6ecf779705fbc12146eb190b7d845" -uuid = "c5fb5394-a638-5e4d-96e5-b29de1b5cf10" -version = "1.4.0+3" - -[[deps.Zlib_jll]] -deps = ["Libdl"] -uuid = "83775a58-1f1d-513f-b197-d71354ab007a" -version = "1.2.12+3" - -[[deps.Zstd_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "e45044cd873ded54b6a5bac0eb5c971392cf1927" -uuid = "3161d3a3-bdf6-5164-811a-617609db77b4" -version = "1.5.2+0" - -[[deps.ZygoteRules]] -deps = ["MacroTools"] -git-tree-sha1 = "8c1a8e4dfacb1fd631745552c8db35d0deb09ea0" -uuid = "700de1a5-db45-46bc-99cf-38207098b444" -version = "0.2.2" - -[[deps.libaom_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "3a2ea60308f0996d26f1e5354e10c24e9ef905d4" -uuid = "a4ae2306-e953-59d6-aa16-d00cac43593b" -version = "3.4.0+0" - -[[deps.libass_jll]] -deps = ["Artifacts", "Bzip2_jll", "FreeType2_jll", "FriBidi_jll", "HarfBuzz_jll", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "5982a94fcba20f02f42ace44b9894ee2b140fe47" -uuid = "0ac62f75-1d6f-5e53-bd7c-93b484bb37c0" -version = "0.15.1+0" - -[[deps.libblastrampoline_jll]] -deps = ["Artifacts", "Libdl", "OpenBLAS_jll"] -uuid = "8e850b90-86db-534c-a0d3-1478176c7d93" -version = "5.1.1+0" - -[[deps.libfdk_aac_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "daacc84a041563f965be61859a36e17c4e4fcd55" -uuid = "f638f0a6-7fb0-5443-88ba-1cc74229b280" -version = "2.0.2+0" - -[[deps.libpng_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Zlib_jll"] -git-tree-sha1 = "94d180a6d2b5e55e447e2d27a29ed04fe79eb30c" -uuid = "b53b4c65-9356-5827-b1ea-8c7a1a84506f" -version = "1.6.38+0" - -[[deps.libvorbis_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Ogg_jll", "Pkg"] -git-tree-sha1 = "b910cb81ef3fe6e78bf6acee440bda86fd6ae00c" -uuid = "f27f6e37-5d2b-51aa-960f-b287f2bc3b7a" -version = "1.3.7+1" - -[[deps.nghttp2_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "8e850ede-7688-5339-a07c-302acd2aaf8d" -version = "1.48.0+0" - -[[deps.p7zip_jll]] -deps = ["Artifacts", "Libdl"] -uuid = "3f19e933-33d8-53b3-aaab-bd5110c3b7a0" -version = "17.4.0+0" - -[[deps.x264_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "4fea590b89e6ec504593146bf8b988b2c00922b2" -uuid = "1270edf5-f2f9-52d2-97e9-ab00b5d0237a" -version = "2021.5.5+0" - -[[deps.x265_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "ee567a171cce03570d77ad3a43e90218e38937a9" -uuid = "dfaa095f-4041-5dcd-9319-2fabd8486b76" -version = "3.5.0+0" - -[[deps.xkbcommon_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg", "Wayland_jll", "Wayland_protocols_jll", "Xorg_libxcb_jll", "Xorg_xkeyboard_config_jll"] -git-tree-sha1 = "ece2350174195bb31de1a63bea3a41ae1aa593b6" -uuid = "d8fb68d0-12a3-5cfd-a85a-d49703b185fd" -version = "0.9.1+5" -""" - -# ╔═╡ Cell order: -# ╟─bce03358-19c9-11ed-31d9-5b0929af50b6 -# ╟─0a8fff98-24fd-49d6-a6b2-061e6350350b -# ╟─9810605e-586b-4f38-a43c-4240cb91e154 -# ╟─ada4ad28-358e-4144-9d5c-f3b1d27deff1 -# ╠═7a189076-f53f-48ed-ace2-ffbcc287ff6f -# ╟─d12ed6f0-b5c7-4492-9cd3-7ac2a6afafcd -# ╠═1068259e-a7f6-4a56-b526-59e080c54d27 -# ╟─60a5cad4-c676-4334-8cbe-47877a68943f -# ╟─0c70c6be-518b-4ba4-bd69-cc34d2217077 -# ╟─cd76fa94-d0d7-43bb-8221-2a4dafa8af53 -# ╟─e2918ef9-7f86-4d3b-93cb-65b8b5f48987 -# ╟─1f27c1d3-a4ee-4278-8140-d17d5c0d31c9 -# ╟─8b73706e-fe00-4489-8095-b3ec4528c58b -# ╠═6d2af85d-8c9e-4da7-8a38-6c0df102f954 -# ╟─8a8d8eb9-9cea-43f0-9607-9d3ca908c370 -# ╠═41a3984c-aee4-494f-8ba2-69c0274185ed -# ╠═e1e43074-9e5f-4516-bf0d-0ce4209afb6c -# ╠═15b2d945-4e78-4c41-9712-5d623b15914e -# ╠═5e5fdd62-ac1c-4ef6-a5a4-64ffe441b496 -# ╟─bdcc9726-d1fd-4d34-987e-925e1a96e58f -# ╟─fd9d6126-d764-40f5-9a4d-fda49a0962a9 -# ╟─bea7b8a5-f20a-4de1-8358-8697dc525aa3 -# ╠═69258680-fc21-40ca-998a-1a81279342ea -# ╟─be4d04ff-9ae8-40c6-ae7b-9ec29cd23b43 -# ╟─a84e1f2f-fdde-432f-89d3-265480ef9f53 -# ╟─44ccb675-a657-4fe8-934f-ddf29cb78f74 -# ╟─3e45f16f-ea6c-4960-98b7-1e642fb919c1 -# ╠═2a632fe1-698f-4265-8509-453ee7827ae6 -# ╟─922704a0-b0c9-4fe0-a0fb-3ab58a7f01d9 -# ╟─68b88445-fb94-4d26-a723-234b3045ca54 -# ╟─39c43d27-6806-4fb6-a0e8-5f41ae0ee94e -# ╟─436f0628-ee73-4045-82f3-6d785b5ba51f -# ╠═74a2053f-ef53-41df-8afc-997c166e6f67 -# ╟─e47c4ad6-17e4-4265-bee2-738b81e61696 -# ╟─8b56260f-2e42-4a89-a1c0-bf856b9f75d3 -# ╠═40db5082-3558-4fd4-ab47-1127f6d67e38 -# ╠═fbcdbc4e-f55b-4bf8-a10d-42f2627dbfdb -# ╟─8c73a18f-55a1-4740-8795-5bbb6ff425de -# ╠═920b9b1f-b56d-465c-bce2-e08530ec4bb4 -# ╠═0ca3c752-627f-40ce-ac6c-d10fc90d4663 -# ╟─a84de1b9-3c27-4b63-822f-f454b7d3098b -# ╟─bd11a4c4-1f2b-4d3c-8e3f-8382dd9f3b3c -# ╠═244ba3cf-63ba-4501-8e88-f71c95c15a7c -# ╠═c83f3735-6aba-4183-b010-5f21cd2ff968 -# ╠═53c5b238-61fd-4ef3-9194-b076b3434b16 -# ╟─0c34decf-ee35-4f9d-bf83-cfff75f8ff3b -# ╟─f092a42e-16e9-45ac-88cd-133a92402ff6 -# ╟─59245146-ef30-4df1-9ac3-776871e5d062 -# ╠═ea897f9a-89ff-421c-989a-b5f395cec705 -# ╠═78d6fe62-432b-49f3-b38f-0f6f6f5a04ed -# ╠═c92f0602-9a6c-4e2c-8a28-2a870d332fe4 -# ╠═82fc962c-a172-47ef-a86c-fa49bace3567 -# ╠═8a21c570-9bfe-4f66-9157-1b0dc4028ef4 -# ╠═f9b3916a-d4b2-4e6b-9a7d-be077fd45ac0 -# ╟─00000000-0000-0000-0000-000000000001 -# ╟─00000000-0000-0000-0000-000000000002 diff --git a/lectures/lecture_mcmc2.jl b/lectures/lecture_mcmc2.jl index a129aa6..8940af3 100644 --- a/lectures/lecture_mcmc2.jl +++ b/lectures/lecture_mcmc2.jl @@ -56,7 +56,6 @@ md""" # More on MCMC -* Improving sample quality * MCMC diagnosis @@ -407,7 +406,7 @@ md"**Summary statistics with MH chain of ``\sigma^2_q=20.0``**" # ╔═╡ 68c98e53-7ac3-4832-a7dd-97459a89d7cb md""" -# Other MCMC samplers +# Other MCMC samplers* """ # ╔═╡ b29597f1-3fd7-4b44-9097-7c1dc1b7629b @@ -595,7 +594,7 @@ surface(-9:0.1:9, -6:0.1:6, (x,y) -> -pdf(d, [x,y]), legend=false, title="Negati # ╔═╡ ba2545d4-cc39-4069-b6a4-a60f15911cec md""" - +## More details* At each iteration,