Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dice Experiments on Varience and Expectation #28

Merged
merged 2 commits into from
Jul 8, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions docs/_data/sidebars/home_sidebar.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ entries:
- output: web,pdf
title: Design Document
url: /design_document
- output: web,pdf
title: Dice Experiments
url: /dice_experiments
- output: web,pdf
title: Function Approximation
url: /function_approximation
Expand Down
249 changes: 249 additions & 0 deletions docs/dice_experiments.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,249 @@
---

title: Dice Experiments

keywords: fastai
sidebar: home_sidebar

summary: "Probability on Dice"
description: "Probability on Dice"
---
<!--

#################################################
### THIS FILE WAS AUTOGENERATED! DO NOT EDIT! ###
#################################################
# file to edit: notebooks/dice_experiments.ipynb
# command to build the docs after a change: nbdev_build_docs

-->

<div class="container" id="notebook-container">

{% raw %}

<div class="cell border-box-sizing code_cell rendered">

</div>
{% endraw %}

{% raw %}

<div class="cell border-box-sizing code_cell rendered">

</div>
{% endraw %}

<div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<h3 id="Standard-Deviation-and-Expectation">Standard Deviation and Expectation<a class="anchor-link" href="#Standard-Deviation-and-Expectation"> </a></h3>
</div>
</div>
</div>
<div class="cell border-box-sizing text_cell rendered"><div class="inner_cell">
<div class="text_cell_render border-box-sizing rendered_html">
<p>Q: If you had a 2 die (one regular and one loaded (as described by the table below)
What is the expected value and the standard deviation of each number rolled?</p>
<p>For the biased die:</p>
<ul>
<li>P(1) = 1/12 </li>
<li>P(2) = 1/12 </li>
<li>P(3) = 1/3 </li>
<li>P(4) = 1/3 </li>
<li>P(5) = 1/12 </li>
<li>P(6) = 1/12 </li>
</ul>

</div>
</div>
</div>
{% raw %}

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

<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="k">def</span> <span class="nf">get_loaded_die_prob</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
<span class="n">probs</span> <span class="o">=</span> <span class="p">{</span>
<span class="mi">1</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span>
<span class="mi">2</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span>
<span class="mi">3</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span>
<span class="mi">4</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span>
<span class="mi">5</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span>
<span class="mi">6</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">probs</span><span class="p">[</span><span class="n">x</span><span class="p">]</span>

<span class="k">def</span> <span class="nf">get_fair_die_prob</span><span class="p">(</span><span class="n">x</span><span class="p">):</span>
<span class="k">assert</span> <span class="nb">isinstance</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="nb">int</span><span class="p">)</span>
<span class="n">probs</span> <span class="o">=</span> <span class="p">{</span>
<span class="mi">1</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">,</span>
<span class="mi">2</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">,</span>
<span class="mi">3</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">,</span>
<span class="mi">4</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">,</span>
<span class="mi">5</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">,</span>
<span class="mi">6</span><span class="p">:</span> <span class="mi">1</span><span class="o">/</span><span class="mi">6</span><span class="p">,</span>
<span class="p">}</span>
<span class="k">return</span> <span class="n">probs</span><span class="p">[</span><span class="n">x</span><span class="p">]</span>

<span class="n">fair_die_probs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="mi">1</span><span class="o">/</span><span class="mi">6</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">6</span><span class="p">)])</span>
<span class="n">loaded_die_probs</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">asarray</span><span class="p">([</span><span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">,</span> <span class="mi">1</span><span class="o">/</span><span class="mi">12</span><span class="p">])</span>
<span class="n">loaded_die_probs</span><span class="p">,</span> <span class="n">fair_die_probs</span>
</pre></div>

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

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

<div class="output_area">



<div class="output_text output_subarea output_execute_result">
<pre>(array([0.08333333, 0.08333333, 0.33333333, 0.33333333, 0.08333333,
0.08333333]),
array([0.16666667, 0.16666667, 0.16666667, 0.16666667, 0.16666667,
0.16666667]))</pre>
</div>

</div>

</div>
</div>

</div>
{% endraw %}

{% raw %}

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

<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">###########################</span>
<span class="c1"># Analytical Calculation </span>
<span class="c1">###########################</span>

<span class="c1"># expected value calculations</span>
<span class="n">fair_expected_value</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">stop</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span><span class="n">num</span><span class="o">=</span><span class="mi">6</span><span class="p">),</span> <span class="n">fair_die_probs</span><span class="p">)</span>
<span class="n">loaded_expected_value</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">dot</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">stop</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span><span class="n">num</span><span class="o">=</span><span class="mi">6</span><span class="p">),</span> <span class="n">loaded_die_probs</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> expected value of fair die: </span><span class="si">{</span><span class="n">fair_expected_value</span><span class="si">}</span><span class="s2"></span>
<span class="s2"> expected value loaded die: </span><span class="si">{</span><span class="n">loaded_expected_value</span><span class="si">}</span><span class="s2"></span>
<span class="s2"> &quot;&quot;&quot;</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="o">*</span><span class="mi">40</span><span class="p">)</span>
<span class="c1"># varience calculations; varience = E[(x-mean)^2]</span>
<span class="n">loaded_die_variences</span> <span class="o">=</span> <span class="p">((</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stop</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="mi">6</span><span class="p">)</span> <span class="o">-</span> <span class="n">loaded_expected_value</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">loaded_die_probs</span>
<span class="n">fair_die_variences</span> <span class="o">=</span> <span class="p">((</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="n">stop</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="mi">6</span><span class="p">)</span> <span class="o">-</span> <span class="n">fair_expected_value</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span><span class="p">)</span> <span class="o">*</span> <span class="n">fair_die_probs</span>

<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot;</span>
<span class="s2"> fair die variences: </span><span class="si">{</span><span class="n">fair_die_variences</span><span class="si">}</span><span class="s2"></span>
<span class="s2"> loaded die variences: </span><span class="si">{</span><span class="n">loaded_die_variences</span><span class="si">}</span><span class="s2"></span>
<span class="s2"> </span>
<span class="s2">&quot;&quot;&quot;</span><span class="p">)</span>

<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;=&quot;</span><span class="o">*</span><span class="mi">40</span><span class="p">)</span>
<span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;&quot;&quot; </span>
<span class="s2">fair die:</span>
<span class="s2"> total varience = </span><span class="si">{</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">fair_die_variences</span><span class="p">)</span><span class="si">}</span><span class="s2"></span>
<span class="s2"> total std dev = </span><span class="si">{</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">fair_die_variences</span><span class="p">)</span><span class="o">**</span><span class="mf">0.5</span><span class="si">}</span><span class="s2"></span>

<span class="s2">loaded die:</span>
<span class="s2"> total varience = </span><span class="si">{</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">loaded_die_variences</span><span class="p">)</span><span class="si">}</span><span class="s2"></span>
<span class="s2"> total std dev = </span><span class="si">{</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">loaded_die_variences</span><span class="p">)</span><span class="o">**</span><span class="mf">0.5</span><span class="si">}</span><span class="s2"></span>

<span class="s2">&quot;&quot;&quot;</span><span class="p">)</span>
</pre></div>

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

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

<div class="output_area">

<div class="output_subarea output_stream output_stdout output_text">
<pre>
expected value of fair die: 3.5
expected value loaded die: 3.4999999999999996

========================================

fair die variences: [1.04166667 0.375 0.04166667 0.04166667 0.375 1.04166667]
loaded die variences: [0.52083333 0.1875 0.08333333 0.08333333 0.1875 0.52083333]


========================================

fair die:
total varience = 2.9166666666666665
total std dev = 1.707825127659933

loaded die:
total varience = 1.5833333333333333
total std dev = 1.2583057392117916


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

</div>
</div>

</div>
{% endraw %}

{% raw %}

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

<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1">###########################</span>
<span class="c1"># Emperical Calculation </span>
<span class="c1">###########################</span>
<span class="n">NUM_TRIALS</span> <span class="o">=</span> <span class="mi">1_000_000</span>
<span class="n">fair_emp_varience</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">stop</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span><span class="n">num</span><span class="o">=</span><span class="mi">6</span><span class="p">),</span> <span class="n">p</span><span class="o">=</span><span class="n">fair_die_probs</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">NUM_TRIALS</span><span class="p">))</span><span class="o">**</span><span class="mi">2</span>
<span class="n">loaded_emp_varience</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">std</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">random</span><span class="o">.</span><span class="n">choice</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span><span class="n">stop</span><span class="o">=</span><span class="mi">6</span><span class="p">,</span><span class="n">num</span><span class="o">=</span><span class="mi">6</span><span class="p">),</span> <span class="n">p</span><span class="o">=</span><span class="n">loaded_die_probs</span><span class="p">,</span> <span class="n">size</span><span class="o">=</span><span class="n">NUM_TRIALS</span><span class="p">))</span><span class="o">**</span><span class="mi">2</span>
</pre></div>

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

</div>
{% endraw %}

{% raw %}

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

<div class="inner_cell">
<div class="input_area">
<div class=" highlight hl-ipython3"><pre><span></span><span class="c1"># checksum</span>
<span class="n">epsilon</span> <span class="o">=</span> <span class="mf">1e-2</span>
<span class="k">assert</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">fair_die_variences</span><span class="p">)</span><span class="o">-</span><span class="n">fair_emp_varience</span> <span class="o">&lt;</span> <span class="n">epsilon</span>
<span class="k">assert</span> <span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">loaded_die_variences</span><span class="p">)</span><span class="o">-</span><span class="n">loaded_emp_varience</span> <span class="o">&lt;</span> <span class="n">epsilon</span>
</pre></div>

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

</div>
{% endraw %}

</div>


1 change: 1 addition & 0 deletions docs/sidebar.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"Custom Tensorflow Training": "/custom_tf_training",
"Data Generator": "/data_generator",
"Design Document": "/design_document",
"Dice Experiments": "/dice_experiments",
"Function Approximation": "/function_approximation",
"Kelly Criterion": "/kelly_criterion",
"Transformers": "/transformers"
Expand Down
1 change: 1 addition & 0 deletions jovsatools/_nbdev.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
modules = ["custom_pytorch_training.py",
"custom_tf_training.py",
"data_generator.py",
"dice_experiments.py",
"function_approximation.py"]

doc_url = "https://jovsa.github.io/jovsatools/"
Expand Down
9 changes: 9 additions & 0 deletions jovsatools/dice_experiments.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# AUTOGENERATED! DO NOT EDIT! File to edit: notebooks/dice_experiments.ipynb (unless otherwise specified).

__all__ = []

# Cell
from nbdev.showdoc import *
import jovsatools
import fastcore
import numpy as np
Loading