{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 4 - Distributed information processing in hierarchies\n", "This notebook is part of the supplementary material for: \n", "Genewein T., Leibfried F., Grau-Moya J., Braun D.A. (2015) *Bounded rationality, abstraction and hierarchical decision-making: an information-theoretic optimality principle*, Frontiers in Robotics and AI. \n", "\n", "More information on how to run the notebook on the accompanying [github repsitory](https://github.com/tgenewein/BoundedRationalityAbstractionAndHierarchicalDecisionMaking) where you can also find updated versions of the code and notebooks.\n", "\n", "This notebook corresponds to Section 4 and reproduces Figures 9, and 10 of the paper." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Use this notebook to compare any two hierarchical cases (parallel, serial or general)\n", "\n", "\n", "Note that the notebook by default compares two parallel cases against each other, which is in correspondence with Section 4 of the paper. However, the notebook **is not limited to the parallel case** as it computes the parallel-case solutions through the general case by setting the inverse temperatures accordingly. The serial or general case can thus be easily reproduced with different settings of the $\\beta$-values." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Parallel information processing hierarchies\n", "\n", "Here, we design a two-level parallel information processing hierarchy. The hierarchy consists of high-level models $x$ that partition the search-space over $A$ according to $p(a|x)$. Based on this partitioning (which reduces the effective size of the search space over $a$), information about the current world-state $w$ is used to compute the behavior $p(a|w,x)$ on the low level of the hierarchy. Additionally, the correct model $x$ needs to be selected according to $w$ which leads to the model selctor $p(x|w)$. The low level of the hierarchy is designed as a bounded rational decision maker that uses the partitioning $p(a|x)$ as a prior.\n", "$$\\begin{align}\n", "&\\text{1. Selection of model (or expert):} & p(x|w) &\\\\\n", "&\\text{2. Prior knowledge of model (or expert):} & p(a|x) &\\\\\n", "&\\text{3. Bounded rational decision of model (or expert):} & p^*(a|w,x)&=\\frac{1}{Z(w,x)}p(a|x)e^{\\beta_3 U(w,a)}\n", "\\end{align}$$\n", "\n", "\n", "\n", "The two levels of the hierarchy allow to reduce the uncertainty over an action $a$, given a world-state $w$, in \n", "two steps\n", "\n", "$$\\underbrace{I(W,X;A)}_{\\text{total reduction}} = \\underbrace{I(X;A)}_{\\text{high-level}} + \\underbrace{I(W;A|X)}_{\\text{low-level}},$$\n", "\n", "which allows to distribute the total information processing load across both levels of the hierarchy.\n", "\n", "## Design of (bounded) optimal models and model-selector\n", "The parallel information processing hierarchy requires to specify the models $p(a|x)$ as well as the model selector $p(x|w)$. Below, we set up a variational problem that trades-off large expected utility against low information processing cost. Interestingly, the solution to the variational problem specifies the (bounded optimal) models and model selector.\n", "\n", "The optimization principle that leads to the bounded-optimal hierarchy trades off expected utility against the computational cost of model selection $I(W;X)$ and the cost of the low-level decision using the model as a prior $I(W;A|X)$:\n", "$$\\underset{p(x|w),p(a|w,x)}{\\operatorname{arg~max}}~\\mathbf{E}_{p(w,x,a)}[U(w,a)] - \\frac{1}{\\beta_1} I(W;X) - \\frac{1}{\\beta_3} I(W;A|X)$$\n", "\n", "The set of self-consistent solutions is given by:\n", "$$\\begin{align}\n", "p^*(x|w)&=\\frac{1}{Z(w)}p(x)\\exp \\left(\\beta_1 \\Delta F_{\\text{par}}(w,x)\\right)\\\\\n", "p(x)&=\\sum_w p(w)p^*(x|w) \\\\\n", "p^*(a|w,x)&=\\frac{1}{Z(w,x)}p^*(a|x)\\exp \\left( \\beta_3 U(w,a) \\right)\\\\\n", "p^*(a|x)&=\\sum_w p(w|x) p^*(a|w,x),\n", "\\end{align}$$\n", "where $Z(w)$ and $Z(w,x)$ denote the corresponding normalization constants or partition sums. $p(w|x)$ is given by Bayes' rule $p(w|x) = \\frac{p(w)p^*(x|w)}{p(x)}$ and $\\Delta F_{\\text{par}}(w,x)$ is the free energy difference of the low-level stage:\n", "$$ \\Delta F_{\\text{par}}(w,x):=\\mathbf{E}_{p^*(a|w,x)}[U(w,a)] - \\frac{1}{\\beta_3} D_{\\mathrm{KL}}(p^*(a|w,x)||p^*(a|x)).$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Illustrative example\n", "\n", "One key consequence of the bounded optimal solution for the models $p^*(a|x)$ is that they optimize the downstream free energy trade-off $\\Delta F_{\\text{par}}(w,x)$ of the low level of the hierarchy. The models are thus governed by the computational resources of the low level of the hierarchy as well as the utility function (the environment of the agent). We illustrate this below by comparing bounded optimal solutions for the hierarchy in two different environments where the only difference is $p(w)$ - the optimal models and model selector depend on $p(w)$ through the expected utility which is part of the free energy of the low-level stage." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING: replacing module RateDistortionDecisionMaking\n" ] }, { "data": { "text/plain": [ "RateDistortionDecisionMaking" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#only run this once\n", "include(\"RateDistortionDecisionMaking.jl\")" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [], "source": [ "using RateDistortionDecisionMaking, Distances, DataFrames, Colors, Gadfly, Distributions, Interact, Reactive\n", "\n", "#make the default plot size a bit larger\n", "set_default_plot_size(15cm, 12cm)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Medical system example - utility U(a,w)\n", "\n", "In a simplified environment only three kinds of diseases exist, but they come in different types\n", "* Heart disease\n", " * Type $h1$\n", " * Type $h2$\n", "* Lung disease 1\n", " * Type $l1$\n", " * Type $l2$\n", "* Lung disease 2\n", " * Type $l3$\n", " * Type $l4$\n", " \n", "The following treatments are available\n", "* General treatment heart: treat $h$\n", " * Specific treatement $h1$: treat $h1$\n", " * Specific treatement $h2$: treat $h2$\n", "* General treatment lung: treat $l$\n", " * Treatment lung disease 1: treat $l12$\n", " * Specific treatment $l1$: treat $l1$\n", " * Specific treatment $l2$: treat $l2$\n", " * Treatment lung disease 2: treat $l34$\n", " * Specific treatment $l3$: treat $l3$\n", " * Specific treatment $l4$: treat $l4$\n", " \n", "\n", "The specific treatements work best (leading to maximum utility) if applied to the correct disease but work worse than the general treatments if applied to the wrong disease type. For lung disease 1 and 2 there are treatments that work well for the corresponding sub-types ($l1$, $l2$ and $l3$, $l4$ respectively), but the treatements are less efficient than the specific-type treatments. The utility function is shown by evaluating the cell below.\n", "\n", "The goal is to design an optimal medical system that takes measurements to determine the disease type and then initiates a treatment. However, the budget for taking measurements is limited which means that not all specific disease types can be identified. Rather, the most important measurements must be taken first, in order to maximize therapy success (expected utility). \n", "The system consists of a two level hierarchy: an automated system that can take standard measurements cheaply and then forms a first diagnosis $x$ according to $p^*(x|w)$. This first diagnosis is the basis for sending a patient to a specialist (with prior knowledge $p^*(a|x)$). The specialist can take additional measurements to determine the final treatment $p^*(a|w,x)$. See main paper for more details on the example.\n", "\n", "\n", "### [Interact] Change the example by loading a different utility function (requires some work)\n", "... use any of the examples provided in the other notebooks by changing lines 2 and 3 below accordingly (see the other notebooks). Additionally you might want to adapt axis labels ect. in all code-cells below (which is a bit of work). " ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " Disease type w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 3\n", " 0\n", " 2\n", " 1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " U(a,w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Treatment a\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n" ], "text/html": [ "\n", "\n", "\n", " \n", " Disease type w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 3\n", " 0\n", " 2\n", " 1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " U(a,w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Treatment a\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n", "\n", "\n" ], "text/plain": [ "Plot(...)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#set up medical diagnosis system example\n", "include(\"MedicalSystemExample.jl\")\n", "w_values, w_strings, a_values, a_strings, p_w_uni, U = setup_medical_example()\n", "\n", "\n", "numa = length(a_strings)\n", "a_vec = collect(1:numa)\n", "\n", "numw = length(w_strings)\n", "w_vec = collect(1:numw)\n", "\n", "#pre-compute utility\n", "U_pre, Umax = setuputilityarrays(a_values,w_values,U)\n", "\n", "#visualize utility\n", "\n", "plt_utility = visualizeMatrix(U_pre, w_values, a_values, w_strings, a_strings, xlabel=\"Disease type w\",\n", " ylabel=\"Treatment a\", legendlabel=\"U(a,w)\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Uniform vs. non-uniform $p(w)$\n", "\n", "We design two possible environments to see how the environment affects the formation of bounded optimal hierarchies. In environment $p_1(w)$ all disease types occur with equal probability - in environment $p_2(w)$ both types of the heart disease have an increased chance of occuring." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p2(w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " Disease type w\n", " \n", "\n", "\n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p1(w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " Disease type w\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#nonuniform p_w\n", "p_w_nonuni = medical_nonuniform_pw(numw)\n", "\n", "plt_pw_uni = visualizeBAmarginal(p_w_uni, w_vec, w_strings, alabel=\"Disease type w\", legendlabel=\"p1(w)\")\n", "plt_pw_nonuni = visualizeBAmarginal(p_w_nonuni, w_vec, w_strings, alabel=\"Disease type w\", legendlabel=\"p2(w)\")\n", "\n", "display(hstack(plt_pw_uni, plt_pw_nonuni))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## [Interact] Set parameters to compare the two cases here:\n", "When changing the parameters make sure to re-run the corresponding cells below - in case of doubt simply re-run all cells below.\n", "\n", "You can change the inverse temperatures to make information processing on either level of the hierarchy cheaper or more expensive or you can switch to a different case (serial or general). Additionally, you can set a different $p(w)$ for each case and you can change the $|\\mathcal{X}|$ the cardinality of $X$ which translates into the number of experts (or different models). Note that the cardinality of $X$ is an upper bound for $H(X)$ which in turn is an upper bound for $I(X;W)$ and $I(A;X)$ - this means that the capacity (that is the maximally possible rate) of these two channels can be limited through the cardinality of $X$. This is not the same as limiting the actual rate on these channels by adjusting $\\beta_1$ or $\\beta_2$." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "10000" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#inverse temperatures\n", "#β1: model selection -> inv. price for automated diagnosis (I(X;W))\n", "#β2=∞: high-level decision -> inv. price for I(A;X)\n", "#β3: low-level decision -> inv. price for manual diagnosis by specialist (I(A;W|X))\n", "\n", "#parameters for case 1 - hierarchical, uniform environment\n", "β1 = 1#2.5\n", "β2 = Inf \n", "β3 = 0.9#1\n", "pw = p_w_uni\n", "#cardinality of x - number of different kinds of specialists\n", "numx = 3\n", "\n", "\n", "#paremters for case 2 - hierarchical, nonuniform environment\n", "β1_n = 1#2.5\n", "β2_n = Inf \n", "β3_n = 0.9#1\n", "pw_n = p_w_nonuni\n", "#cardinality of x - number of different kinds of specialists\n", "numx_n = 3\n", "\n", "#paremters for case 2 - sequential, uniform environment\n", "#β1_n = 10\n", "#β2_n = 10 \n", "#β3_n = 0\n", "#pw_n = p_w_uni\n", "\n", "\n", "#parameters for iteration of self-consistent equations\n", "ε = 0.0001 #convergence critetion for BAiterations\n", "maxiter = 10000 #maximum number of BA iterations" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Iterating the self-consistent equations to compute bounded optimal solutions" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Case 1" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x_vec = collect(1:numx)\n", "x_strings = map((x)->\"x\"*string(x), x_vec)\n", "\n", "\n", "#This function performs Blahut-Arimoto iterations for the three-variable general case\n", "px, pa, pxgw, pagx, pagxw, pagw, performance_df = threevarBAiterations(numx, β1, β2, β3, U_pre, pw, ε, maxiter,\n", " compute_performance=true, performance_as_dataframe=true,\n", " init_pogw_sparse = true, init_pogw_uniformly = false,\n", " init_pagow_uniformly = true);" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#call the routine that creates plots for all the probability distributions\n", "plt_px, plt_pa, plt_pxgw, plt_pagx, plt_pagw, dpdown, plt_pagxw_vis = visualize_three_var_BAsolution(px, pa,\n", " pxgw, pagx, pagxw, pagw,\n", " x_vec, a_vec, w_vec,\n", " x_strings, a_strings, w_strings, \n", " olabel_string=\"x\", alabel_string=\"a\", wlabel_string=\"w\")\n", "; #suppress output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Case 2" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [], "source": [ "x_vec_n = collect(1:numx_n)\n", "x_strings_n = map((x)->\"x\"*string(x), x_vec_n)\n", "\n", "#This function performs Blahut-Arimoto iterations for the three-variable general case\n", "px_n, pa_n, pxgw_n, pagx_n, pagxw_n, pagw_n, performance_df_n = threevarBAiterations(numx_n, β1_n, β2_n, β3_n, U_pre, pw_n, ε, maxiter,\n", " compute_performance=true, performance_as_dataframe=true,\n", " init_pogw_sparse = true, init_pogw_uniformly = false,\n", " init_pagow_uniformly = true);\n", "\n", "\n", "#call the routine that creates plots for all the probability distributions\n", "plt_px_n, plt_pa_n, plt_pxgw_n, plt_pagx_n, plt_pagw_n, dpdown_n, plt_pagxw_vis_n = visualize_three_var_BAsolution(px_n, pa_n,\n", " pxgw_n, pagx_n, pagxw_n, pagw_n,\n", " x_vec_n, a_vec, w_vec,\n", " x_strings_n, a_strings, w_strings, \n", " olabel_string=\"x\", alabel_string=\"a\",\n", " wlabel_string=\"w\")\n", "\n", "; #suppress output" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Visualize case 1 (left column) and case 2 (right column)\n", "\n", "**Note that $X$ is labeled here with the general term \"Observation\" but of course it indicates the first diagnosis (or model) in this example**" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(x|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " Observation x\n", " \n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(x|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " Observation x\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", " Observation x\n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|x)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", " \n", " Observation x\n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|x)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#visualize p(x|w)\n", "display(hstack(plt_pxgw,plt_pxgw_n))\n", "#visualize p(a|x)\n", "display(hstack(plt_pagx,plt_pagx_n))\n", "#visualize p(a|w)\n", "display(hstack(plt_pagw,plt_pagw_n))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $p(a|x,w)$ case 1" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [], "text/plain": [ "Interact.Options{:Dropdown,ASCIIString}([Reactive.Input{ASCIIString}] h1,\"World state w\",\"h1\",\"h1\",Interact.OptionDict(Any[\"h1\",\"h2\",\"l1\",\"l2\",\"l3\",\"l4\"],Dict{Any,Any}(\"h1\"=>\"h1\",\"h2\"=>\"h2\",\"l2\"=>\"l2\",\"l4\"=>\"l4\",\"l3\"=>\"l3\",\"l1\"=>\"l1\")),Any[],Any[])" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " Observation x\n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|x,w=h1)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n" ], "text/html": [ "
" ], "text/plain": [ "Plot(...)" ] }, "metadata": { "comm_id": "6dcd5e45-a869-4a32-a948-5af4a1aa9ec0", "reactive": true }, "output_type": "display_data" } ], "source": [ "#visualize p(a|x,w)\n", "display(dpdown)\n", "display(plt_pagxw_vis)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you see the drowpdown-box but not the plot and ``\"Javascript error adding output!\"``, try selecting another $w$ with the dropdwon once, then the plot should appear.\n", "\n", "If this does not work (i.e. kernel is busy with this cell but nothing ever happens), try ckecking out the most current version of Interact with: `Pkg.checkout(\"Interact\")` in a Julia console. You can undo this and go back to the latest released version with `Pkg.free(\"Interact\")`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $p(a|x,w)$ case 2" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [], "text/plain": [ "Interact.Options{:Dropdown,ASCIIString}([Reactive.Input{ASCIIString}] h1,\"World state w\",\"h1\",\"h1\",Interact.OptionDict(Any[\"h1\",\"h2\",\"l1\",\"l2\",\"l3\",\"l4\"],Dict{Any,Any}(\"h1\"=>\"h1\",\"h2\"=>\"h2\",\"l2\"=>\"l2\",\"l4\"=>\"l4\",\"l3\"=>\"l3\",\"l1\"=>\"l1\")),Any[],Any[])" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/svg+xml": [ "\n", "\n", "\n", " \n", " Observation x\n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|x,w=h1)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", "\n", " \n", "\n", "\n" ], "text/html": [ "
" ], "text/plain": [ "Plot(...)" ] }, "metadata": { "comm_id": "9909a049-38b6-4a90-888a-d5ba5fa1e03f", "reactive": true }, "output_type": "display_data" } ], "source": [ "#visualize p(a|x,w)\n", "display(dpdown_n)\n", "display(plt_pagxw_vis_n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you see the drowpdown-box but not the plot and ``\"Javascript error adding output!\"``, try selecting another $w$ with the dropdwon once, then the plot should appear.\n", "\n", "If this does not work (i.e. kernel is busy with this cell but nothing ever happens), try ckecking out the most current version of Interact with: `Pkg.checkout(\"Interact\")` in a Julia console. You can undo this and go back to the latest released version with `Pkg.free(\"Interact\")`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Compare performance measures case 1 (left column) and case 2 (right column)\n", "\n", "**! Note that in the legends below $O$ is used instead of $X$**" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " I(O;W)\n", " I(A;O)\n", " I(A;W|O)\n", " I(A;W)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -2.5\n", " -2.0\n", " -1.5\n", " -1.0\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " 1.5\n", " 2.0\n", " 2.5\n", " 3.0\n", " 3.5\n", " 4.0\n", " 4.5\n", " -2.0\n", " -1.9\n", " -1.8\n", " -1.7\n", " -1.6\n", " -1.5\n", " -1.4\n", " -1.3\n", " -1.2\n", " -1.1\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " 2.1\n", " 2.2\n", " 2.3\n", " 2.4\n", " 2.5\n", " 2.6\n", " 2.7\n", " 2.8\n", " 2.9\n", " 3.0\n", " 3.1\n", " 3.2\n", " 3.3\n", " 3.4\n", " 3.5\n", " 3.6\n", " 3.7\n", " 3.8\n", " 3.9\n", " 4.0\n", " -2\n", " 0\n", " 2\n", " 4\n", " -2.0\n", " -1.8\n", " -1.6\n", " -1.4\n", " -1.2\n", " -1.0\n", " -0.8\n", " -0.6\n", " -0.4\n", " -0.2\n", " 0.0\n", " 0.2\n", " 0.4\n", " 0.6\n", " 0.8\n", " 1.0\n", " 1.2\n", " 1.4\n", " 1.6\n", " 1.8\n", " 2.0\n", " 2.2\n", " 2.4\n", " 2.6\n", " 2.8\n", " 3.0\n", " 3.2\n", " 3.4\n", " 3.6\n", " 3.8\n", " 4.0\n", " \n", " \n", " [bits]\n", " \n", " \n", " Mutual information terms\n", " \n", "\n", "\n", " \n", " I(O;W)\n", " I(A;O)\n", " I(A;W|O)\n", " I(A;W)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -2.5\n", " -2.0\n", " -1.5\n", " -1.0\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " 1.5\n", " 2.0\n", " 2.5\n", " 3.0\n", " 3.5\n", " 4.0\n", " 4.5\n", " -2.0\n", " -1.9\n", " -1.8\n", " -1.7\n", " -1.6\n", " -1.5\n", " -1.4\n", " -1.3\n", " -1.2\n", " -1.1\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " 2.1\n", " 2.2\n", " 2.3\n", " 2.4\n", " 2.5\n", " 2.6\n", " 2.7\n", " 2.8\n", " 2.9\n", " 3.0\n", " 3.1\n", " 3.2\n", " 3.3\n", " 3.4\n", " 3.5\n", " 3.6\n", " 3.7\n", " 3.8\n", " 3.9\n", " 4.0\n", " -2\n", " 0\n", " 2\n", " 4\n", " -2.0\n", " -1.8\n", " -1.6\n", " -1.4\n", " -1.2\n", " -1.0\n", " -0.8\n", " -0.6\n", " -0.4\n", " -0.2\n", " 0.0\n", " 0.2\n", " 0.4\n", " 0.6\n", " 0.8\n", " 1.0\n", " 1.2\n", " 1.4\n", " 1.6\n", " 1.8\n", " 2.0\n", " 2.2\n", " 2.4\n", " 2.6\n", " 2.8\n", " 3.0\n", " 3.2\n", " 3.4\n", " 3.6\n", " 3.8\n", " 4.0\n", " \n", " \n", " [bits]\n", " \n", " \n", " Mutual information terms\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", " H(O)\n", " H(A)\n", " H(A|O)\n", " H(A) \n", " \n", " \n", " \n", " I(O;W)\n", " I(A;O)\n", " I(A;W|O)\n", " I(A;W)\n", " H(O|W)\n", " H(A|O)\n", " H(A|O,W)\n", " H(A|W)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -2.5\n", " -2.0\n", " -1.5\n", " -1.0\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " 1.5\n", " 2.0\n", " 2.5\n", " 3.0\n", " 3.5\n", " 4.0\n", " 4.5\n", " -2.0\n", " -1.9\n", " -1.8\n", " -1.7\n", " -1.6\n", " -1.5\n", " -1.4\n", " -1.3\n", " -1.2\n", " -1.1\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " 2.1\n", " 2.2\n", " 2.3\n", " 2.4\n", " 2.5\n", " 2.6\n", " 2.7\n", " 2.8\n", " 2.9\n", " 3.0\n", " 3.1\n", " 3.2\n", " 3.3\n", " 3.4\n", " 3.5\n", " 3.6\n", " 3.7\n", " 3.8\n", " 3.9\n", " 4.0\n", " -2\n", " 0\n", " 2\n", " 4\n", " -2.0\n", " -1.8\n", " -1.6\n", " -1.4\n", " -1.2\n", " -1.0\n", " -0.8\n", " -0.6\n", " -0.4\n", " -0.2\n", " 0.0\n", " 0.2\n", " 0.4\n", " 0.6\n", " 0.8\n", " 1.0\n", " 1.2\n", " 1.4\n", " 1.6\n", " 1.8\n", " 2.0\n", " 2.2\n", " 2.4\n", " 2.6\n", " 2.8\n", " 3.0\n", " 3.2\n", " 3.4\n", " 3.6\n", " 3.8\n", " 4.0\n", " \n", " \n", " [bits]\n", " \n", " \n", " Composition of entropic terms\n", " \n", "\n", "\n", " \n", " H(O)\n", " H(A)\n", " H(A|O)\n", " H(A) \n", " \n", " \n", " \n", " I(O;W)\n", " I(A;O)\n", " I(A;W|O)\n", " I(A;W)\n", " H(O|W)\n", " H(A|O)\n", " H(A|O,W)\n", " H(A|W)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -2.5\n", " -2.0\n", " -1.5\n", " -1.0\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " 1.5\n", " 2.0\n", " 2.5\n", " 3.0\n", " 3.5\n", " 4.0\n", " 4.5\n", " -2.0\n", " -1.9\n", " -1.8\n", " -1.7\n", " -1.6\n", " -1.5\n", " -1.4\n", " -1.3\n", " -1.2\n", " -1.1\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " 2.1\n", " 2.2\n", " 2.3\n", " 2.4\n", " 2.5\n", " 2.6\n", " 2.7\n", " 2.8\n", " 2.9\n", " 3.0\n", " 3.1\n", " 3.2\n", " 3.3\n", " 3.4\n", " 3.5\n", " 3.6\n", " 3.7\n", " 3.8\n", " 3.9\n", " 4.0\n", " -2\n", " 0\n", " 2\n", " 4\n", " -2.0\n", " -1.8\n", " -1.6\n", " -1.4\n", " -1.2\n", " -1.0\n", " -0.8\n", " -0.6\n", " -0.4\n", " -0.2\n", " 0.0\n", " 0.2\n", " 0.4\n", " 0.6\n", " 0.8\n", " 1.0\n", " 1.2\n", " 1.4\n", " 1.6\n", " 1.8\n", " 2.0\n", " 2.2\n", " 2.4\n", " 2.6\n", " 2.8\n", " 3.0\n", " 3.2\n", " 3.4\n", " 3.6\n", " 3.8\n", " 4.0\n", " \n", " \n", " [bits]\n", " \n", " \n", " Composition of entropic terms\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", " E[U]\n", " E[U] \n", " \n", " \n", " \n", " E[U]\n", " 1/β1 I(O;W)\n", " 1/β2 I(A;O)\n", " 1/β3 I(A;W|O)\n", " J = E[U] - 1/β ∑ I\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -4\n", " -3\n", " -2\n", " -1\n", " 0\n", " 1\n", " 2\n", " 3\n", " 4\n", " 5\n", " 6\n", " 7\n", " -3.0\n", " -2.9\n", " -2.8\n", " -2.7\n", " -2.6\n", " -2.5\n", " -2.4\n", " -2.3\n", " -2.2\n", " -2.1\n", " -2.0\n", " -1.9\n", " -1.8\n", " -1.7\n", " -1.6\n", " -1.5\n", " -1.4\n", " -1.3\n", " -1.2\n", " -1.1\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " 2.1\n", " 2.2\n", " 2.3\n", " 2.4\n", " 2.5\n", " 2.6\n", " 2.7\n", " 2.8\n", " 2.9\n", " 3.0\n", " 3.1\n", " 3.2\n", " 3.3\n", " 3.4\n", " 3.5\n", " 3.6\n", " 3.7\n", " 3.8\n", " 3.9\n", " 4.0\n", " 4.1\n", " 4.2\n", " 4.3\n", " 4.4\n", " 4.5\n", " 4.6\n", " 4.7\n", " 4.8\n", " 4.9\n", " 5.0\n", " 5.1\n", " 5.2\n", " 5.3\n", " 5.4\n", " 5.5\n", " 5.6\n", " 5.7\n", " 5.8\n", " 5.9\n", " 6.0\n", " -3\n", " 0\n", " 3\n", " 6\n", " -3.0\n", " -2.8\n", " -2.6\n", " -2.4\n", " -2.2\n", " -2.0\n", " -1.8\n", " -1.6\n", " -1.4\n", " -1.2\n", " -1.0\n", " -0.8\n", " -0.6\n", " -0.4\n", " -0.2\n", " 0.0\n", " 0.2\n", " 0.4\n", " 0.6\n", " 0.8\n", " 1.0\n", " 1.2\n", " 1.4\n", " 1.6\n", " 1.8\n", " 2.0\n", " 2.2\n", " 2.4\n", " 2.6\n", " 2.8\n", " 3.0\n", " 3.2\n", " 3.4\n", " 3.6\n", " 3.8\n", " 4.0\n", " 4.2\n", " 4.4\n", " 4.6\n", " 4.8\n", " 5.0\n", " 5.2\n", " 5.4\n", " 5.6\n", " 5.8\n", " 6.0\n", " \n", " \n", " [utils]\n", " \n", " \n", " Utility vs. processing-cost trade-off\n", " \n", "\n", "\n", " \n", " E[U]\n", " E[U] \n", " \n", " \n", " \n", " E[U]\n", " 1/β1 I(O;W)\n", " 1/β2 I(A;O)\n", " 1/β3 I(A;W|O)\n", " J = E[U] - 1/β ∑ I\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -4\n", " -3\n", " -2\n", " -1\n", " 0\n", " 1\n", " 2\n", " 3\n", " 4\n", " 5\n", " 6\n", " 7\n", " -3.0\n", " -2.9\n", " -2.8\n", " -2.7\n", " -2.6\n", " -2.5\n", " -2.4\n", " -2.3\n", " -2.2\n", " -2.1\n", " -2.0\n", " -1.9\n", " -1.8\n", " -1.7\n", " -1.6\n", " -1.5\n", " -1.4\n", " -1.3\n", " -1.2\n", " -1.1\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " 2.1\n", " 2.2\n", " 2.3\n", " 2.4\n", " 2.5\n", " 2.6\n", " 2.7\n", " 2.8\n", " 2.9\n", " 3.0\n", " 3.1\n", " 3.2\n", " 3.3\n", " 3.4\n", " 3.5\n", " 3.6\n", " 3.7\n", " 3.8\n", " 3.9\n", " 4.0\n", " 4.1\n", " 4.2\n", " 4.3\n", " 4.4\n", " 4.5\n", " 4.6\n", " 4.7\n", " 4.8\n", " 4.9\n", " 5.0\n", " 5.1\n", " 5.2\n", " 5.3\n", " 5.4\n", " 5.5\n", " 5.6\n", " 5.7\n", " 5.8\n", " 5.9\n", " 6.0\n", " -3\n", " 0\n", " 3\n", " 6\n", " -3.0\n", " -2.8\n", " -2.6\n", " -2.4\n", " -2.2\n", " -2.0\n", " -1.8\n", " -1.6\n", " -1.4\n", " -1.2\n", " -1.0\n", " -0.8\n", " -0.6\n", " -0.4\n", " -0.2\n", " 0.0\n", " 0.2\n", " 0.4\n", " 0.6\n", " 0.8\n", " 1.0\n", " 1.2\n", " 1.4\n", " 1.6\n", " 1.8\n", " 2.0\n", " 2.2\n", " 2.4\n", " 2.6\n", " 2.8\n", " 3.0\n", " 3.2\n", " 3.4\n", " 3.6\n", " 3.8\n", " 4.0\n", " 4.2\n", " 4.4\n", " 4.6\n", " 4.8\n", " 5.0\n", " 5.2\n", " 5.4\n", " 5.6\n", " 5.8\n", " 6.0\n", " \n", " \n", " [utils]\n", " \n", " \n", " Utility vs. processing-cost trade-off\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p_MI, p_composed, p_perf = plot_three_var_performancemeasures(performance_df, maximum(U_pre), β1, β2, β3)\n", "p_MI_n, p_composed_n, p_perf_n = plot_three_var_performancemeasures(performance_df_n, maximum(U_pre), β1_n, β2_n, β3_n)\n", "\n", "display(hstack(p_MI, p_MI_n))\n", "display(hstack(p_composed, p_composed_n))\n", "display(hstack(p_perf, p_perf_n))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Final plots for paper" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false }, "outputs": [], "source": [ "#for the paper visualize p(w) as a histogram (bar-plot)\n", "plt_pw_uni_bar = plot(x=w_strings,y=p_w_uni,Geom.bar, Scale.x_discrete, Scale.y_continuous(minvalue=0, maxvalue=1), \n", "Guide.xlabel(\"Disease type w\", orientation=:horizontal),\n", "Guide.ylabel(\"p1(w)\",orientation=:vertical),BAtheme(default_color=colorant\"darkred\"))\n", "\n", "plt_pw_nonuni_bar = plot(x=w_strings,y=p_w_nonuni,Geom.bar, Scale.x_discrete, Scale.y_continuous(minvalue=0, maxvalue=1), \n", "Guide.xlabel(\"Disease type w\", orientation=:horizontal),\n", "Guide.ylabel(\"p2(w)\",orientation=:vertical),BAtheme(default_color=colorant\"darkred\"));" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", " \n", " Disease type w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -1.5\n", " -1.0\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " 1.5\n", " 2.0\n", " 2.5\n", " -1.00\n", " -0.95\n", " -0.90\n", " -0.85\n", " -0.80\n", " -0.75\n", " -0.70\n", " -0.65\n", " -0.60\n", " -0.55\n", " -0.50\n", " -0.45\n", " -0.40\n", " -0.35\n", " -0.30\n", " -0.25\n", " -0.20\n", " -0.15\n", " -0.10\n", " -0.05\n", " 0.00\n", " 0.05\n", " 0.10\n", " 0.15\n", " 0.20\n", " 0.25\n", " 0.30\n", " 0.35\n", " 0.40\n", " 0.45\n", " 0.50\n", " 0.55\n", " 0.60\n", " 0.65\n", " 0.70\n", " 0.75\n", " 0.80\n", " 0.85\n", " 0.90\n", " 0.95\n", " 1.00\n", " 1.05\n", " 1.10\n", " 1.15\n", " 1.20\n", " 1.25\n", " 1.30\n", " 1.35\n", " 1.40\n", " 1.45\n", " 1.50\n", " 1.55\n", " 1.60\n", " 1.65\n", " 1.70\n", " 1.75\n", " 1.80\n", " 1.85\n", " 1.90\n", " 1.95\n", " 2.00\n", " -1\n", " 0\n", " 1\n", " 2\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " \n", " \n", " p2(w)\n", " \n", "\n", "\n", " \n", " Disease type w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " -1.5\n", " -1.0\n", " -0.5\n", " 0.0\n", " 0.5\n", " 1.0\n", " 1.5\n", " 2.0\n", " 2.5\n", " -1.00\n", " -0.95\n", " -0.90\n", " -0.85\n", " -0.80\n", " -0.75\n", " -0.70\n", " -0.65\n", " -0.60\n", " -0.55\n", " -0.50\n", " -0.45\n", " -0.40\n", " -0.35\n", " -0.30\n", " -0.25\n", " -0.20\n", " -0.15\n", " -0.10\n", " -0.05\n", " 0.00\n", " 0.05\n", " 0.10\n", " 0.15\n", " 0.20\n", " 0.25\n", " 0.30\n", " 0.35\n", " 0.40\n", " 0.45\n", " 0.50\n", " 0.55\n", " 0.60\n", " 0.65\n", " 0.70\n", " 0.75\n", " 0.80\n", " 0.85\n", " 0.90\n", " 0.95\n", " 1.00\n", " 1.05\n", " 1.10\n", " 1.15\n", " 1.20\n", " 1.25\n", " 1.30\n", " 1.35\n", " 1.40\n", " 1.45\n", " 1.50\n", " 1.55\n", " 1.60\n", " 1.65\n", " 1.70\n", " 1.75\n", " 1.80\n", " 1.85\n", " 1.90\n", " 1.95\n", " 2.00\n", " -1\n", " 0\n", " 1\n", " 2\n", " -1.0\n", " -0.9\n", " -0.8\n", " -0.7\n", " -0.6\n", " -0.5\n", " -0.4\n", " -0.3\n", " -0.2\n", " -0.1\n", " 0.0\n", " 0.1\n", " 0.2\n", " 0.3\n", " 0.4\n", " 0.5\n", " 0.6\n", " 0.7\n", " 0.8\n", " 0.9\n", " 1.0\n", " 1.1\n", " 1.2\n", " 1.3\n", " 1.4\n", " 1.5\n", " 1.6\n", " 1.7\n", " 1.8\n", " 1.9\n", " 2.0\n", " \n", " \n", " p1(w)\n", " \n", "\n", "\n", " \n", " Disease type w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 3\n", " 0\n", " 2\n", " 1\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " U(a,w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Treatment a\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", " \n", " Observation x\n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|x)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(x|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " Observation x\n", " \n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", " \n", " Observation x\n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(a|x)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " treat h1\n", " treat h2\n", " treat l1\n", " treat l2\n", " treat l3\n", " treat l4\n", " treat l12\n", " treat l34\n", " treat h\n", " treat l\n", " \n", " \n", " Action a\n", " \n", "\n", "\n", " \n", " World state w\n", " \n", " \n", " h1\n", " h2\n", " l1\n", " l2\n", " l3\n", " l4\n", " \n", " \n", " \n", " 0.0\n", " 0.5\n", " 1.0\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " p*(x|w)\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " x1\n", " x2\n", " x3\n", " \n", " \n", " Observation x\n", " \n", "\n", "\n", "\n", " \n", "\n", " \n", "\n", " \n", "\n", " \n", "\n", " \n", "\n", " \n", "\n", "\n", "\n", "\n" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "Compose.Measure{Compose.MeasureNil,Compose.MeasureNil}(120.0,Compose.MeasureNil(),Compose.MeasureNil(),0.0,0.0)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#generate plots for comparison\n", "\n", "plt_setup = hstack(plt_utility, vstack(plt_pw_uni_bar, plt_pw_nonuni_bar))\n", "\n", "plt_final = vstack(hstack(plt_pxgw, plt_pagx, plt_pagw), hstack(plt_pxgw_n, plt_pagx_n, plt_pagw_n))\n", "\n", "display(plt_setup)\n", "display(plt_final)\n", "\n", "\n", "\n", "w = 18cm\n", "h = 12cm\n", "#draw(SVG(\"Figures/MedicalExampleSetup.svg\", w, h), plt_setup) #uncomment to store figure\n", "#draw(SVG(\"Figures/HierarchicalComparison.svg\", w, h), plt_final) #uncomment to store figure#\n", "\n" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 0.4.0", "language": "julia", "name": "julia-0.4" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "0.4.0" } }, "nbformat": 4, "nbformat_minor": 0 }