Skip to content

Commit

Permalink
Ch15 done
Browse files Browse the repository at this point in the history
  • Loading branch information
Shmuma committed May 21, 2022
1 parent 424eac3 commit 671f590
Show file tree
Hide file tree
Showing 2 changed files with 212 additions and 18 deletions.
125 changes: 107 additions & 18 deletions 15-Chapter 15. Missing Data and Other Opportunities.ipynb
Original file line number Diff line number Diff line change
Expand Up @@ -1641,7 +1641,7 @@
},
{
"cell_type": "markdown",
"id": "1287344d",
"id": "a53f3497",
"metadata": {},
"source": [
"Code 15.21"
Expand All @@ -1650,7 +1650,7 @@
{
"cell_type": "code",
"execution_count": 28,
"id": "ae9de9c9",
"id": "6968b169",
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -2052,7 +2052,7 @@
},
{
"cell_type": "markdown",
"id": "5ce07890",
"id": "d2e01f69",
"metadata": {},
"source": [
"Code 15.22"
Expand All @@ -2061,7 +2061,7 @@
{
"cell_type": "code",
"execution_count": 29,
"id": "27ba1451",
"id": "8beb97ac",
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -2139,7 +2139,7 @@
},
{
"cell_type": "markdown",
"id": "af59bfc6",
"id": "9908610d",
"metadata": {},
"source": [
"Code 15.23"
Expand All @@ -2148,7 +2148,7 @@
{
"cell_type": "code",
"execution_count": 30,
"id": "fc7f834a",
"id": "8ba67b3b",
"metadata": {},
"outputs": [],
"source": [
Expand All @@ -2157,7 +2157,7 @@
},
{
"cell_type": "markdown",
"id": "11f4dca8",
"id": "08a62cb5",
"metadata": {},
"source": [
"Code 15.24"
Expand All @@ -2166,7 +2166,7 @@
{
"cell_type": "code",
"execution_count": 32,
"id": "d910e888",
"id": "8db73230",
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -2212,7 +2212,7 @@
},
{
"cell_type": "markdown",
"id": "9c040ae8",
"id": "57cb4891",
"metadata": {},
"source": [
"Code 15.25"
Expand All @@ -2221,7 +2221,7 @@
{
"cell_type": "code",
"execution_count": 33,
"id": "8ddc3bc2",
"id": "6b3b6426",
"metadata": {},
"outputs": [
{
Expand All @@ -2244,7 +2244,7 @@
},
{
"cell_type": "markdown",
"id": "915e8fe2",
"id": "c66e8146",
"metadata": {},
"source": [
"Code 15.26"
Expand All @@ -2253,7 +2253,7 @@
{
"cell_type": "code",
"execution_count": 34,
"id": "b8c2b7a7",
"id": "6ea6dd2b",
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -5775,7 +5775,7 @@
},
{
"cell_type": "markdown",
"id": "bc7f5d56",
"id": "1181d3bd",
"metadata": {},
"source": [
"Code 15.27"
Expand All @@ -5784,7 +5784,7 @@
{
"cell_type": "code",
"execution_count": 35,
"id": "fd8198a6",
"id": "4470b7ec",
"metadata": {},
"outputs": [
{
Expand All @@ -5810,7 +5810,7 @@
},
{
"cell_type": "markdown",
"id": "32258afa",
"id": "16896faf",
"metadata": {},
"source": [
"Code 15.28"
Expand All @@ -5819,7 +5819,7 @@
{
"cell_type": "code",
"execution_count": 36,
"id": "e0b63a88",
"id": "54b81b46",
"metadata": {},
"outputs": [
{
Expand Down Expand Up @@ -5871,16 +5871,105 @@
},
{
"cell_type": "markdown",
"id": "9913d4c2",
"id": "e9fa4fba",
"metadata": {},
"source": [
"# 15.3 Categorical errors and discrete absences"
]
},
{
"cell_type": "markdown",
"id": "23437726",
"metadata": {},
"source": [
"Code 15.29"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "09f7a634",
"metadata": {},
"outputs": [],
"source": [
"Random.seed!(9)\n",
"\n",
"N_houses = 100\n",
"α = 5\n",
"β = -3\n",
"k = 0.5\n",
"r = 0.2\n",
"\n",
"cat = rand(Bernoulli(k), N_houses)\n",
"notes = rand.([Poisson(α + β * c) for c ∈ cat])\n",
"R_C = rand(Bernoulli(r), N_houses)\n",
"\n",
"cat_obs = Vector{Int}(cat)\n",
"cat_obs[R_C] .= -9\n",
"\n",
"dat = (\n",
" notes = notes,\n",
" cat = cat_obs,\n",
" RC = R_C,\n",
" N = N_houses,\n",
");"
]
},
{
"cell_type": "markdown",
"id": "9ee9d9df",
"metadata": {},
"source": [
"Code 15.30"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "c6dd2fb2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"┌───────┬──────────────────────────────────────────────────────────┐\n",
"│\u001b[1m param \u001b[0m│\u001b[1m mean \u001b[0m\u001b[1m std \u001b[0m\u001b[1m 5.5% \u001b[0m\u001b[1m 50% \u001b[0m\u001b[1m 94.5% \u001b[0m\u001b[1m histogram \u001b[0m│\n",
"├───────┼──────────────────────────────────────────────────────────┤\n",
"│ a │ 1.55 0.0861 1.413 1.5511 1.6872 ▁▁▅█▅▁▁ │\n",
"│ b │ -0.2694 0.1358 -0.4872 -0.2687 -0.0541 ▁▁▁▂▄▇█▆▃▁▁▁ │\n",
"│ k │ 0.4639 0.0448 0.3926 0.4637 0.5344 ▁▂▇█▄▁▁ │\n",
"└───────┴──────────────────────────────────────────────────────────┘\n"
]
}
],
"source": [
"@model function m15_8(notes, cat, RC, N)\n",
" a ~ Normal()\n",
" b ~ Normal(0, 0.5)\n",
" k ~ Beta(2, 2)\n",
" λ = @. logistic(a + b * cat)\n",
" \n",
" for i ∈ eachindex(cat)\n",
" if !RC[i]\n",
" cat[i] ~ Bernoulli(k)\n",
" notes[i] ~ Poisson(λ[i])\n",
" else\n",
" Turing.@addlogprob! log(k) + poislogpdf(exp(a+b), notes[i])\n",
" Turing.@addlogprob! log(1-k) + poislogpdf(exp(a), notes[i])\n",
" end\n",
" end\n",
"end\n",
"\n",
"m15_8_ch = sample(m15_8(dat...), NUTS(), 10000)\n",
"m15_8_df = DataFrame(m15_8_ch)\n",
"precis(m15_8_df)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "d0026c60",
"id": "7012eac0",
"metadata": {},
"outputs": [],
"source": []
Expand Down
105 changes: 105 additions & 0 deletions docs/15-Chapter 15. Missing Data and Other Opportunities.html
Original file line number Diff line number Diff line change
Expand Up @@ -19129,6 +19129,111 @@ <h1 id="15.2-Missing-data">15.2 Missing data<a class="anchor-link" href="#15.2-M
<h1 id="15.3-Categorical-errors-and-discrete-absences">15.3 Categorical errors and discrete absences<a class="anchor-link" href="#15.3-Categorical-errors-and-discrete-absences">&#182;</a></h1>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Code 15.29</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[37]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-julia"><pre><span></span><span class="n">Random</span><span class="o">.</span><span class="n">seed!</span><span class="p">(</span><span class="mi">9</span><span class="p">)</span>

<span class="n">N_houses</span> <span class="o">=</span> <span class="mi">100</span>
<span class="n">α</span> <span class="o">=</span> <span class="mi">5</span>
<span class="n">β</span> <span class="o">=</span> <span class="o">-</span><span class="mi">3</span>
<span class="n">k</span> <span class="o">=</span> <span class="mf">0.5</span>
<span class="n">r</span> <span class="o">=</span> <span class="mf">0.2</span>

<span class="n">cat</span> <span class="o">=</span> <span class="n">rand</span><span class="p">(</span><span class="n">Bernoulli</span><span class="p">(</span><span class="n">k</span><span class="p">),</span> <span class="n">N_houses</span><span class="p">)</span>
<span class="n">notes</span> <span class="o">=</span> <span class="n">rand</span><span class="o">.</span><span class="p">([</span><span class="n">Poisson</span><span class="p">(</span><span class="n">α</span> <span class="o">+</span> <span class="n">β</span> <span class="o">*</span> <span class="n">c</span><span class="p">)</span> <span class="k">for</span> <span class="n">c</span> <span class="o">∈</span> <span class="n">cat</span><span class="p">])</span>
<span class="n">R_C</span> <span class="o">=</span> <span class="n">rand</span><span class="p">(</span><span class="n">Bernoulli</span><span class="p">(</span><span class="n">r</span><span class="p">),</span> <span class="n">N_houses</span><span class="p">)</span>

<span class="n">cat_obs</span> <span class="o">=</span> <span class="kt">Vector</span><span class="p">{</span><span class="kt">Int</span><span class="p">}(</span><span class="n">cat</span><span class="p">)</span>
<span class="n">cat_obs</span><span class="p">[</span><span class="n">R_C</span><span class="p">]</span> <span class="o">.=</span> <span class="o">-</span><span class="mi">9</span>

<span class="n">dat</span> <span class="o">=</span> <span class="p">(</span>
<span class="n">notes</span> <span class="o">=</span> <span class="n">notes</span><span class="p">,</span>
<span class="n">cat</span> <span class="o">=</span> <span class="n">cat_obs</span><span class="p">,</span>
<span class="n">RC</span> <span class="o">=</span> <span class="n">R_C</span><span class="p">,</span>
<span class="n">N</span> <span class="o">=</span> <span class="n">N_houses</span><span class="p">,</span>
<span class="p">);</span>
</pre></div>

</div>
</div>
</div>

</div>
<div class="cell border-box-sizing text_cell rendered"><div class="prompt input_prompt">
</div><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Code 15.30</p>

</div>
</div>
</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
<div class="prompt input_prompt">In&nbsp;[38]:</div>
<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-julia"><pre><span></span><span class="nd">@model</span> <span class="k">function</span> <span class="n">m15_8</span><span class="p">(</span><span class="n">notes</span><span class="p">,</span> <span class="n">cat</span><span class="p">,</span> <span class="n">RC</span><span class="p">,</span> <span class="n">N</span><span class="p">)</span>
<span class="n">a</span> <span class="o">~</span> <span class="n">Normal</span><span class="p">()</span>
<span class="n">b</span> <span class="o">~</span> <span class="n">Normal</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">)</span>
<span class="n">k</span> <span class="o">~</span> <span class="n">Beta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">2</span><span class="p">)</span>
<span class="n">λ</span> <span class="o">=</span> <span class="nd">@.</span> <span class="n">logistic</span><span class="p">(</span><span class="n">a</span> <span class="o">+</span> <span class="n">b</span> <span class="o">*</span> <span class="n">cat</span><span class="p">)</span>

<span class="k">for</span> <span class="n">i</span> <span class="o">∈</span> <span class="n">eachindex</span><span class="p">(</span><span class="n">cat</span><span class="p">)</span>
<span class="k">if</span> <span class="o">!</span><span class="n">RC</span><span class="p">[</span><span class="n">i</span><span class="p">]</span>
<span class="n">cat</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">~</span> <span class="n">Bernoulli</span><span class="p">(</span><span class="n">k</span><span class="p">)</span>
<span class="n">notes</span><span class="p">[</span><span class="n">i</span><span class="p">]</span> <span class="o">~</span> <span class="n">Poisson</span><span class="p">(</span><span class="n">λ</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">else</span>
<span class="n">Turing</span><span class="o">.</span><span class="nd">@addlogprob!</span> <span class="n">log</span><span class="p">(</span><span class="n">k</span><span class="p">)</span> <span class="o">+</span> <span class="n">poislogpdf</span><span class="p">(</span><span class="n">exp</span><span class="p">(</span><span class="n">a</span><span class="o">+</span><span class="n">b</span><span class="p">),</span> <span class="n">notes</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="n">Turing</span><span class="o">.</span><span class="nd">@addlogprob!</span> <span class="n">log</span><span class="p">(</span><span class="mi">1</span><span class="o">-</span><span class="n">k</span><span class="p">)</span> <span class="o">+</span> <span class="n">poislogpdf</span><span class="p">(</span><span class="n">exp</span><span class="p">(</span><span class="n">a</span><span class="p">),</span> <span class="n">notes</span><span class="p">[</span><span class="n">i</span><span class="p">])</span>
<span class="k">end</span>
<span class="k">end</span>
<span class="k">end</span>

<span class="n">m15_8_ch</span> <span class="o">=</span> <span class="n">sample</span><span class="p">(</span><span class="n">m15_8</span><span class="p">(</span><span class="n">dat</span><span class="o">...</span><span class="p">),</span> <span class="n">NUTS</span><span class="p">(),</span> <span class="mi">10000</span><span class="p">)</span>
<span class="n">m15_8_df</span> <span class="o">=</span> <span class="n">DataFrame</span><span class="p">(</span><span class="n">m15_8_ch</span><span class="p">)</span>
<span class="n">precis</span><span class="p">(</span><span class="n">m15_8_df</span><span class="p">)</span>
</pre></div>

</div>
</div>
</div>

<div class="output_wrapper">
<div class="output">


<div class="output_area">

<div class="prompt"></div>


<div class="output_subarea output_stream output_stdout output_text">
<pre>┌───────┬──────────────────────────────────────────────────────────┐
│<span class="ansi-bold"> param </span>│<span class="ansi-bold"> mean </span><span class="ansi-bold"> std </span><span class="ansi-bold"> 5.5% </span><span class="ansi-bold"> 50% </span><span class="ansi-bold"> 94.5% </span><span class="ansi-bold"> histogram </span>│
├───────┼──────────────────────────────────────────────────────────┤
│ a │ 1.55 0.0861 1.413 1.5511 1.6872 ▁▁▅█▅▁▁ │
│ b │ -0.2694 0.1358 -0.4872 -0.2687 -0.0541 ▁▁▁▂▄▇█▆▃▁▁▁ │
│ k │ 0.4639 0.0448 0.3926 0.4637 0.5344 ▁▂▇█▄▁▁ │
└───────┴──────────────────────────────────────────────────────────┘
</pre>
</div>
</div>

</div>
</div>

</div>
<div class="cell border-box-sizing code_cell rendered">
<div class="input">
Expand Down

0 comments on commit 671f590

Please sign in to comment.