{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Multinomial Choice Models and the Indepdence of Irrelevant Alternatives"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import arviz as az\n",
"import matplotlib.pyplot as plt\n",
"import pandas as pd\n",
"\n",
"from pymc_marketing.customer_choice.mnl_logit import MNLogit\n",
"from pymc_marketing.paths import data_dir"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"az.style.use(\"arviz-darkgrid\")\n",
"plt.rcParams[\"figure.figsize\"] = [12, 7]\n",
"plt.rcParams[\"figure.dpi\"] = 100"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Discrete choice models are a class of statistical models used to analyze and predict choices made by individuals among a finite set of alternatives. The set of alternatives ussually represent a choice between \"products\" broadly construed.\n",
"\n",
"These models are grounded in utility maximization theory, where each option provides a certain level of utility to the decision-maker, and the option with the highest perceived utility is chosen. \n",
"\n",
"Discrete choice models are widely applied in fields like transportation, marketing, and health economics to understand behavior and inform policy or design. Common variants include the multinomial logit, nested logit, and mixed logit models, each capturing different aspects of choice behavior, such as similarity among alternatives or individual heterogeneity.\n",
"In this notebook we will demonstrate how to specify the multinomial logit model and highlight a property of this model known as the Independence of Irrelevant Alternatives. \n",
"\n",
"### The Data\n",
"\n",
"We will examine a case of choices between heating systems. This data is drawn from an example in the R package `mlogit`. \n",
"\n",
"Note the data has been formatted in a \"wide\" fashion where each row represents a choice scenario characterised by (a) the chosen outcome `depvar`, (b) the product attributes: installation costs (`ic_x`) and operating costs (`oc_x`) and (c) fixed attributs of the agent making the choice e.g. the consumer's income and rooms. "
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
idcase
\n",
"
depvar
\n",
"
ic_gc
\n",
"
ic_gr
\n",
"
ic_ec
\n",
"
ic_er
\n",
"
ic_hp
\n",
"
oc_gc
\n",
"
oc_gr
\n",
"
oc_ec
\n",
"
oc_er
\n",
"
oc_hp
\n",
"
income
\n",
"
agehed
\n",
"
rooms
\n",
"
region
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
gc
\n",
"
866.00
\n",
"
962.64
\n",
"
859.90
\n",
"
995.76
\n",
"
1135.50
\n",
"
199.69
\n",
"
151.72
\n",
"
553.34
\n",
"
505.60
\n",
"
237.88
\n",
"
7
\n",
"
25
\n",
"
6
\n",
"
ncostl
\n",
"
\n",
"
\n",
"
1
\n",
"
2
\n",
"
gc
\n",
"
727.93
\n",
"
758.89
\n",
"
796.82
\n",
"
894.69
\n",
"
968.90
\n",
"
168.66
\n",
"
168.66
\n",
"
520.24
\n",
"
486.49
\n",
"
199.19
\n",
"
5
\n",
"
60
\n",
"
5
\n",
"
scostl
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
gc
\n",
"
599.48
\n",
"
783.05
\n",
"
719.86
\n",
"
900.11
\n",
"
1048.30
\n",
"
165.58
\n",
"
137.80
\n",
"
439.06
\n",
"
404.74
\n",
"
171.47
\n",
"
4
\n",
"
65
\n",
"
2
\n",
"
ncostl
\n",
"
\n",
"
\n",
"
3
\n",
"
4
\n",
"
er
\n",
"
835.17
\n",
"
793.06
\n",
"
761.25
\n",
"
831.04
\n",
"
1048.70
\n",
"
180.88
\n",
"
147.14
\n",
"
483.00
\n",
"
425.22
\n",
"
222.95
\n",
"
2
\n",
"
50
\n",
"
4
\n",
"
scostl
\n",
"
\n",
"
\n",
"
4
\n",
"
5
\n",
"
er
\n",
"
755.59
\n",
"
846.29
\n",
"
858.86
\n",
"
985.64
\n",
"
883.05
\n",
"
174.91
\n",
"
138.90
\n",
"
404.41
\n",
"
389.52
\n",
"
178.49
\n",
"
2
\n",
"
25
\n",
"
6
\n",
"
valley
\n",
"
\n",
"
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
...
\n",
"
\n",
"
\n",
"
895
\n",
"
896
\n",
"
gc
\n",
"
766.39
\n",
"
877.71
\n",
"
751.59
\n",
"
869.78
\n",
"
942.70
\n",
"
142.61
\n",
"
136.21
\n",
"
474.48
\n",
"
420.65
\n",
"
203.00
\n",
"
6
\n",
"
20
\n",
"
4
\n",
"
mountn
\n",
"
\n",
"
\n",
"
896
\n",
"
897
\n",
"
gc
\n",
"
1128.50
\n",
"
1167.80
\n",
"
1047.60
\n",
"
1292.60
\n",
"
1297.10
\n",
"
207.40
\n",
"
213.77
\n",
"
705.36
\n",
"
551.61
\n",
"
243.76
\n",
"
7
\n",
"
45
\n",
"
7
\n",
"
scostl
\n",
"
\n",
"
\n",
"
897
\n",
"
898
\n",
"
gc
\n",
"
787.10
\n",
"
1055.20
\n",
"
842.79
\n",
"
1041.30
\n",
"
1064.80
\n",
"
175.05
\n",
"
141.63
\n",
"
478.86
\n",
"
448.61
\n",
"
254.51
\n",
"
5
\n",
"
60
\n",
"
7
\n",
"
scostl
\n",
"
\n",
"
\n",
"
898
\n",
"
899
\n",
"
gc
\n",
"
860.56
\n",
"
1081.30
\n",
"
799.76
\n",
"
1123.20
\n",
"
1218.20
\n",
"
211.04
\n",
"
151.31
\n",
"
495.20
\n",
"
401.56
\n",
"
246.48
\n",
"
5
\n",
"
50
\n",
"
6
\n",
"
scostl
\n",
"
\n",
"
\n",
"
899
\n",
"
900
\n",
"
gc
\n",
"
893.94
\n",
"
1119.90
\n",
"
967.88
\n",
"
1091.70
\n",
"
1387.50
\n",
"
175.80
\n",
"
180.11
\n",
"
518.68
\n",
"
458.53
\n",
"
245.13
\n",
"
2
\n",
"
65
\n",
"
4
\n",
"
ncostl
\n",
"
\n",
" \n",
"
\n",
"
900 rows Ă— 16 columns
\n",
"
"
],
"text/plain": [
" idcase depvar ic_gc ic_gr ic_ec ic_er ic_hp oc_gc \\\n",
"0 1 gc 866.00 962.64 859.90 995.76 1135.50 199.69 \n",
"1 2 gc 727.93 758.89 796.82 894.69 968.90 168.66 \n",
"2 3 gc 599.48 783.05 719.86 900.11 1048.30 165.58 \n",
"3 4 er 835.17 793.06 761.25 831.04 1048.70 180.88 \n",
"4 5 er 755.59 846.29 858.86 985.64 883.05 174.91 \n",
".. ... ... ... ... ... ... ... ... \n",
"895 896 gc 766.39 877.71 751.59 869.78 942.70 142.61 \n",
"896 897 gc 1128.50 1167.80 1047.60 1292.60 1297.10 207.40 \n",
"897 898 gc 787.10 1055.20 842.79 1041.30 1064.80 175.05 \n",
"898 899 gc 860.56 1081.30 799.76 1123.20 1218.20 211.04 \n",
"899 900 gc 893.94 1119.90 967.88 1091.70 1387.50 175.80 \n",
"\n",
" oc_gr oc_ec oc_er oc_hp income agehed rooms region \n",
"0 151.72 553.34 505.60 237.88 7 25 6 ncostl \n",
"1 168.66 520.24 486.49 199.19 5 60 5 scostl \n",
"2 137.80 439.06 404.74 171.47 4 65 2 ncostl \n",
"3 147.14 483.00 425.22 222.95 2 50 4 scostl \n",
"4 138.90 404.41 389.52 178.49 2 25 6 valley \n",
".. ... ... ... ... ... ... ... ... \n",
"895 136.21 474.48 420.65 203.00 6 20 4 mountn \n",
"896 213.77 705.36 551.61 243.76 7 45 7 scostl \n",
"897 141.63 478.86 448.61 254.51 5 60 7 scostl \n",
"898 151.31 495.20 401.56 246.48 5 50 6 scostl \n",
"899 180.11 518.68 458.53 245.13 2 65 4 ncostl \n",
"\n",
"[900 rows x 16 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data_path = data_dir / \"choice_wide_heating.csv\"\n",
"df = pd.read_csv(data_path)\n",
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Seeing that we have 5 alternatives to choose from:"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"depvar\n",
"gc 573\n",
"gr 129\n",
"er 84\n",
"ec 64\n",
"hp 50\n",
"Name: count, dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df[\"depvar\"].value_counts()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The idea of discrete choice models is to determine how propensity to choose these products is driven by their observable attributes. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Utility Theory and Maximisation\n",
"\n",
"The general idea of these models is that an individuals’ choices among observed alternatives reflect the maximization of an underlying utility function. In this framework, each alternative in a choice set is associated with a latent utility composed of observable components (e.g., cost, travel time) and unobservable factors captured as random errors. Daniel McFadden formalized this approach using random utility models, including the multinomial logit model, which assumes that the unobserved components of utility follow an extreme value distribution. His models provided a rigorous econometric foundation for analyzing choice behavior from observed decisions, enabling estimation of how changes in attributes influence choice probabilities. This work earned McFadden the Nobel Prize in Economics in 2000 and has had lasting influence in transportation, marketing, and labor economics.\n",
"\n",
"To specify our multinomial logit model we therefore specify the form of the utility equations that might drive consumers to purchase particular goods amongst a choice set. Note how we distinguish each of the individual alternatives and the alternative-specific-covariates and the individual-specific-covariates by using the `|` notation. This is a variant of the standard Wilkinson stlye formula notation for specifying regression models. Under the hood we fit N regression models for each of the N goods. These regressions are used to generate a Utility score which is fed through a softmax transform to give us probabilities of each particular choice. The most probable choice should be the one with the greatest predicted utility. \n",
"\n",
"$$ \\begin{split} \\begin{pmatrix}\n",
"u_{gc} \\\\\n",
"u_{gr} \\\\\n",
"u_{ec} \\\\\n",
"u_{er} \\\\\n",
"u_{hp} \\\\\n",
"\\end{pmatrix} = \\begin{pmatrix}\n",
"gc_{ic} & gc_{oc} \\\\\n",
"gr_{ic} & gr_{oc} \\\\\n",
"ec_{ic} & ec_{oc} \\\\\n",
"er_{ic} & er_{oc} \\\\\n",
"hp_{ic} & hp_{oc} \\\\\n",
"\\end{pmatrix} \\begin{pmatrix}\n",
"\\beta_{ic} \\\\\n",
"\\beta_{oc} \\\\\n",
"\\end{pmatrix} \\end{split}\n",
"$$\n",
"\n",
"$$\\text{softmax}(u)_{j} = \\frac{\\exp(u_{j})}{\\sum_{q=1}^{J}\\exp(u_{q})}$$\n",
"\n",
"For more details on the background theory and varieties of utility specification see the PyMC example [here](https://www.pymc.io/projects/examples/en/latest/generalized_linear_models/GLM-discrete-choice_models.html)\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"utility_formulas = [\n",
" \"gc ~ ic_gc + oc_gc | income + rooms + agehed\",\n",
" \"gr ~ ic_gr + oc_gr | income + rooms + agehed\",\n",
" \"ec ~ ic_ec + oc_ec | income + rooms + agehed\",\n",
" \"er ~ ic_er + oc_er | income + rooms + agehed\",\n",
" \"hp ~ ic_hp + oc_hp | income + rooms + agehed\",\n",
"]\n",
"\n",
"mnl = MNLogit(df, utility_formulas, \"depvar\", covariates=[\"ic\", \"oc\"])\n",
"mnl"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once we have initialised our model class we can estimate the model with the sample command"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Sampling: [alphas_, betas, betas_fixed_, likelihood]\n",
"Initializing NUTS using jitter+adapt_diag...\n",
"Multiprocess sampling (4 chains in 4 jobs)\n",
"NUTS: [alphas_, betas, betas_fixed_]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "849bde98f2af4d0982224f70af465994",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Sampling 4 chains for 1_000 tune and 1_000 draw iterations (4_000 + 4_000 draws total) took 49 seconds.\n",
"Sampling: [likelihood]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "13501e70f11a41cd9076cb344b619543",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"mnl.sample()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can then access the fitted inference data object to inspect the posterior estimates for the model parameters of interest. "
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/Users/nathanielforde/mambaforge/envs/pymc-marketing-dev/lib/python3.10/site-packages/arviz/stats/diagnostics.py:596: RuntimeWarning: invalid value encountered in scalar divide\n",
" (between_chain_variance / within_chain_variance + num_samples - 1) / (num_samples)\n",
"/Users/nathanielforde/mambaforge/envs/pymc-marketing-dev/lib/python3.10/site-packages/arviz/stats/diagnostics.py:991: RuntimeWarning: invalid value encountered in scalar divide\n",
" varsd = varvar / evar / 4\n",
"/Users/nathanielforde/mambaforge/envs/pymc-marketing-dev/lib/python3.10/site-packages/arviz/stats/diagnostics.py:596: RuntimeWarning: invalid value encountered in scalar divide\n",
" (between_chain_variance / within_chain_variance + num_samples - 1) / (num_samples)\n",
"/Users/nathanielforde/mambaforge/envs/pymc-marketing-dev/lib/python3.10/site-packages/arviz/stats/diagnostics.py:991: RuntimeWarning: invalid value encountered in scalar divide\n",
" varsd = varvar / evar / 4\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
mean
\n",
"
sd
\n",
"
hdi_3%
\n",
"
hdi_97%
\n",
"
mcse_mean
\n",
"
mcse_sd
\n",
"
ess_bulk
\n",
"
ess_tail
\n",
"
r_hat
\n",
"
\n",
" \n",
" \n",
"
\n",
"
alphas[gc]
\n",
"
1.379
\n",
"
0.755
\n",
"
0.072
\n",
"
2.912
\n",
"
0.021
\n",
"
0.012
\n",
"
1309.0
\n",
"
2162.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
alphas[gr]
\n",
"
0.358
\n",
"
0.837
\n",
"
-1.213
\n",
"
1.958
\n",
"
0.023
\n",
"
0.014
\n",
"
1347.0
\n",
"
2084.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
alphas[ec]
\n",
"
0.803
\n",
"
1.016
\n",
"
-0.987
\n",
"
2.876
\n",
"
0.024
\n",
"
0.015
\n",
"
1733.0
\n",
"
2379.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
alphas[er]
\n",
"
2.349
\n",
"
0.917
\n",
"
0.575
\n",
"
4.068
\n",
"
0.023
\n",
"
0.014
\n",
"
1541.0
\n",
"
2238.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
alphas[hp]
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
NaN
\n",
"
4000.0
\n",
"
4000.0
\n",
"
NaN
\n",
"
\n",
"
\n",
"
betas[ic]
\n",
"
-0.002
\n",
"
0.001
\n",
"
-0.003
\n",
"
-0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
3655.0
\n",
"
2785.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas[oc]
\n",
"
-0.007
\n",
"
0.002
\n",
"
-0.010
\n",
"
-0.004
\n",
"
0.000
\n",
"
0.000
\n",
"
4317.0
\n",
"
3095.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[gc, income]
\n",
"
-0.061
\n",
"
0.086
\n",
"
-0.212
\n",
"
0.112
\n",
"
0.002
\n",
"
0.001
\n",
"
1823.0
\n",
"
2203.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[gc, rooms]
\n",
"
-0.004
\n",
"
0.084
\n",
"
-0.157
\n",
"
0.157
\n",
"
0.002
\n",
"
0.001
\n",
"
1583.0
\n",
"
2316.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[gc, agehed]
\n",
"
0.016
\n",
"
0.011
\n",
"
-0.003
\n",
"
0.038
\n",
"
0.000
\n",
"
0.000
\n",
"
1505.0
\n",
"
2259.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[gr, income]
\n",
"
-0.169
\n",
"
0.097
\n",
"
-0.348
\n",
"
0.015
\n",
"
0.002
\n",
"
0.001
\n",
"
1992.0
\n",
"
2640.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[gr, rooms]
\n",
"
-0.018
\n",
"
0.096
\n",
"
-0.188
\n",
"
0.173
\n",
"
0.002
\n",
"
0.001
\n",
"
1745.0
\n",
"
2261.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[gr, agehed]
\n",
"
0.020
\n",
"
0.012
\n",
"
-0.004
\n",
"
0.042
\n",
"
0.000
\n",
"
0.000
\n",
"
1615.0
\n",
"
2343.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[ec, income]
\n",
"
-0.053
\n",
"
0.112
\n",
"
-0.263
\n",
"
0.148
\n",
"
0.002
\n",
"
0.002
\n",
"
2205.0
\n",
"
2851.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[ec, rooms]
\n",
"
0.049
\n",
"
0.108
\n",
"
-0.148
\n",
"
0.256
\n",
"
0.003
\n",
"
0.001
\n",
"
1849.0
\n",
"
2686.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[ec, agehed]
\n",
"
0.021
\n",
"
0.014
\n",
"
-0.004
\n",
"
0.047
\n",
"
0.000
\n",
"
0.000
\n",
"
1850.0
\n",
"
2506.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[er, income]
\n",
"
-0.090
\n",
"
0.105
\n",
"
-0.293
\n",
"
0.098
\n",
"
0.002
\n",
"
0.002
\n",
"
2067.0
\n",
"
2501.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[er, rooms]
\n",
"
0.024
\n",
"
0.102
\n",
"
-0.170
\n",
"
0.208
\n",
"
0.002
\n",
"
0.002
\n",
"
1721.0
\n",
"
2422.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[er, agehed]
\n",
"
-0.005
\n",
"
0.013
\n",
"
-0.029
\n",
"
0.020
\n",
"
0.000
\n",
"
0.000
\n",
"
1723.0
\n",
"
2339.0
\n",
"
1.0
\n",
"
\n",
"
\n",
"
betas_fixed[hp, income]
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
NaN
\n",
"
4000.0
\n",
"
4000.0
\n",
"
NaN
\n",
"
\n",
"
\n",
"
betas_fixed[hp, rooms]
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
NaN
\n",
"
4000.0
\n",
"
4000.0
\n",
"
NaN
\n",
"
\n",
"
\n",
"
betas_fixed[hp, agehed]
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
0.000
\n",
"
NaN
\n",
"
4000.0
\n",
"
4000.0
\n",
"
NaN
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" mean sd hdi_3% hdi_97% mcse_mean mcse_sd \\\n",
"alphas[gc] 1.379 0.755 0.072 2.912 0.021 0.012 \n",
"alphas[gr] 0.358 0.837 -1.213 1.958 0.023 0.014 \n",
"alphas[ec] 0.803 1.016 -0.987 2.876 0.024 0.015 \n",
"alphas[er] 2.349 0.917 0.575 4.068 0.023 0.014 \n",
"alphas[hp] 0.000 0.000 0.000 0.000 0.000 NaN \n",
"betas[ic] -0.002 0.001 -0.003 -0.000 0.000 0.000 \n",
"betas[oc] -0.007 0.002 -0.010 -0.004 0.000 0.000 \n",
"betas_fixed[gc, income] -0.061 0.086 -0.212 0.112 0.002 0.001 \n",
"betas_fixed[gc, rooms] -0.004 0.084 -0.157 0.157 0.002 0.001 \n",
"betas_fixed[gc, agehed] 0.016 0.011 -0.003 0.038 0.000 0.000 \n",
"betas_fixed[gr, income] -0.169 0.097 -0.348 0.015 0.002 0.001 \n",
"betas_fixed[gr, rooms] -0.018 0.096 -0.188 0.173 0.002 0.001 \n",
"betas_fixed[gr, agehed] 0.020 0.012 -0.004 0.042 0.000 0.000 \n",
"betas_fixed[ec, income] -0.053 0.112 -0.263 0.148 0.002 0.002 \n",
"betas_fixed[ec, rooms] 0.049 0.108 -0.148 0.256 0.003 0.001 \n",
"betas_fixed[ec, agehed] 0.021 0.014 -0.004 0.047 0.000 0.000 \n",
"betas_fixed[er, income] -0.090 0.105 -0.293 0.098 0.002 0.002 \n",
"betas_fixed[er, rooms] 0.024 0.102 -0.170 0.208 0.002 0.002 \n",
"betas_fixed[er, agehed] -0.005 0.013 -0.029 0.020 0.000 0.000 \n",
"betas_fixed[hp, income] 0.000 0.000 0.000 0.000 0.000 NaN \n",
"betas_fixed[hp, rooms] 0.000 0.000 0.000 0.000 0.000 NaN \n",
"betas_fixed[hp, agehed] 0.000 0.000 0.000 0.000 0.000 NaN \n",
"\n",
" ess_bulk ess_tail r_hat \n",
"alphas[gc] 1309.0 2162.0 1.0 \n",
"alphas[gr] 1347.0 2084.0 1.0 \n",
"alphas[ec] 1733.0 2379.0 1.0 \n",
"alphas[er] 1541.0 2238.0 1.0 \n",
"alphas[hp] 4000.0 4000.0 NaN \n",
"betas[ic] 3655.0 2785.0 1.0 \n",
"betas[oc] 4317.0 3095.0 1.0 \n",
"betas_fixed[gc, income] 1823.0 2203.0 1.0 \n",
"betas_fixed[gc, rooms] 1583.0 2316.0 1.0 \n",
"betas_fixed[gc, agehed] 1505.0 2259.0 1.0 \n",
"betas_fixed[gr, income] 1992.0 2640.0 1.0 \n",
"betas_fixed[gr, rooms] 1745.0 2261.0 1.0 \n",
"betas_fixed[gr, agehed] 1615.0 2343.0 1.0 \n",
"betas_fixed[ec, income] 2205.0 2851.0 1.0 \n",
"betas_fixed[ec, rooms] 1849.0 2686.0 1.0 \n",
"betas_fixed[ec, agehed] 1850.0 2506.0 1.0 \n",
"betas_fixed[er, income] 2067.0 2501.0 1.0 \n",
"betas_fixed[er, rooms] 1721.0 2422.0 1.0 \n",
"betas_fixed[er, agehed] 1723.0 2339.0 1.0 \n",
"betas_fixed[hp, income] 4000.0 4000.0 NaN \n",
"betas_fixed[hp, rooms] 4000.0 4000.0 NaN \n",
"betas_fixed[hp, agehed] 4000.0 4000.0 NaN "
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"az.summary(mnl.idata, var_names=[\"alphas\", \"betas\", \"betas_fixed\"])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Note here how the beta coefficients attaching to the installation and operating costs are negative implying that unit increases in cost drive a **decrease** in latent subjective utility across the consumer base. It's this kind of behaviourial insight about the attributes of each product that these models are intended to uncover. \n",
"\n",
"However, some care must be taken in the interpretation of the parameters in these models. Fundamentally discrete choice models are species of causal-inference model where we aim to not merely make inferences about relations in data but make claims about the causal effects of changes in product attributes e.g. how does the market respond to price changes? The criteria of adequacy of a discrete choice model is keyed to how plausible they are as guides to future action and action under counterfactual settings. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### New Pricing Intervention\n",
"\n",
"Consider the following intervention? How might the consumer popoulation respond to a price intervention which targets a particular market segment? We can fit the multinomial logit model as before under a pricing intervention. "
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Sampling: [likelihood]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "0482e0b3d0494a439d34d80ebd5de1c4",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"new_policy_df = df.copy()\n",
"new_policy_df[[\"ic_ec\", \"ic_er\"]] = new_policy_df[[\"ic_ec\", \"ic_er\"]] * 1.5\n",
"\n",
"idata_new_policy = mnl.apply_intervention(new_choice_df=new_policy_df)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Then we can inspect how the market share allocated to each of the products is updated after this pricing intervention. On the one hand it makes sense to see a drop in demand for the electrical heating systems which just saw a price increase. However, we can also note a curious fact about the share allocation for the three remaining goods. Each of the goods absorbs an equal 0.08 lift in their market share. This is not a fluke. \n",
"\n",
"The observation stems from IIA property of the multinomial logit model. Under counterfactual interventions market changes lead to somewhat counter intuitive patterns of market substitution. The remaining goods on the market exhibit proportional substitution, where all remaining choices \"compete\" equally. This is often a quite implausible assumption about market behaviour because it fails to respect properties of market structure or preference. In our case we may wonder if consumers inclined towards electrical heating systems would all equally flock to gas systems of if their is an inherent market bias among that consumer base towards the more eco-friendly heat pump systems?"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = mnl.plot_change(change_df, figsize=(20, 8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The idea of structural preference or non-proportional substitution patterns simply cannot be accounted for with the multinomial logit model. This is occasionally called the Red-Bus, Blue Bus [paradox](https://www.youtube.com/watch?v=eciarlAhX6k) because the model property implies that even in a transport market with a 50% between a car and bus. If we introduce another bus similar in all respects to the original, then the new market is split equally between the three goods yielding a 33% share for each. This seems wrong because a new bus should only cannibalise market share from the bus consumers. \n",
"\n",
"Let's see how this pattern plays out in our example. We can remove a product as follows and re-estimate our multinomial logit. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Market Product Intervention\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Sampling: [alphas_, betas, betas_fixed_, likelihood]\n",
"Initializing NUTS using jitter+adapt_diag...\n",
"Multiprocess sampling (4 chains in 4 jobs)\n",
"NUTS: [alphas_, betas, betas_fixed_]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1c31b711743c41a58b7e5d060607f0aa",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"Sampling 4 chains for 2_000 tune and 1_000 draw iterations (8_000 + 4_000 draws total) took 145 seconds.\n",
"Sampling: [likelihood]\n"
]
},
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "648fb4e8c25d48ac9563258ceedbbb3f",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Output()"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n"
],
"text/plain": []
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"new_policy_df = df.copy()\n",
"new_policy_df = new_policy_df[new_policy_df[\"depvar\"] != \"hp\"]\n",
"\n",
"new_utility_formulas = [\n",
" \"gc ~ ic_gc + oc_gc | income + rooms + agehed\",\n",
" \"gr ~ ic_gr + oc_gr | income + rooms + agehed\",\n",
" \"ec ~ ic_ec + oc_ec | income + rooms + agehed\",\n",
" \"er ~ ic_er + oc_er | income + rooms + agehed\",\n",
" #'hp ~ ic_hp + oc_hp | income + rooms + agehed'\n",
"]\n",
"\n",
"idata_new_policy = mnl.apply_intervention(\n",
" new_choice_df=new_policy_df, new_utility_equations=new_utility_formulas\n",
")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here agains we see a basically proportional re-allocation where the market demand is re-allocated equally across the remaining goods. "
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
policy_share
\n",
"
new_policy_share
\n",
"
relative_change
\n",
"
\n",
"
\n",
"
product
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
gc
\n",
"
0.636065
\n",
"
0.674460
\n",
"
0.060364
\n",
"
\n",
"
\n",
"
gr
\n",
"
0.143567
\n",
"
0.151770
\n",
"
0.057142
\n",
"
\n",
"
\n",
"
ec
\n",
"
0.071026
\n",
"
0.075343
\n",
"
0.060773
\n",
"
\n",
"
\n",
"
er
\n",
"
0.093405
\n",
"
0.098427
\n",
"
0.053764
\n",
"
\n",
"
\n",
"
hp
\n",
"
0.055937
\n",
"
0.000000
\n",
"
-1.000000
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" policy_share new_policy_share relative_change\n",
"product \n",
"gc 0.636065 0.674460 0.060364\n",
"gr 0.143567 0.151770 0.057142\n",
"ec 0.071026 0.075343 0.060773\n",
"er 0.093405 0.098427 0.053764\n",
"hp 0.055937 0.000000 -1.000000"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"change_df = mnl.calculate_share_change(mnl.idata, mnl.intervention_idata)\n",
"change_df"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAB9sAAAMrCAYAAADpwvJHAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAA0/dJREFUeJzs3XmY1WX9P/7nGWYAdRAHRQU33MIdV1w/JmWF+1KWueLWx1zSytQWP1ZqpqlZkllpobmk5q65577hLrmFCigguDAiAwoMc35/+GO+IgOzOHPOMDwe1zXXDO/3fe7zOgf1Gl/Pc993oVgsFgMAAAAAAAAAtFhFuQsAAAAAAAAAgEWNsB0AAAAAAAAAWknYDgAAAAAAAACtJGwHAAAAAAAAgFYStgMAAAAAAABAKwnbAQAAAAAAAKCVhO0AAAAAAAAA0ErCdgAAAAAAAABoJWE7AAAAAAAAALSSsB3oMD//+c9TKBTm+aqsrMyyyy6b7bbbLsOHD09DQ0Pj+AEDBsw3/tNfxx9//ELn/vTXMsssM189H3/8cS688MIMGTIkyy23XKqqqrLccstlhx12yB/+8Id8/PHH8z2mqZp69uyZtdZaK0cddVQmTpw4z/ixY8cutK5CoZAbb7yxvd5iAAAAAIBGhx122Dy9yF/84hfzjRk2bNhC+5cbb7xxi8Z9+mvYsGFJkh122GGh4/bcc8/GOkaMGDHf/W7duqVPnz4ZMmRIrrrqqhK8YwCfj7AdKKk5c+ZkypQpeeSRR3Lsscfm5JNPLsnzjh8/PoMHD87RRx+d+++/P++//37q6+vz/vvv54EHHsgxxxyTwYMHZ8KECc3ONXPmzLz++uv54x//mG233TbTp08vwSsAAAAAAFiwGTNm5Nprr53n2qWXXppisVimilqvoaEhtbW1uf/++7PffvvlD3/4Q7lLAlgoYTtQEgcffHCKxWI++uij/OQnP2m8PmLEiCbH33fffSkWi/N8nX/++Qud+9NfH3zwQeP9YrGYvffeO6NGjUqSDB48OM8++2xmzpyZZ599NltssUWSZNSoUdl7770X+Mvnfffdl/r6+jz66KPp1atXkk9Wst90000LfN2fratYLM7z6U0AALquk08+OQMHDsz1119f7lLoxC644IIMHDgwF1xwQblLAQAWcdddd12mTZuWJCkUCkmSMWPG5MEHH1zgY0499dT5+pfPPfdckk96t5++fvDBBy/wcU31ef/2t7/NN/eCdv384he/mGKxmNra2hxyyCGN13/3u9+18l0AKC1hO1BSPXv2zAEHHND45xkzZnT4c95888158sknkyTdu3fPDTfckI033jjdu3fPxhtvnOuvvz5VVVVJkpEjR+aWW25Z4FzdunXL1ltvnR133LHx2rhx4zr2BQAA0OhLX/pSBg4cOM/XRhttlB133DE//vGPM3r06HKX2GmMHz8+F1xwQZvD/uuvv36+93qdddbJFltskW9961u55JJLMnPmzHauGgCAtvp04H3kkUc2eb2zW2aZZeY5TlTvFejshO1ASc2cOXOes3b22WefDn/O22+/vfHnnXbaKf3795/n/sorr5yhQ4c2/vmOO+5ods5Pr35ffvnl26FKAABaY8CAAdl0002z6aabZtVVV82kSZNy/fXXZ++9986///3vcpfXKUyYMCHDhw/PDTfc8Lnm6d69e+N7PWjQoPTs2TPPPfdczj777Hz7299OXV1dO1UMAEBbvfnmm7n//vuTJP37989ZZ52VJZZYIknyz3/+c5E6ClPvFViUCNuBkrj00ktTKBTSs2fPnHbaaUmSTTfdNL///e+bHD9kyJAUCoV5vub+sriguT/9NWzYsMb7b775ZuPPa6yxRpNzrLnmmo0/L+zTknPmzMnjjz+ee+65J0nSq1ev7LHHHgsc/9m65m7fBADA5/O///u/ueqqq3LVVVfl1ltvzf33359tttkms2bNyo9//ONFqpnY2fXt27fxvb766qvz0EMP5eKLL86SSy6ZF198MX/5y1/KXSIAwGLv0ksvTUNDQ5JPFjj16tUrO++8c5Kkrq4u//znP5t83C9+8Yv5+pc///nP26WmQw45ZL65m1tl/8EHH8xznOiBBx7YLrUAdBRhO1A2zzzzTHbffffMmTOnQ59nQWewt3bMkCFDUllZma233jp1dXVZf/31c+edd2a55ZZrjzIBAPgclltuuZx99tnp3r17Pvjggzz66KPlLqlL+5//+Z/GMzvvuuuuMlcDAMBll13W+PO3vvWteb4nnX8r+QceeCCFQiE1NTUZMWJEunfvnuOOOy6//OUvy10awEIJ24GSOPjgg1MsFjN79uyMHDkyffv2TZLcf//9ufXWW+cbf99996VYLM7ztcMOOyx07k9/ffqXx9VWW63x5zfeeKPJOT59/dPjF2b69OmZPXv2Qsd8tq6WhPoAALRN3759M2DAgCTJ2LFjk3xybvnAgQPzpS99KUlyzTXX5Otf/3o22WSTDBw4cJ7HP/PMMznmmGOyzTbbZIMNNsj222+fE088Ma+//voCn3PGjBk599xz86UvfSkbbrhhvvSlL+XXv/71QlfWH3jggRk4cGCeeOKJJu+ffPLJGThw4ALPWn/hhRdywgknZIcddsgGG2yQbbbZJvvuu2/+8pe/ZNq0aY3PcdBBByVJRo4cOc+563Pfi89rww03TPLJdvVN+eCDD/Lb3/42u+66azbeeONssskm+eY3v5lrrrmmcdXVp336dU+YMCEnnHBCttlmm2yyySb51re+lUceeaRx7Kuvvppjjz02W2+9dQYNGpT9998/zz333AJrra2tzdlnn52vfe1r2WijjbLFFlvkwAMPzM033zzf7+hnnXVWBg4cuNDG7n//+98MHDgwW2+9derr6xuvP/LII/nlL3+Z3XffPYMHD86GG26YHXfcMaeeemomTpy4wPkAAD6Phx56KK+99lqSpKampvHYn5VWWimVlZVJPgmz5/6O/GmnnnrqfP3L9lrZ/re//W2+uT+9I+nCNDQ05MMPP9RPBTo9YTtQUpWVldliiy2y/fbbN1575ZVXOvQ5d9ppp8af77jjjrz99tvz3J8wYULuvPPOxj9/+vz2T7vvvvsybdq0nH766Uk+aeDuvvvuC2wuAgBQegtrxp166qk55ZRT8v7772eNNdbI0ksv3XjvyiuvzH777Ze77747STJw4MB89NFHuemmm7LXXns1eaTRjBkzcvDBB+fPf/5zJk6cmAEDBmSJJZbIiBEjcuCBB2bWrFnt/vr+8pe/5Jvf/GZuueWWTJs2LV/4whey1FJL5T//+U/OOeecvPTSS0mSL3zhC/nCF76QJKmurm48c33TTTfNBhts0C61fPzxx0nSeBbop40ePTq77757LrrooowdOzYrrbRSlltuubzwwgs55ZRTcvzxxy/w72r8+PH5+te/nnvvvTcrrrhievTokeeeey7f+c538thjj+Wpp57Kvvvum8cffzz9+vVLVVVVnnrqqQwbNiyjR4+eb75x48Zlr732yiWXXJIJEyZkrbXWSu/evTNy5Mj86Ec/ysknnzxPLbvuumuST/7fYUG7cM39wPDQoUMbG9hJcsQRR+TKK6/Me++9l/79+2fAgAF5//33849//CN77bVXYxMcAKA9fXrhUW1tbTbddNNssskm2XbbbRs/GFgsFnPppZeWqcLmffGLX8ycOXMyatSoDBw4MPX19fnb3/6WH//4x+UuDWChhO1ASc2ZMydPPvlkHnzwwcZr/fr169Dn3G233bL55psnSWbOnJmvf/3ref755zN79uw8//zz+frXv97YCN1iiy2y2267LXCu6urq/PSnP208p33q1Kk58cQTO7R+AABa5t133824ceOSzL9b0aRJk3LzzTfnwgsvzP3335/rrrsuDz30UJLk5ZdfzhlnnJFisZgf/ehHefjhh3PdddflkUceyX777ZeZM2fmhBNOyDvvvDPPnL/73e/ywgsvZKWVVsott9ySW265JbfddltuvPHGvPfee+2+vfo999yTc845JxUVFTn55JPz+OOP5/rrr8/dd9+dJ598MqeddlrjEUennHJKfvaznyVJ1ltvvcYz16+66qr8/ve/b5d65v5Ov84668xzfcaMGTnqqKMyefLkHHjggXn88cdz22235e67786tt96atddeO3feeWeuvPLKJuf985//nG222SYPPfRQrr/++jz66KPZb7/9Ul9fn1//+tc58cQTG1e6z70/ZMiQfPTRR/nDH/4wz1zFYjE/+MEP8vbbb2fw4MG5//77c/311+eee+7JX/7ylyy55JK58cYbc9VVVzU+Zv31188aa6yR999/P4899liTNd52221J/l8wP9epp56aBx54II8++mhuvPHG3HLLLXnsscfy/e9/Px988EF+8YtftO5NBgBoxowZM3Lttde2aOyll17aqVeKV1RUZIMNNsiVV16ZiopP4qvzzz8/L7/8cpkrA1gwYTtQEpdeemkKhUIqKyszePDgvPvuu0mSNdZYI3vvvfd844cMGZJCoTDP14K2kW9ORUVFbrjhhsZtLh977LFsvPHG6d69ezbeeOPG7Ts33HDDXH/99SkUCs3O+Zvf/CZVVVVJkquuuiojR45sctxnX0OhUGi3bZgAAPh/3n///Zx44omZNWtWevfunW222Wae+3PmzMn3vve9fPnLX2681rNnzyTJJZdckvr6+nz5y1/O4Ycf3tjY6969e/7v//4va6+9dqZNmzZPIFtXV5err746yScB69prr914b5111skpp5zS7JFDrfXb3/42SXL00UfnkEMOafx9NPlkdfk3v/nNrLnmmu36nJ81Z86cvPXWW/ntb3+bm266KRUVFTn88MPnGXPdddflzTffzFe+8pX87Gc/S3V1deO9tdZaK+ecc04KhUL+9re/NfkcyyyzTM4444zGx1VUVOQHP/hBevTokVdeeSW9e/fOSSedlO7duyf55O9p7gdg536AYq7HHnss//nPf9K9e/ecd955jR9GSJLtt98+Rx99dJLk4osvnqfxvMsuuyT5f6H6pz333HMZP358VlpppWy66abz3PvWt76VFVZYYZ5rPXv2zJFHHpnNNtssI0eOzOTJk5t83QAAbXHdddc1HiW0ySabzLdte319fVZaaaUkyZgxY+ZZBNXRDjnkkPl6o3OPfVqYTTfdtPFIpDlz5uRHP/pRB1cK0HbCdqDkllhiiayzzjr5/ve/n8cee2ye5ltHWXnllTNy5MgMHz48X/ziF9OnT59UVlamT58+2X777XPBBRdk5MiRWXnllVs039prr52jjjoqySerZX74wx92ZPkAAHzGn/70p3z729/Ot7/97ey666754he/mEcffTRVVVU57bTTmvwdc+7uRJ819yzwAw88cL57hUKh8fqnzwx/+umn89FHH2WllVaa54ikub785S/PF7p+HuPGjctrr72WqqqqHHzwwe02b0tMmDCh8bz39dZbLzvuuGMuuuii9OvXL+eee27+53/+Z57xc1f077PPPk3Ot84662SllVbKW2+9lUmTJs13f9ddd51va/pevXo1/q6+9957z/cB2TXWWCM9e/ZMXV1damtrG68//PDDST7Z7r1v377zPde+++6b7t27Z8KECXnjjTcar8/d7eruu++e7ziAuVvI77zzzk1+UHfUqFE555xzcuSRR+aAAw5o/Od07hmpHX2MFgCwePn01vCHHnrofPe7des2z++Pn95yvjM744wzsuSSSyb55AOQ99xzT5krAmhaZfNDANrm5z//eatWcc9tPnXE3MknK0qOPvroxtUrn7em888/P+eff/481wYMGNCpt2ICAOgqxo4d2/i7WlVVVfr27ZvNN988hx56aNZdd935xtfU1KRPnz7zXf/www8zZcqUJFngqvC11lqr8TnnGjNmTJJk9dVXbzJwraioyIABA9ptFfPrr7/eWEspPqz6ad27d288533mzJkZO3Zspk+fnpqammy88cbzjf/vf/+b5JNt9i+66KIm55wbiE+ePDkrrrjiPPdWWWWVJh/Tp0+fvP7661l11VUXeH/ixImZMWNGampqkvy/v7O5f4efVV1dnX79+mXcuHEZO3Zs4z8Dq622WjbccMOMGjUqDzzwQL7yla8kSRoaGnLHHXckmX8L+WKxmF/+8pcL3B5/rqlTpy70PgBAa7QkhD7jjDNyxhlnzHOtLaH7iBEjmn3c/fff3+L5hg0blmHDhjV5r3///pk+fXrLiwMoE2E7AAAAi5wzzzyzyeOIFmTuqpjPmjFjRuPPyy67bJNj5m49/ulm39zHNRXgf/Zx7aGuri7JJyu8S61v377zbKE/ffr0/PrXv84111yT73znO7nuuuvSo0eP+Wp98cUXm537448/nu/aZ1e1zzX3Qw1zt/9f0P1Pf/i1JX9Pyy67bMaNGzdfM3fXXXfNqFGjcuuttzaG7U888UTefffdrLXWWvOdVX/TTTflyiuvzJJLLpkf/ehH2XbbbbPCCis01nvCCSfklltuSX19/QJrAQAAYNEibAcAAGCx9ekQ/v3338/yyy8/35j33nsvSbLUUkvN97i5q+Kb8v777y/0uRe0I9KnPwAw19znnnseZzkttdRS+fnPf54XX3wxL774Yi655JLGI5aST96bDz/8MHfddVdWW221Mlbaur+nT//9Jp9sE3/WWWfl/vvvT11dXaqrqxu3kJ97pvun3XLLLUmSk046Kfvuu+9895vaMh8AAIBFmzPbAQAAWGwtvfTSjaue527V/lmvvfZakk+ODJpr9dVXT/LJdvJNheYNDQ2NW81/VnMB8JtvvjnftbXXXruxlrkrx5vT1Pb27aVbt275/ve/nyT561//Os+HAOZuxT569OgOe/6Wmvt3Nvfv8LPq6ury9ttvzzN2ruWXXz6DBw/Oxx9/nHvuuSezZs3K3XffnWT+LeSTZPz48UmSTTbZZL57s2fPXuA/XwAAACy6hO0AAAAs1rbbbrskyd///vf57hWLxVx++eXzjEuSzTbbLEsssUQmTJiQhx56aL7H/fvf/17gee1zzyQfNWrUfPdGjRqVV155Zb7rq666ar7whS9k9uzZTdbZlLnblze1VXt7+J//+Z+st956mTZtWuN7lCRf/epXkySXXXbZAlfvl8r//M//JEnuuOOOvPvuu/Pdv/rqqzNr1qystNJKWWONNea7PzdUv+222/Lggw9m6tSp2WijjZo8N37u+93UjgbXX3/9QlfXAwAAsGgStgMAALBYO/TQQ1NZWZl77703f/3rX9PQ0JAkmTVrVs4444z897//Ta9evfLtb3+78THV1dXZZ599kiS/+MUv5lm1/Morr+T0009PVVVVk883NwC+9tpr88ILLzReHzt2bE4++eRUVjZ94ttxxx2XJBk+fHguu+yyzJ49u/HeRx99lGuvvXaeOlZeeeUkn6zq7qig9/DDD0+SXHrppfnoo4+SJN/61reyyiqr5IknnsgJJ5yQd955Z57HTJ8+Pf/6179y5plndkhNn7bVVltlww03zKxZs/KDH/xgniD84YcfzvDhw5MkRxxxRJM7AXzta19L9+7d8+ijj+aKK65I0vSq9uSTD2Akyfnnnz/P+/3ggw/m7LPPnudcewAAALoGZ7YDAACwWFt33XXz05/+NL/85S9z1lln5ZJLLkm/fv0ybty4fPjhh+nevXvOOeec9O3bd57HHX/88Xn66afz4osvZpdddmnc6n306NFZb731summm+a2226b7/m23377bLPNNnn00UfzrW99K6uttlqqqqry2muvZbPNNss666zTeDb4p+2444754Q9/mPPOOy9nnHFGfv/732e11VZLXV1dJkyYkNmzZ+eyyy5r3Ma9T58+2WqrrfL4449nxx13zFprrZUePXpkueWWy29/+9t2ee+GDh2a8847L+PHj8/VV1+dYcOGZamllsqf/vSnfOc738mtt96af/3rX1l99dVTXV2dqVOn5q233sqcOXMyaNCgdqlhYQqFQs4999wcdNBBGTlyZHbYYYesvfbaqaury7hx45Ike+yxR5NnrCefHDOw/fbb55577smjjz6aioqK7LTTTk2OPfzww3Pbbbfl+eefz5AhQ7L66qvnww8/zIQJE7Lllltm+eWXbzzXHQAAgK7BynYAAAAWe/vtt1+uuOKK7LjjjmloaMgrr7ySnj17Zvfdd88NN9yQHXbYYb7HLLXUUvn73/+eI444Iv3798+YMWMyffr0DBs2LH//+9/TvXv3Jp+rUChk+PDhOeSQQ7L88stn/PjxmTFjRr7zne/kr3/96wJXxCfJd77znfzjH//ITjvtlJ49e+bVV19NXV1dNthgg5x44olZf/315xl/7rnnZu+99051dXVefPHFjBw5Ms8///zneq8+rVu3bjn00EOTJH/7298ya9asJJ+c237TTTflhz/8YTbccMNMnjw5L7/8cmbPnp0tttgiJ510Us4777x2q2NhVltttdxwww059NBD079//4wePTrvv/9+tthii5x99tk566yzFnq+/adXss8NzZvSv3///OMf/8hXv/rVVFVV5Y033kiPHj1y7LHH5uKLL17gjgUAAAAsugrFch+gBgAAAAAAAACLGCvbAQAAAAAAAKCVhO0AAAAAAAAA0ErCdgAAAAAAAABoJWE7AAAAAAAAALSSsB0AAAAAAAAAWknYDgAAAAAAAACtJGwHAAAAAAAAgFaqLHcBnVltbW25SwC6gEmTJmXEiBEZNmxYVlxxxXKXAwAAAADQJenFAu2ppqam2TFWtgN0sKqqqvTv3z9VVVXlLgUAAAAAoMvSiwVKrVAsFovlLmJBXnjhhVxwwQV57rnnMnv27Ky11lo5+OCDs9tuu7Xo8QceeGBGjhy50DFnnXVW9txzzybvWdkOAAAAAAAAsPhpycr2TruN/BNPPJHDDjssVVVV2WWXXdKrV6/cddddOeGEEzJhwoQceeSRzc6x1157ZfDgwfNdr6+vz5/+9KdUVFRk66237ojyARq9//77ue2227LLLrtk2WWXLXc5AAAAAABdkl4sUGqdcmV7fX19dtppp0yaNClXX3111ltvvSRJXV1d9t1334wZMya33XZbBgwY0Kb577zzznzve9/LkCFDctFFFy1wnJXtQHt4/vnnM2TIkNx3330ZNGhQucsBAAAAAOiS9GKB9rTIntn++OOP580338yuu+7aGLQnSXV1dY466qjU19fn+uuvb/P81157bZLkG9/4xueuFQAAAAAAAIDFT6cM2+ees77ddtvNd2/bbbedZ0xrTZo0KY888kj69u2bHXbYoc01AgAAAAAAALD46pRh+9ixY5Mkq6222nz3evfunZqamowbN65Nc1933XVpaGjIXnvtlcrKTntkPQAAAAAAAACdWKdMm+vq6pIkvXr1avJ+dXV1Jk2a1Op5i8Vi4/bzLdlCvnfv3qmo6JSfRwAWIf37988Xv/jF9O/fv0XnewAAAAAA0Hp6sUCpdcqwvaM8/vjjGT9+fAYPHtzkqvnPmjp1agmqArq6vn375oYbbkiS1NbWlrka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Qj55X361/a/SraJbhzz/5ptvnmOPPTZvvPFG1lhjjVx11VWN9wYPHpzjjjsuTzzxxDzbyNfU1OSXv/xl+vXrlyOOOGK+OffYY49cfPHFOfnkk/PMM89k8uTJ2WqrreYbt+OOO+YXv/hFJk6cmP79++fee+/Nuuuu2xi0J8kVV1yRXXbZJb179+6Q1w8I2wEAAAAAoKTqG+rbfD72As/obuH53E3NO6c4p9xvyULNF0q3YpvxlobirZl3cQ63O6Pd1totI3YekR8/+ONMrJvYeL1/df/8avtfZbe1duuw515++eVz7rnnZt99901NTU2GDh2aqqqqLLnkkqmoqMhll12WU045JXV1dSkUCvnJT36SnXbaKS+++GIGDRrU5JynnnpqjjzyyGy++eapqqrKRRddlMrKT+K8X/3qV+nXr18OOeSQLLXUUvnNb36TfffdN8ViMb17986f//znxnmKxWKuuuqqDB8+vMNeP5AUigs67IHU1taWuwSgC5gxY0ZGjx6dtddeO0suuWS5ywEAAABY7MwNtxcUXrd0RXdrQ/EFzdtQbCj3W7JAhRRKHl4vbN6qiirhNi0yp2FO7nvjvrww5oVstPpGGbLGkA5b0f5p06ZNS69evZJ8spL88ssvz+23377A8Q0NDfnqV7+au+66KxUVpdtyH2i9mpqaZscI2xdC2A4AAAAA0DrFYrHJldsdGV43N66zh9st3T68FCu6KysqhdvQCueee25uuumm1NfXp6amJuedd14GDhxY7rKAdiBs/5yE7UB7GD9+fH73u9/luOOOy8orr1zucgAAAIAuplgsZnbD7JKG183N++lzkzubikJFp9mOXLgN7UsvFmhPLQnbndkO0MHef//9XHLJJTnggAP8ggcAAABdwNxw++P6VoTSrThTu6Xzzg3FZ82Z1anD7W6Fbp87vO7RrccCf27tvJUV2uLQVenFAqXmtwoAAAAAoFMrFoslCa9bM29nVllR2erweqGrtJvY4rw1K7pLcWYyAEA5CNsBAAAAgHkUi8X5Auj5VlTXl25F96yGWeV+SxaqsqJyvpC5teH1wgLxlgblPSp7pHtFd+E2AECJCNsBAAAAoMwaig0LDKobr9W3Ibyee/Z2fctC8bk/z26YXe63ZKGqKqpat0K7svnweoGrtCubD7krChXlfksAACgDYTtAB1tuueXy3e9+N8stt1y5SwEAAOD/9+lwu6nV1M2G182F3fULD8U/e62zh9vdKzp+pXbj98qmx316xbhwG4Cm6MUCpVYoFovFchfRWdXW1pa7BAAAAIAuYU7DnFZtMd7ktfqWr+hubvV3fUN9ud+ShWrpyutWr9RuYyheKBTK/ZYAAEBJ1dTUNDvGynaADlZXV5eXXnop6623Xqqrq8tdDgAAsJiob6hv8/nYrQnAWzrvnOKccr8lC1Xq8Lq578JtAGg9vVig1ITtAB3s9ddfz9ChQ3Pfffdl0KBB5S4HAADoIPUN9QsNr1u6oru1ofiC5m0oNpT7LVmgQgolD68XNm9VRZVwGwC6AL1YoNSE7QAAAMAip1gszrdyu6PD6+bGdeZwu6JQ0Wm2I+/RrUcqKyqF2wAAwCJP2A4AAAA0q1gsZnbD7IWH0q04T/vjOa0IuxcwbzHFcr8tCzQ33O4M25H3rOyZygotIAAAgPbm/7QAAACgEyoWiy0Oo9srvF7YvLPmzOrU4Xa3QrfPHV635FpL5xVuAwAAdH3+zw+gg1VWVmbZZZdNZaX/5AIAdGafDbc7OrxuyfjOrLKistXh9QLHVrY87F7Q9W4V3cr9lgAAUGZ6sUCpFYrFYuf9WHqZ1dbWlrsEAACALqtYLM53LvZ8Z2TXl25F96yGWeV+SxaqqqJqvpB5oVuMV7Zwi/FuC16lvaAV3d0rugu3AQAA6NJqamqaHeOjPQAAAIuJhmJD0wH0p6/VtzK8/vTj61s2fu7Psxtml/stWajPhtvNrtCubH719QJXaVc2v6K7olBR7rcEAAAA+BRhO0AHe/nll3PAAQfk8ssvz7rrrlvucgCAEpobbi9oNXWz4XVzK7rrFx6Kf3b1d31DfbnfkoXqXrGQldoL2Ga8tSu1G79XNh2Kf3rFuHAbAAAWLXqxQKkJ2wE62KxZszJmzJjMmtW5tyUFgK5gTsOcVm0x3trwurmg/LPfO3u43a7hdTuE4oVCodxvCQAAsAjTiwVKTdgOAAC0WX1DfZvPx27qjO7Pe+72nOKccr8lC1Xq8Lq578JtAAAAgLYTtgMAwCKkvqG+1auv22tL8qZWijcUG8r9lixQIYWShtfNzVtVUSXcBgAAAOhChO0AALAAxWJxvpXbHRFet2bezhxuVxQqOs125D269UhlRaVwGwAAAIAOI2yHFnr33Xfz3e9+N2PHjk337t1z3nnnZauttmpy7Pjx4/OjH/0or7/+egqFQg477LB85zvfmWfMMccckyuvvDJvvvlmqqurS/ESKJPVV1891157bVZfffVylwLQ6RWLxcxumF3S8Lq5eYsplvttWaCKQkWn2I587ryVFf73AgAAgPLRiwVKTTcMWugXv/hFNt988/zzn//MM888k2HDhuWZZ55JZeW8/xoVi8UceOCBOe6447LnnnumWCzmnXfemWfMHXfcYZXVYmTppZfOl7/85XKXAdCkYrFY1u3IPzvvrDmzOnW43a3Qrc3hdY9uTY/9PKG4cBsAAAD+H71YoNR05+iybr755pxxxhnp2bNndtttt/zqV79qXEU+cuTI/PznP8+0adNSLBbzk5/8JDvvvPNC57vpppvy7LPPJkk23XTTLL/88nn88cez3XbbzTPugQceSM+ePbPnnnsmSQqFQlZYYYXG+1OmTMnZZ5+dG2+8MVdccUX7vmg6pUmTJmXEiBEZNmxYVlxxxXKXA5TZp8Ptcm9HPvd7Z1ZZUdnq8LrJVdqVC16l3ZoV3d0qupX7LQEAAAAWQC8WKDVhO13Su+++m+9///u56667suaaa+aPf/xj473a2tocdNBBufTSS7PlllumoaEhU6dOXeh8U6ZMSUNDQ5ZbbrnGa6usskrGjx8/39hXX301yy23XA477LC89tprWXXVVXPaaadlwIABSZIf/ehHOemkk7L00ku3z4ul05s8eXLOPvvs7LTTTn7BgzJoKDY0rpj+dAj98ZxPhdf1pVvRPathVrnfkoWqqqiaL2ReWEjdo/Lzb0m+oBXd3Su6C7cBAACAFtOLBUpN2E6X9NRTT2WjjTbKmmuumSTZf//989Of/jRJ8uSTT2bgwIHZcsstkyQVFRWpqalpds7PbvteLDa9xe3s2bPzwAMP5M4778y6666bESNG5PDDD88999yTG2+8Md27d8/Xvva1z/PyADq1hmLDAgPrxp/rWxFez/lMeF2/8FD8s9dmN8wu91uyUJ8Nt5tdqV3ZhvO0585b2fyq8IpCRbnfEgAAAACARYKwnS6pWCy265noffr0SZK89957javbx48fn5VXXnm+saussko23HDDrLvuukmSb37zmznhhBMyZ86cPPzww3nwwQczaNCgxvHbbLNN/vGPf2S99dZrt3qBxcvccHtBAfbnWandklD8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ANBanfLM9scffzxvvvlmdt1118agPUmqq6tz1FFHpb6+Ptdff32z89x5550ZNWpUDj300PmC9iSprOyUnzUAuph+/frltNNOS79+/cpdCgAAAABAl6UXC5Rap0ybR44cmSTZbrvt5ru37bbbzjNmYf71r38lSYYOHZq33347999/f6ZNm5ZVVlkl22+/fZZaaql2rBqgacsvv3yOPvrocpcBAAAAANCl6cUCpdYpw/axY8cmSVZbbbX57vXu3Ts1NTUZN25cs/P85z//SZI8/fTTOfPMMzNr1qzGe3369Mn555+fLbfcsn2KBliADz74IPfff3922GGHLLPMMuUuBwAAAACgS9KLBUqtU4btdXV1SZJevXo1eb+6ujqTJk1qdp73338/SXL66afn0EMPzQEHHJDu3bvntttuy1lnnZWjjz46//rXv7L88ss3+fjevXunoqJT7rQPLELGjBmTQw89NE8//XRWX331cpcDAAAAANAl6cUCpdYpw/b2UiwWkyQ77LBDTjjhhMbrBx54YCZPnpy//OUv+ec//5mjjjqqycdPnTq1JHUCXduHH37Y+L22trbM1QAAAAAAdE16sUB7qqmpaXZMp1y2XV1dnSSZNm1ak/fr6uoWuOq9qXm+9KUvzXdvyJAhSf7fVvMAAAAAAAAA0FKdMmwfMGBAkjR5LvvUqVNTW1vb5HnunzV3i5Cll156vntzr82cOfNzVAoAAAAAAADA4qhThu1bbLFFkuThhx+e794jjzySJBk8eHCz82y11VZJktdee22+e3OvrbTSSm2uE6AlevbsmY022ig9e/YsdykAAAAAAF2WXixQaoXi3IPNO5H6+voMHTo0kydPzjXXXJN11103ySfbx++7774ZM2ZMbr311saV61OmTEltbW1qamrSp0+fxnneeuut7LzzzunVq1duuOGGrLDCCo3zHHDAAXn55ZczYsSIbL311k3W4TwPAAAAAAAAgMVPS85s75Rhe5I8/vjjOfzww1NVVZVdd9011dXVueuuuzJ+/Pgcf/zx+e53v9s49oILLsjw4cNzzDHH5Nhjj51nnr///e85/fTTs8wyy+QrX/lKunfvnvvvvz8TJkzIt771rfzyl79cYA3CdgAAAAAAAIDFT0vC9k65jXzyyRbwV155ZTbbbLPcfvvtufLKK7PMMsvkN7/5zTxBe3MOPPDA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AAAAAAAAANBKwnYAAAAAAAAAaCVhOwAAAAAAAAC0krAdAAAAAAAAAFqpUCwWi+UuorOqra0tdwlAF/Dxxx9n4sSJ6d+/f3r27FnucgAAAAAAuiS9WKA91dTUNDumU4ftL7zwQi644II899xzmT17dtZaa60cfPDB2W233Vr0+CeeeCIHHXTQAu9fffXV2XjjjRd4X9gOAAAAAAAAsPhpSdheWYI62uSJJ57IYYcdlqqqquyyyy7p1atX7rrrrpxwwgmZMGFCjjzyyBbPNXjw4AwePHi+6yuuuGJ7lgzQpHHjxuVXv/pVfvKTn2S11VYrdzkAAAAAAF2SXixQap0ybK+vr8/PfvazFAqFXHHFFVlvvfWSJEcffXT23XffXHDBBRk6dGgGDBjQovkGDx6cY489tgMrBliwDz74INdee22OOuoov+ABAAAAAHQQvVig1CrKXUBTHn/88bz55pvZddddG4P2JKmurs5RRx2V+vr6XH/99WWsEAAAAAAAAIDFWadc2T5y5MgkyXbbbTffvW233XaeMS0xduzYXHbZZfn444/Tv3//bLPNNunTp0/7FAsAAAAAAADAYqdThu1jx45Nkia3+Ojdu3dqamoybty4Fs9366235tZbb238c8+ePXPsscfm8MMP/9y1AgAAAAAAALD46ZRhe11dXZKkV69eTd6vrq7OpEmTmp2nT58+OfHEE7PDDjukf//++fDDD/PEE0/knHPOyW9+85tUV1dn3333XeDje/funYqKTrnTPrAIGThwYE499dQMHDgwNTU15S4HAAAAAKBL0osFSq1QLBaL5S7isw499NA88sgjueuuu5pc3b7jjjtm0qRJ+c9//tOm+f/73/9m7733Tu/evfPQQw8tMFCvra1t0/wAAAAAAAAALLpa8qGdTrlsu7q6Okkybdq0Ju/X1dUtcNV7S3zhC1/IoEGD8t5777VqO3qAtvjwww9z77335sMPPyx3KQAAAAAAXZZeLFBqnTJsHzBgQJI0GYRPnTo1tbW1Ta54b425n0T4+OOPP9c8AM0ZM2ZM9tlnn4wZM6bcpQAAAAAAdFl6sUCpdcqwfYsttkiSPPzww/Pde+SRR5IkgwcPbvP89fX1eemll1IoFNKvX782zwMAAAAAAADA4qlThu1bb711Vlllldx66615+eWXG6/X1dXlwgsvTGVlZfbaa6/G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jIsePXqkV69eGTly5DzXZ8yYkZdeeil9+/Ztn0oBAAAAAAAAoJMoFIvFYnODnn322Zx22ml55ZVX8vWvfz0/+MEPUlNT03j/t7/9bf70pz9lq622ygYbbJCPP/44//73vzNx4sT88Ic/zBFHHNGhL6Kj1NbWlrsEoAuYNWtW3n333fTt2zfdu3cvdzkAAAAAAF2SXizQnj6dhy9Ii8L2JCkWi7nqqqvyu9/9Lkly3HHH5dvf/nYKhUKKxWJGjBiRv/71r3n33XeTJCuuuGKOOOKI7L///p/jJZSXsB0AAAAAAABg8dOuYftcH3zwQc4999xcd911GThwYE455ZRsuummjffr6uqSJNXV1a0st/MRtgPtYezYsfn5z3+en//85xkwYEC5ywEAAAAA6JL0YoH21JKwvUVntn/aMsssk9NOOy3XXHNNqqqqsv/+++fkk0/OlClTknwSsneFoB2gvUydOjU333xzpk6dWu5SAAAAAAC6LL1YoNRaHbbPtcEGG+Saa67JaaedlgcffDBf+9rXcumll6ahoaE96wMAAAAAAACATqdVYft7772Xxx57LHfccUdeeOGFzJo1K9/4xjdy5513Zvfdd8/ZZ5+dPfbYI08++WRH1QsAAAAAAAAAZVfZkkGzZs3KmWeemWuvvTZz5sxJsVhMoVDICiuskJNPPjlDhw7NKaeckn322SennXZaDjrooOy888458cQTs8IKK3T0awAAAAAAAACAkioUi8Vic4NOP/30XH755dl2222z9957Z+mll86YMWMyYsSITJo0KVdffXU23HDDxvE33XRTzjnnnEyfPj1HHXVUDj/88A59ER2ltra23CUAXcDkyZNz5ZVXZr/99vMBJAAAAACADqIXC7SnmpqaZse0KGzfeuut069fv1x//fXzXH/11Vezxx575JBDDslJJ500z73p06dn+PDhufzyyzNq1KhWlt45CNsBAAAAAAAAFj8tCdtbdGb7Rx99lOWWW26+63379k2SzJw5c757Sy21VE466aTceOONLXkKgC5r6tSpuf322zN16tRylwIAAAAA0GXpxQKl1qKwfcstt8zDDz+ciy++OO+//35mz56d1157LT/5yU9SKBQyePDgBT52zTXXbLdiARZFY8eOzf7775+xY8eWuxQAAAAAgC5LLxYotcqWDPq///u/HHHEETnnnHNy7rnnznNvn332ydChQzukOAAAAAAAAADojFoUtq+00kq59dZbc9ddd+Xll1/Ohx9+mH79+mX77bfPOuus09E1AgAAAAAAAECn0qKwPUkqKioydOhQq9gBAAAAAAAAWOy16Mx2ANquR48eGThwYHr06FHuUgAAAAAAuiy9WKDUCsVisVjuIjqr2tracpcAAAAAAAAAQInV1NQ0O8bKdgAAAAAAAABoJWE7QAcbNWpUVl111YwaNarcpQAAAAAAdFl6sUCpCdsBOlhDQ0Pq6urS0NBQ7lIAAAAAALosvVig1Dp12P7CCy/kiCOOyBZbbJGNN9443/jGN3LLLbe0eb7Zs2dnjz32yMCBAzN06NB2rBQAAAAAAACAxUllWx40ceLELLnkkllmmWUWOm7q1KmZPn16+vfv3+rneOKJJ3LYYYelqqoqu+yyS3r16pW77rorJ5xwQiZMmJAjjzyy1XNeeOGFefPNN1v9OAAAAAAAAAD4tDatbP/yl7+cs88+u9lxv/nNb7Ljjju2ev76+vr87Gc/S6FQyBVXXJHTTz89J510Um666aasvfbaueCCCzJ27NhWzfniiy/mz3/+c37wgx+0uh4AAAAAAAAA+LQ2he3FYjHFYrHFY1vr8ccfz5tvvpldd9016623XuP16urqHHXUUamvr8/111/f4vlmzZqVk08+OYMGDcoBBxzQ6noAPo+111479913X9Zee+1ylwIAAAAA0GXpxQKl1qZt5FuqtrY2PXv2bPXjRo4cmSTZbrvt5ru37bbbzjOmJYYPH55x48blpptuSqFQaHU9AJ/HkksumUGDBpW7DAAAAACALk0vFii1FoftTz755Dx/fu+99+a7Nld9fX3GjBmThx56qE2fHpq7Rfxqq602373evXunpqYm48aNa9FcL7zwQi6++OJ8//vfz+qrr97qWgA+r/Hjx+d3v/tdjjvuuKy88srlLgcAAAAAoEvSiwVKrcVh+4EHHjjPqvCHH344Dz/88ALHF4vFFAqFHHrooa0uqq6uLknSq1evJu9XV1dn0qRJzc4za9as/PjHP866667bpjp69+6dioo27bQP0GjMmDG55JJLctRRR6Wmpqbc5QAAAAAAdEl6sUCptThs33PPPRvD9htuuCGrrrpqNt100ybHVlVVZfnll8+QIUOy/vrrt0+lbXD++edn3Lhxue6669KtW7dWP37q1KkdUBWwuPnwww8bv9fW1pa5GgAAAACArkkvFmhPLfnQTovD9l//+teNP99www3ZdNNNc+aZZ7atsmZUV1cnSaZNm9bk/bq6ugWuep/rxRdfzIgRI3LUUUdl4MCB7V4jAAAAAAAAAIuvFoftn/bKK6+0dx3zGDBgQJJk3Lhx2WCDDea5N3Xq1NTW1maTTTZZ6Byvvvpq5syZkwsuuCAXXHDBfPfHjBmTgQMHplevXnnqqafarXYAAAAAAAAAur42he2f9sEHH+TFF19MbW1t+vfvv8Ct5Vtjiy22yJ/+9Kc8/PDD2WWXXea598gjjyRJBg8evNA5BgwYkG984xtN3vvnP/+ZXr165Wtf+1qWWGKJz10vwMIst9xy+e53v5vllluu3KUAAAAAAHRZerFAqRWKxWKxLQ987733cvrpp+fuu+9OQ0NDkk/OdZ+7tfwVV1yR3/3ud7nwwguz+eabt2ru+vr6DB06NJMnT84111yTddddN8kn28fvu+++GTNmTG699dasvvrqSZIpU6aktrY2NTU16dOnT7PzDxw4MKuvvnruuOOOhY5zngcAAAAAAADA4qclZ7ZXtGXiKVOmZN99980dd9yRgQMHZv/9989nM/sdd9wx06dPbzbQbkplZWVOP/30FIvF7LfffjnllFNy1llnZY899sjo0aNzzDHHNAbtySfB/s4775wrrriiLS8HoEPV1dVl5MiRqaurK3cpAAAAAABdll4sUGptCtsvvPDCjB8/Pt/73vdy/fXX52c/+9l8Y1ZYYYWsscYabT4PfauttsqVV16ZzTbbLLfffnuuvPLKLLPMMvnNb36T7373u22aE6AcXn/99QwdOjSvv/56uUsBAAAAAOiy9GKBUmvTme3//ve/s+aaa+aoo45a6LiVVlopzz33XFueIkmy0UYb5eKLL2523LHHHptjjz22xfO++uqrba4JAAAAAAAAANq0sv3dd9/N2muv3ey47t27Z/r06W15CgAAAAAAAADotNoUtvfq1SuTJ09udty4cePSt2/ftjwFAAAAAAAAAHRabQrbN9lkk4waNSqjR49e4Jinn346r776ajbffPM2FwfQFVRWVmbZZZdNZWWbTu4AAAAAAKAF9GKBUmtT2H7IIYdkzpw5+e53v5vHHnssDQ0N89x/6qmncuKJJ6aysjLDhg1rjzoBFlnrr79+Ro8enfXXX7/cpQAAAAAAdFl6sUCpFYrFYrEtD7zsssvy61//OsViMUsttVSmT5+epZZaKpWVlZk6dWoKhUJ++tOfZv/992/vmkumtra23CUAAAAAAAAAUGI1NTXNjmnTyvYkOeigg3LllVdmyJAhaWhoSLFYTF1dXWbMmJFtt902l1122SIdtAO0l5dffjmbbbZZXn755XKXAgAAAADQZenFAqXWpkMr6uvrU1lZmY033jgXXnhhisViamtr09DQkJqamnTr1q1x7KRJk7Liiiu2W8EAi5pZs2ZlzJgxmTVrVrlLAQAAAADosvRigVJr08r2E044YZ4/FwqF9OnTJ8stt9w8QfvEiRNz4IEHfr4KAQAAAAAAAKCTaVPYfscdd+T//u//Fjpm/PjxOeCAAzJ+/Pg2FQYAAAAAAAAAnVWbwvavfvWrufbaa3Peeec1ef+tt97KQQcdlIkTJ+akk076XAUCAAAAAAAAQGfTprD93HPPzVZbbZW//OUvueSSS+a5N27cuBx44IGZOHFifvKTn2TYsGHtUSfAImv11VfPtddem9VXX73cpQAAAAAAdFl6sUCpFYrFYrEtD5wxY0aGDRuWUaNG5bTTTss3vvGNjBkzJgcffHDeeeed/OxnP8sBBxzQ3vWWVG1tbblLAAAAAAAAAKDEampqmh3TppXtSbLkkkvmL3/5S9ZYY42ceuqpueSSS3LQQQflnXfeySmnnLLIB+0A7WXSpEn59a9/nUmTJpW7FAAAAACALksvFii1NoftSdK7d+/89a9/zQorrJBzzjkn7733Xn7+859n//33b6/6ABZ5kydPztlnn53JkyeXuxQAAAAAgC5LLxYotcqWDHryyScXev+73/1ufvGLX2TnnXfOmmuuOd/4LbbYou0VAgAAAAAAAEAn06Kw/cADD0yhUFjomGKxmFtuuSW33HLLfPdefvnltlUHAAAAAAAAAJ1Qi8L2Pffcs9mwHQAAAAAAAAAWFy0K23/96193dB0AXdYyyyyTffbZJ8sss0y5SwEAAAAA6LL0YoFSKxSLxWJrH3TZZZdliSWWyD777NMRNXUatbW15S4BAAAAAAAAgBKrqalpdkxFWyY+66yz8u9//7stDwVY7Hz88cd544038vHHH5e7FAAAAACALksvFii1NoXtyy23XHr06NHetQB0Sa+++mo233zzvPrqq+UuBQAAAACgy9KLBUqtTWH7dtttl6effjqzZs1q73oAAAAAAAAAoNNrU9j+/e9/P926dcsJJ5yQd955p71rAgAAAAAAAIBOrbItDzr33HOzzjrr5O67784DDzyQ9dZbL/3790/37t3nG1soFPKrX/3qcxcKAAAAAAAAAJ1Fm8L2G264ofHnmTNn5tlnn82zzz7b5FhhOwAAAAAAAABdTaFYLBZb+6CRI0e2avzgwYNb+xSdQm1tbblLAAAAAAAAAKDEampqmh3TprB9cSFsBwAAAAAAAFj8tCRsryhBHQCLtdGjR+erX/1qRo8eXe5SAAAAAAC6LL1YoNSE7QAdbMaMGXnqqacyY8aMcpcCAAAAANBl6cUCpVbZ1gd+9NFH+dvf/pZ7770348aNy/Tp05scVygU8tJLL7W5QAAAAAAAAADobNoUtk+bNi377bdfXnvttXTr1i1VVVUpFovp27dv3nvvvcw9Br5///7tWiwAAAAAAAAAdAZt2kb+z3/+c0aPHp1vfvObefrpp/O1r30thUIhDz30UJ577rn8+te/znLLLZdBgwbl3nvvbe+aAQAAAAAAAKCs2hS233PPPVl++eXzs5/9LD169EihUGi816NHj+y5554ZMWJE7r777lxyySXtVizAomjVVVfNRRddlFVXXbXcpQAAAAAAdFl6sUCptSlsnzhxYtZbb71UVVUlSWPYPnv27MYxa621VgYPHpwbb7zx81cJsAirqanJN7/5zdTU1JS7FAAAAACALksvFii1NoXtPXr0SPfu3Rv/XF1dnSR577335hnXu3fvjB8//nOUB7Doe++993LxxRfP999IAAAAAADaj14sUGptCttXXHHFTJw4sfHPa6yxRpJk5MiRjdfq6+szatSoLLPMMp+vQoBF3IQJE3LiiSdmwoQJ5S4FAAAAAKDL0osFSq1NYfvmm2+e0aNHZ9q0aUmSIUOGpLKyMmeccUauvPLK/Pvf/873vve9TJgwIVtssUW7FgwAAAAAAAAA5VbZlgftvPPOefHFF/Pss89m++23zworrJAf/OAHOeuss3LaaaclSYrFYpZbbrmccMIJ7VowAAAAAAAAAJRbm8L2zTffPFdfffU81w455JBsuummufvuu/Phhx9mwIAB2XvvvW0jDwAAAAAAAECX06awfUEGDRqUQYMGteeUAIu86urqDBkyJNXV1eUuBQAAAACgy9KLBUqtUCwWi+UuorOqra0tdwkAAAAAAAAAlFhNTU2zY1q0sn3ixImfq5D+/ft/rscDLMrmzJmT6dOnZ6mllkq3bt3KXQ4AAAAAQJekFwuUWovC9i996UspFApteoJCoZCXXnqpTY8F6Ar+85//ZMiQIbnvvvsctQEAAAAA0EH0YoFSa9WZ7SuttFKqqqo6qhYAAAAAAAAAWCS0KGyvqKhIQ0NDpk2blqFDh2b33XfPZptt1tG1AQAAAAAAAECnVNGSQQ888EBOOumkrLTSSrn66qtzwAEHZMcdd8z555+fN954o6NrBAAAAAAAAIBOpUVhe9++fXPIIYfk+uuvz2233ZYjjjgiDQ0Nueiii7LLLrtk7733zqWXXpr33nuvo+sFAAAAAAAAgLIrFIvFYlsf/NRTT+Xmm2/OnXfemalTp6aysjJbbrll9t577+yyyy7tWWdZ1NbWlrsEoAuYPXt2pk6dmt69e6eqqqrc5QAAAAAAdEl6sUB7qqmpaXbM5wrb55o9e3YeeOCBXH755Xn88cfTp0+fPProo5932rITtgMAAAAAAAAsfloStrdoG/mFmTVrVv7973/nxhtvzDPPPJMk6dGjx+edFqDLGDNmTPbbb7+MGTOm3KUAAAAAAHRZerFAqVW29YFPPPFEbr755tx1112pq6tLt27dsvXWW2f33XfPV77ylfasEWCR9uGHH+aOO+7ISSedVO5SAAAAAAC6LL1YoNRaFba/8sorueWWW3Lbbbdl8uTJKRaL2WCDDbL77rtn1113TZ8+fTqqTgAAAAAAAADoNFoUtv/5z3/OLbfcktdeey3FYjGrrLJKjjzyyOy+++5ZffXVO7pGAAAAAAAAAOhUWhS2n3feeSkUCll33XWz++67Z9NNN02STJs2LS+88EKzj99oo40+X5UAAAAAAAAA0Im0ahv5l19+OS+//HKrnqBQKOSll15q1WMAupJ+/frltNNOS79+/cpdCgAAAABAl6UXC5RaoVgsFpsbdOCBB36uJ/n73//+uR5fLrW1teUuAQAAAAAAAIASq6mpaXZMi8L2xZWwHWgPH3zwQe6///7ssMMOWWaZZcpdDgAAAABAl6QXC7SnloTtFSWoA2CxNm7cuBx66KEZN25cuUsBAAAAAOiy9GKBUhO2AwAAAAAAAEArCdsBAAAAAAAAoJWE7QAAAAAAAADQSsJ2gA7Ws2fPbLTRRunZs2e5SwEAAAAA6LL0YoFSKxSLxWK5i+isamtry10CAAAAAAAAACVWU1PT7Bgr2wEAAAAAAACglVoUtq+77rr5yU9+0vjn4cOH59577+2wogC6khdeeCErrrhiXnjhhXKXAgAAAADQZenFAqXWorC9WCzm07vNDx8+PPfcc0+HFQXQlRSLxcyaNStO7QAAAAAA6Dh6sUCptShsX3LJJTNlypSOrgUAAAAAAAAAFgmVLRk0cODAPProoxk+fHhWXnnlJMmbb76ZG2+8sUVPsueee7a1PgAAAAAAAADodFoUth9zzDE55phjMnz48BQKhSTJM888k2eeeWahjysWiykUCsJ2AAAAAAAAALqUQrGFB1e8/fbbefTRR/P2229n+PDhWXfddfPlL3+5RU9yzDHHfK4iy6W2trbcJQBdwEcffZSxY8dmwIABWWKJJcpdDgAAAABAl6QXC7SnmpqaZse0OGz/tHXWWSd77bVXzjzzzDYVtqgQtgMAAAAAAAAsfloStle0ZeLLLrssRxxxRFseCrDYeeutt/K9730vb731VrlLAQAAAADosvRigVJrU9g+ePDgrLHGGvNcq6ury/Tp09ulKICuZMqUKbn88sszZcqUcpcCAAAAANBl6cUCpVb5eR784IMP5u9//3ueeeaZzJgxI0myxBJLZPPNN88BBxyQ7bffvl2KBAAAAAAAAIDOpM1h+5lnnpnLLrssc49879WrV5Jk2rRpefDBB/PQQw/loIMOyo9//OP2qRQAAAAAAAAAOok2he3/+te/cumll2bZZZfNd7/73eyxxx6NYXtdXV1uuumm/PGPf8xll12WQYMGZeedd27XogEAAAAAAACgnNp0ZvuVV16ZHj165PLLL88BBxzQGLQnSXV1dfbff//8/e9/T/fu3XPVVVe1W7EAi6K+ffvm+OOPT9++fctdCgAAAABAl6UXC5RaoTh3H/hW2HzzzbPZZpvlT3/600LH/e///m+efvrpPPXUU20usJxqa2vLXQIAAAAAAAAAJVZTU9PsmDatbJ89e3aWWGKJZsctscQSmT17dlueAqDLmDZtWh5++OFMmzat3KUAAAAAAHRZerFAqbUpbF911VXz5JNP5qOPPlrgmI8++ihPPvlkVl111TYXB9AVvPHGG9l9993zxhtvlLsUAAAAAIAuSy8WKLU2he1Dhw7N+++/n2OOOSZvvfXWfPfffPPNHHPMMZkyZUp22mmnz10kAAAAAAAAAHQmlW150GGHHZZ77703jzzySIYOHZoNN9wwK620UgqFQsaPH59Ro0Zlzpw52WCDDXLooYe2d80AAAAAAAAAUFZtCtt79uyZv//97znvvPNy3XXX5bnnnstzzz03z/199903P/jBD9KzZ8/2qhUAAAAAAAAAOoU2he1JstRSS+WUU07JCSeckBdffDHvvPNOkmT55ZfP+uuvnyWWWKLdigRYlFVVVaVfv36pqqoqdykAAAAAAF2WXixQaoVisVgsdxGdVW1tbblLAAAAAAAAAKDEampqmh3T5pXtpfDCCy/kggsuyHPPPZfZs2dnrbXWysEHH5zddtutRY9/4okncs011+Sll17Ku+++m9mzZ2fFFVfMpptumiOOOCJrrLFGB78CAAAAAAAAALqiinIXsCBPPPFE9ttvvzz11FP52te+lm9/+9upra3NCSeckIsuuqhFczz66KN5+umns/baa2evvfbK/vvvn9VXXz033XRT9thjjzz++OMd/CoAkpdeeinrr79+XnrppXKXAgAAAADQZenFAqXWKbeRr6+vz0477ZRJkybl6quvznrrrZckqaury7777psxY8bktttuy4ABAxY6z8yZM9OjR4/5rj/22GMZNmxYNthgg1x33XULfLxt5IH28Pzzz2fIkCG57777MmjQoHKXAwAAAADQJenFAu2pJdvId8qV7Y8//njefPPN7Lrrro1Be5JUV1fnqKOOSn19fa6//vpm52kqaE+SrbfeOr17986bb77ZbjUDAAAAAAAAsPjolGH7yJEjkyTbbbfdfPe23Xbbeca0xbPPPpupU6dm7bXXbvMcAAAAAAAAACy+KstdQFPGjh2bJFlttdXmu9e7d+/U1NRk3LhxLZ7viSeeyMiRIzNr1qyMGzcu9913X2pqavLjH/+4vUoGAAAAAAAAYDHSKcP2urq6JEmvXr2avF9dXZ1Jkya1eL6RI0dm+PDhjX9ebbXVct5552WDDTZY6ON69+6diopOufgfWIRsttlmue+++7LZZpst8L9rAAAAAAB8PnqxQKl9rrB9ypQpufnmmzNq1Kh88MEH2WqrrXLEEUckSf773//mrbfeyjbbbJMllliiXYptq2OPPTbHHntsZsyYkddeey0XXnhhvv3tb+dXv/pVdttttwU+burUqSWsEujKBg0alPr6+tTW1pa7FAAAAACALksvFmgvNTU1zY5p87Lt2267LTvuuGPOOuus3HbbbXn00UfzxhtvNN4fN25cjjnmmNx5552tnru6ujpJMm3atCbv19XVtekTSUsuuWQ22mijDB8+PGussUb+7//+L1OmTGn1PACtMXHixPzyl7/MxIkTy10KAAAAAECXpRcLlFqbwvannnoqP/rRj9K9e/f8+Mc/zj//+c8Ui8V5xuywww7p1atX7r777lbPP2DAgCRp8lz2qVOnpra2tsnz3FuqsrIyW265ZWbMmJFRo0a1eR6Alnj33Xdz/vnn59133y13KQAAAAAAXZZeLFBqbQrb//SnP6WysjIjRozIQQcd1OTZ51VVVVljjTXy2muvtXr+LbbYIkny8MMPz3fvkUceSZIMHjy41fN+2jvvvJPkk+AdAAAAAAAAAFqjTWH7888/n0GDBmWdddZZ6LgVV1yxMdRuja233jqrrLJKbr311rz88suN1+vq6nLhhRemsrIye+21V+P1KVOm5PXXX59vS/gnn3xyvhX3ySch/j333JNevXplk002aXV9AAAAAAAAACze2rSs++OPP27RgfB1dXUpFAqtL6qyMqeffnoOP/zw7Lffftl1111TXV2du+66K+PHj8/xxx+f1VdfvXH8FVdckeHDh+eYY47Jscce23j9u9/9bmpqarLhhhtmxRVXzMyZM/Pqq6/mySefTFVVVU4//fQsueSSra4PAAAAAAAAgMVbm8L2/v3759VXX13omPr6+rz66qttPlt9q622ypVXXpnf//73uf322zN79uystdZaOe6447L77ru3aI5jjz02Dz30UJ5++ulMmTIlhUIh/fr1yz777JODDz44a6+9dptqA2iNPn365IADDkifPn3KXQoAAAAAQJelFwuUWqHY1D7rzTjrrLMyYsSI/OxnP8v++++fJFlnnXWy11575cwzz0yS/OUvf8l5552XY445JkcffXT7Vl0itbW15S4BAAAAAAAAgBJryU7vbVrZfsQRR+S2227L6aefnueeey5f/vKXk3xydvp9992Xe+65JzfccEP69euXgw46qC1PAdBlfPTRRxk7dmwGDBiQJZZYotzlAAAAAAB0SXqxQKm1aWV7krz++us5/vjjM3r06BQKhRSLxcbz2YvFYtZYY40MHz48a6yxRrsWXEpWtgPt4fnnn8+QIUNy3333ZdCgQeUuBwAAAACgS9KLBdpTh61sT5I111wzN910U/7973/n0UcfzYQJEzJnzpysuOKK2WabbfK1r30t3bp1a+v0AAAAAAAAANBptSlsP/PMM7P00kvn6KOPzo477pgdd9yxvesCAAAAAAAAgE6roi0PuuKKK/Lqq6+2dy0AAAAAAAAAsEhoU9i+wgorpI1HvQMsdgqFQrp3755CoVDuUgAAAAAAuiy9WKDU2rSN/Fe+8pXccMMNqaurS3V1dXvXBNClbLTRRpk0aVK5ywAAAAAA6NL0YoFSa9PK9mOOOSb9+/fPd77znbz00kvtXRMAAAAAAAAAdGqFYhv2gz/ooIMyc+bMPP/88ykUCunbt2/69++f7t27z/8EhUIuvfTSdim21Gpra8tdAtAFvPrqq/nf//3f/OlPf8rAgQPLXQ4AAAAAQJekFwu0p5qammbHtGkb+ZEjRzb+XCwW88477+Sdd95pcqxzMYDF3ccff5wXXnghH3/8cblLAQAAAADosvRigVJrU9h+7733tncdAAAAAAAAALDIaFPYvtJKK7V3HQAAAAAAAACwyKgodwEAAAAAAAAAsKhp08r2z/rwww8zffr0FIvFJu/379+/PZ4GYJG02mqr5a9//WtWW221cpcCAAAAANBl6cUCpVYoLighb8a7776b888/P/fee2+mTp264CcoFPLSSy+1ucByqq2tLXcJAAAAAAAAAJRYTU1Ns2PatI38O++8k69//eu57rrr0qNHj/Tp0yfFYjGDBg3Ksssu27jCfeONN85mm23WlqcA6DLeeeed/OEPf8g777xT7lIAAAAAALosvVig1NoUtv/xj3/MO++8k+9973t54IEHsv3226dQKOQf//hHHn744fz973/PGmuskUKhkIsvvri9awZYpLz99ts55ZRT8vbbb5e7FAAAAACALksvFii1NoXtDz30UFZeeeUcddRRTd7fYost8te//jUvv/xyLrzwws9VIAAAAAAAAAB0Nm0K2ydPnpx11133/01S8ck0s2bNary2wgorZMstt/z/2rvz+Kiq+//j75udkAADhCUkCoqiiAQxsihSA1RFBNw3rCIqLigKdaO2+tNWsFbRirRflyqtgHsVgqgU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AAAAAADELMZiAUQbYTsARNju3bv11FNPaffu3VaXAgAAAAAAAAAxi7FYANFG2A4AAAAAAAAAAAAAQIgI2wEAAAAAAAAAAAAACBFhOwAAAAAAAAAAAAAAISJsB4AIa9Omja688kq1adPG6lIAAAAAAAAAIGY19bHYp59+Wn379lXfvn31xBNP+Gw3ffp09evXT+3atdMnn3wSxQoB1GWYpmlaXURjZbfbrS4BAAAAAAAAAAAATVxlZaUSEhJ87v/iiy/061//WosXL1ZCQoKGDx+uhx9+WEOHDvVou3r1arVr104TJ07UXXfdpQsuuCCSpQPNls1mC9imUc9sX79+vW699VadddZZ6tOnj6644grl5+cHffz+/fv14osvauLEiRoyZIh69OihHj16RLBiAPB09OhR/fDDDzp69KjVpQAAAAAAAABAzLJiLHbNmjUaPXq0hgwZovPOO0/z58+XJBUWFqp79+566qmndNFFF+mll17ye573339f1157rVq2bKnk5GSNGTNG//znP722zc3NVbdu3cLeFwCh8/0RGoutXLlSN998sxITEzVixAilp6dr0aJFuu+++1RcXKzbb7894Dk2b96s6dOnyzAMHX/88WrRooWOHDkSheoB4GebNm1SXl6elixZopycHKvLAQAAAAAAAICYFO2x2JKSEk2ePFlvvvmmOnXqpP379ysvL0/9+/eXJB04cEAnnHCCHnjggYDnKioq0tlnn+3+/rjjjnMH9wAar0YZtldWVuq3v/2tDMPQnDlz1LNnT0nShAkTdM0112jGjBm68MIL1bVrV7/nOfHEEzV79mydeuqpSktL04UXXqgff/wxCj0AAAAAAAAAAABAtFQ5q7Tu4Dqpl7Tu4Dr1cvZSfFx8RK+5atUqbd26VVdddZV7m2ma2rx5s7Kzs5WSkqLLL7886PMZhlHrPAAav0a5jPyXX36pwsJCXXzxxe6gXZLS0tJ05513qrKy0ufSGTW1b99eZ511ltLS0iJZLgAAAAAAAAAAACySvzlfObNyNKlgknSFNKlgknJm5Sh/c/CPJq4P0zR12mmnadmyZe5/NmzYoHPOOUeSlJqaWitA9ycrK0uFhYXu77dv366srKyI1A0gfBpl2L5q1SpJ0qBBgzz2uf6CcrUBAAAAAAAAAABA85S/OV9jF47VjrIdtbbvLNupsQvHRjRw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u3btlJubq/Hjx3ttU1//+Mc/9NZbb2nbtm1yOBzq16+fXn/99bCdP5zOP/98OZ1OLV682GNfQUGBrrrqKknS5MmTddttt/k8T2Fhof74xz9q9erVKikpkWma+sc//qH+/ftHrHYAAAAAAOqLsB0AAAAAgBBceuml7q9LS0v1zTffaMGCBfrkk0/0yiuvaMCAAQ2+xqJFi/TEE0+odevWGjJkiFJTU3XCCSc0+LyRsGXLFm3btk033nij1/3z5s2r9bWvsN3pdGrixInauHGj+vTpo+OPP15xcXFq3769HnroIb3//vsE7wAAAACARoWwHQAAAACAEDz55JO1vnc4HHr44Yc1b948PfHEE8rPz2/wNVwzxP/85z9r4MCBDT5fJP373/+WJOXl5XnsczgcWrhwoQzDUPv27bVlyxZ98803Ou200zzaFhcXa+PGjcrNzdWcOXMiXjcAAAAAAA3FM9sBAAAAAGiAxMRE3X333ZKk7777TocOHWrwOXft2iVJys7ObvC5Im3JkiVKT09Xbm6ux75ly5bJbrfrrLPOci8lX3Ome01Nqc8AAAAAAEiSYZqmaXURAAAAAAA0dq7nsW/atMljX3l5uc444wxJ0ooVK9S2bdta+w8fPqzXXntNn3zyiQoLCxUfH6+ePXtq7NixGjZsmLvdjBkz9MILL3i9fs0l1O12u1566SV9+umn2rlzp1q0aKHTTz9dN910kwYNGuS19i5duujjjz/WSy+9pAULFqioqEiDBw/WX/7yl5BqrOnAgQMaNGiQLrzwQk2fPt1j/8SJE/XJJ5/oD3/4g8466yxdcMEFat++vZYtW6b4+HiPe1tXv379tGrVKq/7JOnTTz9VVlaW+/t///vfmjNnjr7++muVl5crMzNTw4cP16233qqWLVvWOvZXv/qVVq1apU8//VRr167V66+/ru+//17x8fFavXq1z2sCAAAAAODCMvIAAAAAADTQN998I0my2WweQfu+fft04403avPmzerYsaPOPvtsHT16VOvWrdOECRP061//WuPHj5cknXrqqbr00kv12Wefad++fbrggguUmpoqSWrfvr0kaffu3RozZoy2b9+uzMxMDRs2TAcOHNCKFSu0fPlyTZkyRWPHjvWo0el0asKECVq9erXOOuss9ejRQ23atAm5xpqWLVumqqoqr0vIl5aWaunSpUpKStIFF1ygVq1aqXfv3lq/fr0+//xzDR482N320ksv1d69e7V8+XIdd9xxOvPMMyVJJ5xwgrp06aKvvvpKhYWFGjRokDIyMtzHue6NVL28/2uvvabk5GT17t1bNptN33zzjf76179q2bJlmj17dq32Li+99JLeeecd9e3bV3l5edq5c6fnCwwAAAAAgBeE7QAAAAAA1FNpaanWr1+vxx9/XJJ0++23e7SZMmWKNm/erFtuuUX33nuvEhMTJUnbt2/XuHHj9Nxzz2nw4ME65ZRTNGzYMA0bNky/+tWvtG/fPj3wwAO1Zm5L0qOPPqrt27dr9OjReuKJJ9znW716tW655RY99dRTGjBggE455ZRax+3cuVNJSUn6+OOP1bFjx3rXWNO///1vJSQk1ArOXT766CMdO3bMHbRL0qhRo7R+/XrNnz+/1jFPPvmkVq5cqeXLl+vMM8/Uk08+WetcDz30kAoLCzV+/Hj37P6aFi5cqNdee009e/bUjBkz3PfM4XDo97//vd566y3NmDFDDz74oMexH3zwgf7+97+rX79+HvsAAAAAAPCHZ7YDAAAAABCCHj16uP/Jzc3VuHHjVFpaqmeeecZjRvnGjRu1bNkynXHGGbrvvvvcIbZU/WzyBx98UFVVVXr33XeDuvb27du1ZMkSpaWl6be//W2t8+Xm5uqaa65RVVWV5s6d6/X4yZMnewTt9a2xoqJCy5cvV9++fdW6dWuPa7mezT5q1Cj3thEjRighIUGLFy/W4cOHg+pzMF588UVJ0jPPPFPrwwmJiYl6+OGHlZGRoXfffVdOp9Pj2CuuuIKgHQAAAABQL4TtAAAAAACE4NJLL3X/M2LECJ1xxhmy2+3605/+5PF88c8//1ySNHToUBmG4XEu13LpGzZsCOraX331lSTpF7/4hXu2eE2jR4+u1a4mwzA0ZMgQj+31rXHlypU6fPiw13MWFRXpq6++Ups2bWrNYG/btq0GDRqkI0eO6F//+pfPfoZi//79+vbbb3XiiSfqhBNO8NifnJysXr166dChQ9q6davHfm/1AwAAAAAQDJaRBwAAAAAgBHWXOJek//3vf7r++ut18803a+HChcrOzpYkFRcXS5KefvppPf300z7Pabfbg7r2nj17JEldunTxut+13dWupnbt2ikpKclje31rXLJkiSR5fV77/PnzZZqmLrzwQo9rjho1SkuXLtX8+fN1ySWX+LxesFz1b9myRT169PDb1tt97ty5c4NrAAAAAAA0T4TtAAAAAAA0UM+ePXX11Vfr1Vdf1Zw5c/TQQw9JkqqqqiRVL/HuCuC9sdlsIV3P2wz0mtu97U9OTvZ6TH1rXLJkibp166auXbt6tJ0/f74k6csvv9S1115ba19FRYUkacWKFdqzZ486dOjg85rBcC0Nn5GRoUGDBvlt26ZNG49tvu4LAAAAAACBELYDAAAAABAGrmeF//jjj+5tnTp1kiRdcMEFuuGGGxp8DVcwXVRU5HW/a5Z3RkZG0OesT43ffvutduzYoXHjxnnsW79+vfsebN261evS7VJ1SL5gwQKv5wiFq/6MjAyvqw4AAAAAABApPLMdAAAAAIAwcAXgLVq0cG87++yzJUmLFy8OyzVcz09funSpDh065LF/3rx5tdoFoz41fvrpp5Kqn/Puq4abb75ZmzZt8vrPq6++KunnGfCBJCYmSvp5Fn5NnTp1Urdu3bRp0yZt37496D4AAAAAANBQhO0AAAAAADTQ//73P7311luSpF/84hfu7X369NHAgQO1cuVKTZ06VYcPH651nNPp1PLly7V69eqgrpOdna3zzjtPhw8f1hNPPCGHw+Het3btWr355puKj4/XddddF3Tt9alxyZIlatOmjc4444xabSsrK7Vw4UJJ0sUXX+zzmgMGDFC7du20ceNGfffddwFrdM3or7lqQE133HGHqqqqNHHiRK/nKyws1LvvvhvwOgAAAAAAhIJl5AEAAAAACIHreeyS5HA4VFxcrIKCAjmdTuXl5Wn06NG12j/99NMaN26c/v73v2vevHk65ZRT1LZtW+3evVs//vijDhw4oClTpig3Nzeo6z/++OO67rrr9MEHH+i///2v+vTpowMHDmjVqlWqqqrSQw89pFNOOSWkPoVS4549e/T1119r5MiRio+Pr3WeZcuW6cCBA+rWrZt69uzp83rx8fG64IILNHfuXM2fP1/33Xef3/ry8vI0c+ZMPfnkk/r888/dz4+/7777ZLPZNHr0aH333Xd65ZVXdMkll+jUU09VVlaWysrKtGPHDv3www865ZRTdMUVV4R0XwAAAAAA8IewHQAAAACAELz//vvur+Pi4tSqVSvl5uZq9OjRuuyyyxQXV3sRufbt2+vtt9/Wm2++qYULF2rDhg1yOBzKyMhQz549NWTIEA0fPjzo63fs2FHvvvuuXnrpJS1evFiLFi1SixYtNHDgQN10000aNGhQyH0KpcalS5fKNE3l5eV5nMe1hPyIESMCXnPEiBGaO3eu8vPzNXnyZL9te/XqpT/96U967bXX9Pnnn+vo0aOSqme0u4L3+++/X4MGDdKcOXO0bt06bdq0Sa1atVKnTp108803B1UTAAAAAAChMEzTNK0uAgAAAAAANA233367li9fri+//FJpaWlWlwMAAAAAgGWY2Q4AAAAAAIJ25pln6rzzziNoBwAAAAA0e8xsBwAAAAAAAAAAAAAgRHGBmwAAAAAAAAAAAAAAgJoI2wEAAAAAAAAAAAAACBFhOwAAAAAAAAAAAAAAISJsBwAAAAAAAAAAAAAgRITtAAAAAAAAAAAAAACEiLAdAAAAAAAAAAAAAIAQEbYDAAAAAAAAAAAAABAiwnYAAAAAAAAAAAAAAEJE2A4AAAAAAAAAAAAAQIgI2wEAAAAAAAAAAAAACNH/B8mZNXnNO0qxAAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = mnl.plot_change(change_df, title=\"Product Removal\", figsize=(20, 8))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Counterfactual Plausibility as a Criteria of Adequacy\n",
"\n",
"Kenneth Train observes that \n",
"\n",
"> \"[The IIA] property can be seen either as a restriction imposed by the model or as the natural outcome of a wellspecified model that captures all sources of correlation over alternatives into representative utility, so that only white noise remains. Often the researcher is unable to capture all sources of correlation explicitly, so\n",
"that the unobserved portions of utility are correlated and IIA does not hold.\" - pg 76 in \"Discrete Choice Methods with Simulation\"\n",
"\n",
"which suggests that the Multinomial Logit model can have a compelling role in markets where the structure of the preferences aren't governed by anything we haven't included in the utility equations. But given the difficulty of such a comprehensive model specification we might want to seek alternative model specifications that can support more plausible counterfactual inference about the patterns of market substitution under intervention. One such model specification is the nested logit model. "
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Last updated: Wed Jun 18 2025\n",
"\n",
"Python implementation: CPython\n",
"Python version : 3.10.17\n",
"IPython version : 8.35.0\n",
"\n",
"pytensor: 2.31.3\n",
"\n",
"arviz : 0.21.0\n",
"pymc_marketing: 0.14.0\n",
"pandas : 2.2.3\n",
"matplotlib : 3.10.1\n",
"\n",
"Watermark: 2.5.0\n",
"\n"
]
}
],
"source": [
"%load_ext watermark\n",
"%watermark -n -u -v -iv -w -p pytensor"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "pymc-marketing-dev",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.17"
}
},
"nbformat": 4,
"nbformat_minor": 2
}