Skip to content

Instantly share code, notes, and snippets.

@tturocy
Last active August 29, 2015 14:23
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tturocy/db5a41a98a25b756f5f1 to your computer and use it in GitHub Desktop.
Save tturocy/db5a41a98a25b756f5f1 to your computer and use it in GitHub Desktop.
Doing statistical game theory: (Towards) the missing manual - talk at UEA 2015/06/24
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<center>\n",
"<h1>Doing statistical game theory: (Towards) the missing manual</h1>\n",
"<i>Theodore L. Turocy</i><br/>\n",
"<i>University of East Anglia</i>\n",
"<br/><br/>\n",
"<h3>UEA Workshop on Behavioural Game Theory,\n",
"24 June 2015</h3>\n",
"</center>\n",
"\n",
"<img src=\"https://www.uea.ac.uk/cbess-theme/images/custom/img-cbess-logo.png\"/>\n",
"<img src=\"http://beta.nottingham.ac.uk/esrc-nibs/images-multimedia/logos/NIBS-logo.png\"/>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is part of a larger project on the practical application of quantal response equilibrium and related concepts of statistical game theory.\n",
"\n",
"It is inspired in part by several recent papers by Camerer, Palfrey, and coauthors, developing various generalizations of quantal response equilibrium (including heterogeneous QRE) and links between QRE and cognitive hierarchy/level-k models.\n",
"\n",
"These are exciting developments (in the view of this researcher) because this appears to offer a coherent and flexible statistical framework to use as a foundation for behavioural modeling in games, and a data-driven approach to behavioural game theory.\n",
"\n",
"What we will do in this talk is to use the facilities in Gambit to explore how to fit QRE to small games. We'll focus on small games so that all computations can be done live in this Jupyter notebook - making this talk equally a useful practical tutorial, and automatically documenting all the computations done in support of the development of the lines of thought herein."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**Advertisement**: Thanks to some friends of Gambit at Cardiff (and support from a Google Summer of Code internship), Gambit is being integrated into the SAGE package for computational mathematics in Python (http://www.sagemath.org). Also as part of this, it will soon be possible to interact with Gambit (alongside all of the mathetmatical tools that SAGE bundles) using notebooks like this one, on a server via your web browser."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**DISCLAIMERS**: This was run using the version of Gambit 15 in the git repository, master branch, as of the time of the talk. The quantal response analysis features are new, and the API for these may evolve. Consult the version of the Gambit documentation (or a newer persentation or tutorial) for up-to-date details."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We begin by looking at some of the examples from the original Quantal Response Equilibrium paper:\n",
"\n",
"McKelvey, R. D. and Palfrey, T. R. (1995) Quantal response equilibrium for normal form games. *Games and Economic Behavior* **10**: 6-38.\n",
"\n",
"We will take the examples slightly out of order, and look first at the non-constant sum game of \"asymmetric\" matching pennies they consider from\n",
"\n",
"Ochs, J. (1995) Games with unique mixed strategy equilibria: An experimental study. *Games and Economic Behavior* **10**: 174-189."
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import math\n",
"import numpy\n",
"import scipy.optimize\n",
"import pandas\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import gambit"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Set up the payoff matrices. McKPal95 multiply the basic payoff matrix by a factor to translate to 1982 US cents. In addition, the exchange rates for the two players were different in the original experiment, accounting for the different multiplicative factors."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(array([[Decimal('1.1140'), Decimal('0.0000')],\n",
" [Decimal('0.0000'), Decimal('0.2785')]], dtype=object),\n",
" array([[Decimal('0.0000'), Decimal('1.1141')],\n",
" [Decimal('1.1141'), Decimal('0.0000')]], dtype=object))"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"m1 = numpy.array([[ 4, 0 ], [ 0, 1 ]], dtype=gambit.Decimal) * gambit.Decimal(\"0.2785\")\n",
"m2 = numpy.array([[ 0, 1 ], [ 1, 0 ]], dtype=gambit.Decimal) * gambit.Decimal(\"1.1141\") \n",
"m1, m2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Create a Gambit game object from these payoff matrices (`from_arrays` is new in Gambit 15.0.2)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"NFG 1 R \"\" { \"1\" \"2\" }\n",
"\n",
"{ { \"1\" \"2\" }\n",
"{ \"1\" \"2\" }\n",
"}\n",
"\"\"\n",
"\n",
"{\n",
"{ \"\" 1.1140, 0.0000 }\n",
"{ \"\" 0.0000, 1.1141 }\n",
"{ \"\" 0.0000, 1.1141 }\n",
"{ \"\" 0.2785, 0.0000 }\n",
"}\n",
"1 2 3 4 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g = gambit.Game.from_arrays(m1, m2)\n",
"g"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"First, we can verify there is a unique mixed strategy equilibrium. Player 1 should randomize equally between his strategies; player 2 should play his second strategy with probability 4/5. It is the \"own-payoff\" effect to Player 1 which made QRE of interest in this game."
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[[[Fraction(1, 2), Fraction(1, 2)], [Fraction(1, 5), Fraction(4, 5)]]]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gambit.nash.lcp_solve(g)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we set out to replicate the QRE estimation using the fixed-point method from the original paper.\n",
"We set up a mixed strategy profile, which we populate with frequencies of each strategy.\n",
"Data are reported in blocks of 16 plays, with $n=128$ pairs of players."
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"$\\left[[1079.296, 968.704],[749.568, 1298.432]\\right]$"
],
"text/plain": [
"[[1079.296, 968.704], [749.568, 1298.432]]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data1 = g.mixed_strategy_profile()\n",
"data1[g.players[0]] = [ 16*128*0.527, 16*128*(1.0-0.527) ]\n",
"data1[g.players[1]] = [ 16*128*0.366, 16*128*(1.0-0.366) ]\n",
"data1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the data in hand, we ask Gambit to find the QRE which best fits the data, using maximum likelihood."
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LogitQREMixedStrategyProfile(lam=1.845871,profile=[[0.6156446318590159, 0.38435536814098414], [0.383281508340127, 0.616718491659873]])"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qre1 = gambit.nash.logit_estimate(data1)\n",
"qre1"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We successfully replicate the same value of lambda and the same fitted mixed strategy profile as reported by McKPal95.\n",
"Note that the method Gambit uses to find the maximizer is quite accurate; you can trust these to about 8 decimal\n",
"places.\n",
"\n",
"<i>\n",
"What Gambit does is to use standard path-following methods to traverse the \"principal branch\" of the QRE correspondence, and look for extreme points of the log-likelihood function restricted to that branch. This is the \"right way\" to do it. Some people try to use fixed-point iteration or other methods at various values of lambda. These are wrong; do not listen to them!\n",
"</i>\n",
"\n",
"What does not quite match up is the log-likelihood; McKPal95 claim a logL of -1747, whereas ours is much larger.\n",
"I have not been able to reconcile the difference in an obvious way; it is much too large simply to be rounding\n",
"errors."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"-2796.2259707889207"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numpy.dot(list(data1), numpy.log(list(qre1)))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The unexplained variance in log-likelihood notwithstanding, we can move on to periods 17-32 and again replicate\n",
"McKPal95's fits:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LogitQREMixedStrategyProfile(lam=1.567977,profile=[[0.6100787526260509, 0.389921247373949], [0.40502047327790697, 0.5949795267220931]])"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data2 = g.mixed_strategy_profile()\n",
"data2[g.players[0]] = [ 16*128*0.573, 16*128*(1.0-0.573) ]\n",
"data2[g.players[1]] = [ 16*128*0.393, 16*128*(1.0-0.393) ]\n",
"qre2 = gambit.nash.logit_estimate(data2)\n",
"qre2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And for periods 33-48:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LogitQREMixedStrategyProfile(lam=3.306454,profile=[[0.6143028691464325, 0.38569713085356744], [0.30108853856548057, 0.6989114614345194]])"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data3 = g.mixed_strategy_profile()\n",
"data3[g.players[0]] = [ 16*128*0.610, 16*128*(1.0-0.610) ]\n",
"data3[g.players[1]] = [ 16*128*0.302, 16*128*(1.0-0.302) ]\n",
"qre3 = gambit.nash.logit_estimate(data3)\n",
"qre3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And finally for periods 49-52 (the caption in the table for McKPal95 says 48-52). Our lambda of $\\approx 10^7$ translates\n",
"essentially to infinity, i.e., Nash equilibrium."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LogitQREMixedStrategyProfile(lam=1040316.548725,profile=[[0.5000005980476384, 0.4999994019523616], [0.20000000000165133, 0.7999999999983487]])"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data4 = g.mixed_strategy_profile()\n",
"data4[g.players[0]] = [ 4*128*0.455, 4*128*(1.0-0.455) ]\n",
"data4[g.players[1]] = [ 4*128*0.285, 4*128*(1.0-0.285) ]\n",
"qre4 = gambit.nash.logit_estimate(data4)\n",
"qre4"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As an estimation method, this works a treat if the game is small. However, under the hood, `logit_estimate` is solving a fixed-point problem, and fixed-point problems are computationally difficult problems, meaning the running times does not scale well as you make the size of the problem (i.e., the game) larger. A practical feasible limit for estimating QRE is with games of perhaps 100 strategies in total - less if one also wants to recover estimates of e.g. risk-aversion parameters (of which more anon).\n",
"\n",
"Recently, in several papers, Camerer, Palfrey, and coauthors have been using a method first proposed by Bajari and Hortacsu in 2005. The idea is that, given the actual observed data, under the assumption that the model (QRE) is correct, then one can compute a consistent estimator of the expected payoffs for each strategy from the existing data, and from there compute a consistent estimator of lambda.\n",
"\n",
"This is an interesting development because it finesses the problem of having to compute fixed points, and therefore one can compute estimates of lambda (and more interestingly of other parameters) in a computationally efficient way.\n",
"\n",
"To fix ideas, return to `data1`. We can ask Gambit to compute the expected payoffs to players facing that empirical distribution of play:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/latex": [
"$\\left[[0.527, 0.473],[0.366, 0.634]\\right]$"
],
"text/plain": [
"[[0.527, 0.473], [0.366, 0.634]]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p1 = data1.copy()\n",
"p1.normalize()\n",
"p1"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"[[0.40772400000000003, 0.17656900000000003], [0.5269693, 0.5871307000000001]]"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"p1.strategy_values()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The idea of Bajari-Hortacsu is to take these expected payoffs and for any given $\\lambda$, say the $\\lambda=1.84$ estimated above, compute the logit response probabilities, say for the first player:"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([ 0.60475682, 0.39524318])"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"resp = 1.84*numpy.array(p1.strategy_values(g.players[0]))\n",
"resp = numpy.exp(resp)\n",
"resp /= resp.sum()\n",
"resp"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To estimate $\\lambda$, then, it is a matter of picking the $\\lambda$ that maximises the likelihood of the actual choice probabilities against those computed via the logit rule. If we assume for the moment the same $\\lambda$ for\n",
"both players, we see this is going to be very efficient: the choice probabilities are monotonic in $\\lambda$, and\n",
"we have a one-dimensional optimisation problem, so it is going to be very fast to find the likelihood-maximising\n",
"choice -- even if we had hundreds or thousands of strategies!\n",
"\n",
"It takes just a few lines of code to set up the optimisation:"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import scipy.optimize\n",
"\n",
"def estimate_payoff_method(freqs):\n",
" def log_like(freqs, values, lam):\n",
" logit_probs = [ [ math.exp(lam*v) for v in player ] for player in values ]\n",
" sums = [ sum(v) for v in logit_probs ]\n",
" logit_probs = [ [ v/s for v in vv ]\n",
" for (vv, s) in zip(logit_probs, sums) ]\n",
" logit_probs = [ v for player in logit_probs for v in player ]\n",
" logit_probs = [ max(v, 1.0e-293) for v in logit_probs ]\n",
" return sum([ f*math.log(p) for (f, p) in zip(list(freqs), logit_probs) ])\n",
" p = freqs.copy()\n",
" p.normalize()\n",
" v = p.strategy_values()\n",
" res = scipy.optimize.minimize(lambda x: -log_like(freqs, v, x[0]), (0.1,),\n",
" bounds=((0.0, None),))\n",
" return res.x[0]\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we can estimate the QRE using the same data as above, for each of the four groups of periods, and compare the resulting estimates of $\\lambda$. In each pair, the first value is the $\\lambda$ as estimated by the payoff method, the second as estimated by the (traditional) fixed-point path-following method."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1.0070478027919727, 1.8458712502750365)"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"estimate_payoff_method(data1), qre1.lam"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(1.5178672707029293, 1.567976743237242)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"estimate_payoff_method(data2), qre2.lam"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(3.3446122798176647, 3.30645430631916)"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"estimate_payoff_method(data3), qre3.lam"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"(0.0, 1040316.5487249079)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"estimate_payoff_method(data4), qre4.lam"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We get different estimates $\\hat{\\lambda}$ for the different methods. This is of course completely OK; they are different estimation procedures so we don't expect to get the same answer. But there are some patterns: in three of the four cases, the payoff method estimates a smaller $\\hat{\\lambda}$ than the fixed-point method, that is, it estimates less precise behaviour. In the last case, where the fixed-point method claims play is close to Nash, the payoff method claims it is closest to uniform randomisation.\n",
"\n",
"We can pursue this idea further by some simulation exercises. Suppose we knew that players were actually playing a QRE with a given value of $\\lambda$, which we set to $1.5$ for our purposes here, as being roughly in the range observed over most of the Ochs experiment. Using Gambit we can compute the corresponding mixed strategy profile."
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"LogitQREMixedStrategyProfile(lam=1.500000,profile=[[0.608210533987243, 0.391789466012757], [0.4105548658372969, 0.5894451341627032]])"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"qre = gambit.nash.logit_atlambda(g, 1.5)\n",
"qre"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We knock together a little function which lets us simulate two players playing the game $N$ times according to the QRE mixed strategy profile at $\\lambda$, and then, for each simulated play, we use both methods to estimate $\\hat\\lambda$ based on the realised play. This is repeated `trials` times, and then the results are summarised for us in a handy dataset (a `pandas.DataFrame`)."
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def simulate_fits(game, lam, N, trials=100):\n",
" qre = gambit.nash.logit_atlambda(game, lam).profile\n",
" samples = [ ]\n",
" for sample in xrange(trials):\n",
" f = game.mixed_strategy_profile()\n",
" for player in game.players:\n",
" f[player] = numpy.random.multinomial(N, qre[player], size=1)[0]\n",
" samples.append(f)\n",
" labels = [ \"p%ds%d\" % (i, j)\n",
" for (i, player) in enumerate(game.players)\n",
" for (j, strategy) in enumerate(player.strategies) ]\n",
" return pandas.DataFrame([ list(freqs) +\n",
" [ gambit.nash.logit_estimate(freqs).lam,\n",
" estimate_payoff_method(freqs),\n",
" lam ]\n",
" for freqs in samples ],\n",
" columns=labels + [ 'fixedpoint', 'payoff', 'actual' ])\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's have a look at 100 simulations of 50 plays each with $\\lambda=1.5.$"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>p0s0</th>\n",
" <th>p0s1</th>\n",
" <th>p1s0</th>\n",
" <th>p1s1</th>\n",
" <th>fixedpoint</th>\n",
" <th>payoff</th>\n",
" <th>actual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>34</td>\n",
" <td>16</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>1.100999</td>\n",
" <td>0.907148</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>37</td>\n",
" <td>13</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.905026</td>\n",
" <td>1.373444</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>26</td>\n",
" <td>1.142475</td>\n",
" <td>1.008018</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>15</td>\n",
" <td>35</td>\n",
" <td>3.561028</td>\n",
" <td>3.774656</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>31</td>\n",
" <td>19</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.657714</td>\n",
" <td>1.641344</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>35</td>\n",
" <td>15</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.843455</td>\n",
" <td>1.496438</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>35</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>35</td>\n",
" <td>3.026977</td>\n",
" <td>2.318001</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.504863</td>\n",
" <td>1.484470</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>26</td>\n",
" <td>1.142475</td>\n",
" <td>1.008018</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>34</td>\n",
" <td>16</td>\n",
" <td>21</td>\n",
" <td>29</td>\n",
" <td>1.630421</td>\n",
" <td>1.400139</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>34</td>\n",
" <td>16</td>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>0.623666</td>\n",
" <td>0.405516</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>27</td>\n",
" <td>23</td>\n",
" <td>16</td>\n",
" <td>34</td>\n",
" <td>3.188934</td>\n",
" <td>2.567207</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>26</td>\n",
" <td>24</td>\n",
" <td>0.563585</td>\n",
" <td>0.559700</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>30</td>\n",
" <td>20</td>\n",
" <td>18</td>\n",
" <td>32</td>\n",
" <td>2.151346</td>\n",
" <td>2.197173</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>1.031196</td>\n",
" <td>0.895560</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.715223</td>\n",
" <td>1.636994</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>17</td>\n",
" <td>33</td>\n",
" <td>2.515381</td>\n",
" <td>2.577942</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>0.649572</td>\n",
" <td>0.651509</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>26</td>\n",
" <td>24</td>\n",
" <td>17</td>\n",
" <td>33</td>\n",
" <td>2.573790</td>\n",
" <td>1.107224</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>22</td>\n",
" <td>28</td>\n",
" <td>1.346310</td>\n",
" <td>1.271353</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>27</td>\n",
" <td>23</td>\n",
" <td>21</td>\n",
" <td>29</td>\n",
" <td>0.961287</td>\n",
" <td>0.764932</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>1.196056</td>\n",
" <td>1.119706</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>19</td>\n",
" <td>31</td>\n",
" <td>1.788733</td>\n",
" <td>1.776369</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>1.269607</td>\n",
" <td>1.133844</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>36</td>\n",
" <td>14</td>\n",
" <td>21</td>\n",
" <td>29</td>\n",
" <td>1.716420</td>\n",
" <td>1.312375</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>31</td>\n",
" <td>19</td>\n",
" <td>18</td>\n",
" <td>32</td>\n",
" <td>2.175313</td>\n",
" <td>2.170704</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>19</td>\n",
" <td>31</td>\n",
" <td>1.788733</td>\n",
" <td>1.776369</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.715223</td>\n",
" <td>1.636994</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>1.196056</td>\n",
" <td>1.119706</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>26</td>\n",
" <td>1.142475</td>\n",
" <td>1.008018</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>34</td>\n",
" <td>16</td>\n",
" <td>22</td>\n",
" <td>28</td>\n",
" <td>1.473619</td>\n",
" <td>1.258902</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>1.196056</td>\n",
" <td>1.119706</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>30</td>\n",
" <td>20</td>\n",
" <td>13</td>\n",
" <td>37</td>\n",
" <td>4.742134</td>\n",
" <td>4.717963</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>27</td>\n",
" <td>23</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>0.561525</td>\n",
" <td>0.520706</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>27</td>\n",
" <td>23</td>\n",
" <td>26</td>\n",
" <td>24</td>\n",
" <td>0.305140</td>\n",
" <td>0.311205</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>30</td>\n",
" <td>20</td>\n",
" <td>19</td>\n",
" <td>31</td>\n",
" <td>1.849118</td>\n",
" <td>1.872913</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>30</td>\n",
" <td>20</td>\n",
" <td>24</td>\n",
" <td>26</td>\n",
" <td>0.876599</td>\n",
" <td>0.868581</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>14</td>\n",
" <td>36</td>\n",
" <td>3.543277</td>\n",
" <td>2.995021</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>16</td>\n",
" <td>34</td>\n",
" <td>2.986583</td>\n",
" <td>3.119269</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>26</td>\n",
" <td>24</td>\n",
" <td>14</td>\n",
" <td>36</td>\n",
" <td>6.238968</td>\n",
" <td>3.377942</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>35</td>\n",
" <td>15</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>1.163783</td>\n",
" <td>0.907192</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>29</td>\n",
" <td>1.263495</td>\n",
" <td>1.246869</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>31</td>\n",
" <td>19</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.657714</td>\n",
" <td>1.641344</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>27</td>\n",
" <td>23</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.256126</td>\n",
" <td>0.943009</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>27</td>\n",
" <td>23</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>0.363116</td>\n",
" <td>0.367016</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>21</td>\n",
" <td>29</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>36</td>\n",
" <td>14</td>\n",
" <td>12</td>\n",
" <td>38</td>\n",
" <td>4.001630</td>\n",
" <td>2.592664</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>29</td>\n",
" <td>1.263495</td>\n",
" <td>1.246869</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>24</td>\n",
" <td>26</td>\n",
" <td>1.142475</td>\n",
" <td>1.008018</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>30</td>\n",
" <td>20</td>\n",
" <td>12</td>\n",
" <td>38</td>\n",
" <td>5.625146</td>\n",
" <td>5.336051</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>28</td>\n",
" <td>22</td>\n",
" <td>15</td>\n",
" <td>35</td>\n",
" <td>3.755125</td>\n",
" <td>3.853584</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>28</td>\n",
" <td>22</td>\n",
" <td>19</td>\n",
" <td>31</td>\n",
" <td>1.712525</td>\n",
" <td>1.557034</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>28</td>\n",
" <td>22</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>0.747397</td>\n",
" <td>0.730750</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>28</td>\n",
" <td>22</td>\n",
" <td>10</td>\n",
" <td>40</td>\n",
" <td>11.679693</td>\n",
" <td>10.369317</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>33</td>\n",
" <td>17</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>1.031196</td>\n",
" <td>0.895560</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>32</td>\n",
" <td>18</td>\n",
" <td>17</td>\n",
" <td>33</td>\n",
" <td>2.487890</td>\n",
" <td>2.367087</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>34</td>\n",
" <td>16</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>1.334184</td>\n",
" <td>1.130122</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>34</td>\n",
" <td>16</td>\n",
" <td>19</td>\n",
" <td>31</td>\n",
" <td>2.004179</td>\n",
" <td>1.721770</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>22</td>\n",
" <td>28</td>\n",
" <td>1.060622</td>\n",
" <td>1.052668</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>29</td>\n",
" <td>21</td>\n",
" <td>20</td>\n",
" <td>30</td>\n",
" <td>1.504863</td>\n",
" <td>1.484470</td>\n",
" <td>1.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" p0s0 p0s1 p1s0 p1s1 fixedpoint payoff actual\n",
"0 34 16 25 25 1.100999 0.907148 1.5\n",
"1 37 13 20 30 1.905026 1.373444 1.5\n",
"2 33 17 24 26 1.142475 1.008018 1.5\n",
"3 29 21 15 35 3.561028 3.774656 1.5\n",
"4 31 19 20 30 1.657714 1.641344 1.5\n",
"5 35 15 20 30 1.843455 1.496438 1.5\n",
"6 35 15 15 35 3.026977 2.318001 1.5\n",
"7 29 21 20 30 1.504863 1.484470 1.5\n",
"8 33 17 24 26 1.142475 1.008018 1.5\n",
"9 34 16 21 29 1.630421 1.400139 1.5\n",
"10 34 16 32 18 0.623666 0.405516 1.5\n",
"11 27 23 16 34 3.188934 2.567207 1.5\n",
"12 29 21 26 24 0.563585 0.559700 1.5\n",
"13 30 20 18 32 2.151346 2.197173 1.5\n",
"14 33 17 25 25 1.031196 0.895560 1.5\n",
"15 32 18 20 30 1.715223 1.636994 1.5\n",
"16 29 21 17 33 2.515381 2.577942 1.5\n",
"17 29 21 25 25 0.649572 0.651509 1.5\n",
"18 26 24 17 33 2.573790 1.107224 1.5\n",
"19 32 18 22 28 1.346310 1.271353 1.5\n",
"20 27 23 21 29 0.961287 0.764932 1.5\n",
"21 32 18 23 27 1.196056 1.119706 1.5\n",
"22 29 21 19 31 1.788733 1.776369 1.5\n",
"23 33 17 23 27 1.269607 1.133844 1.5\n",
"24 36 14 21 29 1.716420 1.312375 1.5\n",
"25 31 19 18 32 2.175313 2.170704 1.5\n",
"26 29 21 19 31 1.788733 1.776369 1.5\n",
"27 32 18 20 30 1.715223 1.636994 1.5\n",
"28 32 18 23 27 1.196056 1.119706 1.5\n",
"29 33 17 24 26 1.142475 1.008018 1.5\n",
".. ... ... ... ... ... ... ...\n",
"70 34 16 22 28 1.473619 1.258902 1.5\n",
"71 32 18 23 27 1.196056 1.119706 1.5\n",
"72 30 20 13 37 4.742134 4.717963 1.5\n",
"73 27 23 23 27 0.561525 0.520706 1.5\n",
"74 27 23 26 24 0.305140 0.311205 1.5\n",
"75 30 20 19 31 1.849118 1.872913 1.5\n",
"76 30 20 24 26 0.876599 0.868581 1.5\n",
"77 33 17 14 36 3.543277 2.995021 1.5\n",
"78 29 21 16 34 2.986583 3.119269 1.5\n",
"79 26 24 14 36 6.238968 3.377942 1.5\n",
"80 35 15 25 25 1.163783 0.907192 1.5\n",
"81 29 21 21 29 1.263495 1.246869 1.5\n",
"82 31 19 20 30 1.657714 1.641344 1.5\n",
"83 27 23 20 30 1.256126 0.943009 1.5\n",
"84 27 23 25 25 0.363116 0.367016 1.5\n",
"85 23 27 21 29 0.000000 0.000000 1.5\n",
"86 36 14 12 38 4.001630 2.592664 1.5\n",
"87 29 21 21 29 1.263495 1.246869 1.5\n",
"88 33 17 24 26 1.142475 1.008018 1.5\n",
"89 30 20 12 38 5.625146 5.336051 1.5\n",
"90 28 22 15 35 3.755125 3.853584 1.5\n",
"91 28 22 19 31 1.712525 1.557034 1.5\n",
"92 28 22 23 27 0.747397 0.730750 1.5\n",
"93 28 22 10 40 11.679693 10.369317 1.5\n",
"94 33 17 25 25 1.031196 0.895560 1.5\n",
"95 32 18 17 33 2.487890 2.367087 1.5\n",
"96 34 16 23 27 1.334184 1.130122 1.5\n",
"97 34 16 19 31 2.004179 1.721770 1.5\n",
"98 29 21 22 28 1.060622 1.052668 1.5\n",
"99 29 21 20 30 1.504863 1.484470 1.5\n",
"\n",
"[100 rows x 7 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata = simulate_fits(g, 1.5, 50)\n",
"simdata"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In what proportion of these simulated plays does the fixed-point method estimate a higher $\\hat\\lambda$ than the payoff-based method? (This very compact notation that pandas allows us to use will be familiar to users of e.g. R.)"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.83999999999999997"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(simdata.fixedpoint>simdata.payoff).astype(int).mean()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also get summary descriptions of the distributions of $\\hat\\lambda$ for each method individually. This confirms the payoff method does return systematically lower values of $\\hat\\lambda$ - and that they are lower than the true value, which we know by construction."
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 10404.925434\n",
"std 104031.594035\n",
"min 0.000000\n",
"25% 1.108686\n",
"50% 1.398393\n",
"75% 2.016402\n",
"max 1040317.706282\n",
"Name: fixedpoint, dtype: float64"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.fixedpoint.describe()"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 1.538624\n",
"std 1.286616\n",
"min 0.000000\n",
"25% 0.898044\n",
"50% 1.246869\n",
"75% 1.776369\n",
"max 10.369317\n",
"Name: payoff, dtype: float64"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.payoff.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can visualise the results by doing a scatterplot comparing the estimated $\\hat\\lambda$ by the two methods for each simulated play. Each point in this scatterplot corresponds to one simulated outcome."
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def method_scatterplot(df, lam):\n",
" plt.plot([ row['payoff']/(1.0+row['payoff']) for (index, row) in df.iterrows() ],\n",
" [ row['fixedpoint']/(1.0+row['fixedpoint']) for (index, row) in df.iterrows() ],\n",
" 'kp')\n",
" plt.plot([ 0, 1 ], [ 0, 1 ], 'k--')\n",
" plt.plot([ lam/(1.0+lam) ], [ lam/(1.0+lam) ], 'm*', ms=20)\n",
" plt.xticks([ 0.0, 0.25, 0.50, 0.75, 1.00 ],\n",
" [ '0.00', '0.50', '1.00', '2.00', 'Nash' ])\n",
" plt.xlabel('Estimated lambda via payoff method')\n",
" plt.yticks([ 0.0, 0.25, 0.50, 0.75, 1.00 ],\n",
" [ '0.00', '0.50', '1.00', '2.00', 'Nash' ])\n",
" plt.ylabel('Estimated lambda via fixed point method')\n",
" plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEPCAYAAACHuClZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8VPW9//FXFgkICQoKWaAGsHJBrQiIgkui9geWTahF\nkXu1bq1XrYiAFey9Gm+rXKqtiOCuoKVAtcUNqbu5InUpQjAKtkpAJYAUF/YEJnN+f3zPJJPJZHJm\ncubMTOb9fDzOI3O+c5bvTJL5zHcHERERERERERERERERERERERERERERkYj8wN1B+9OB22K4Tinw\nghsZEhGR+MiM47UPAuOBrva+Fcd7iYhIAsUzmBwCHgZuDPPcGOBdYA3wKtDNTi8B1trbGqCTnd4J\neBrYACyKX5ZFRCTZ7AFygU1AHjCNhmquI4KOu4qG6rDngaH248OBLEw113dAIZAB/A04PY75FhGR\nKMWzZAImoDwJTA5J7wm8AnyIaUvpb6evAu4BrgeOBOrs9PeBrZiqsgqgOJ6ZFhGR6GR7cI85mCqr\nBUFp92FKI8sxVVtldvpsO20UJrCMsNNrg86tI3y+1SYjIhKdjcCxblwo3iUTgG+Bp4ArafjAz8OU\nNAAuCzq2D/Ax8Fvg70BfogwS+fn5bNmyBcuytMW43XbbbQnPQ1va9H7q/UyGra6ujvvuu4+uXbty\n99134/P5Ap+5rohnySQ4CPwO+EXQfhmmQf1b4A3gGDv9BuBsTLfij4C/AsNoGlDCBpiSkhLy8/Mp\nKipqbd5FRNqMPXv2MGbMGA4ePMiqVavo27ev6/eIZzDJC3q8A+gYtP+8vYUKbVsB+D97C7i+uRuW\nl5dHkT0RkfTQqVMnrr/+esaNG0dWVlZc7uFFm4mkmNLS0kRnoU3R++kuvZ/Ry8jI4IILLojvPeJ6\ndW9ZlqU2eBERpzIyMsClOOBFA7yIiHigqqqKkSNHsnnzZs/vrWAiIpLi/H4/8+bNY8iQIZx77rn0\n7NnT8zyozUREJIVVVVVxxRVXxLWnlhMqmYiIpKh9+/ZRUlLCmDFjWLlyZcICCURueAme9t0KOdYC\nxsYlR7FTA7yIpJ09e/aQm5sb07luNsBHqub6nf1zPJCPma03A7gY+MqNm4uISOvEGkjc5iQifQAM\ncpCWaCqZiEibtX37drp37x4oTbjC667Bh9N4/pbedpqIiMRZoKfWCSecwKeffpro7DTLSTC5EXiT\nhmlN3gSmxDNTIiLppKKigvPOO49169Y1Sq+qquKcc85h8eLFrFq1iuOOOy5BOWyZk2DyEnAcZt6s\nyfbjl+OZKRGRdODz+Zg+fTqjRo3i5ZdfZuTIkdx0000cPHiwftxIMvTUcsJJXVk74BrgLHu/HHgQ\nsyxvMlGbiYiklPHjx7N8+fLAdPAAZGdnM3LkSDp37syvfvWruAYRr9tMHgAGAvOB+zEN7w+4cXMR\nkXTWr1+/RoEETGnlhBNO4Mknn0z60kgwJxHpQ+AHDtISTSUTEUkp1dXVDB48mO3bt9en5efns3r1\nak/WZfJqnEmAD7Os42f2fh87TUREWqGgoICePXvSp08fsrPNx3GqLvDnJJjchFkNcZO9XwxcHq8M\niYikg8CcWtnZ2SxZsiQhkzO6yUmbyes09Oa63n78RjwzJSLSVgXP8BvoqZXqgQSczxo8EOhlHz/A\nTnsyLjkSEWmjampqOO+88xI+w288OGl4WYQZ9V4B1AWlN7sWe4KoAV5Ekt6KFSsYMWJE3NZij4ab\nDfBOLrIB6I+ZKTiZKZiIiETB63EmHwEFbtxMRETapkjB5AV7OwpYD7wSlPZ8/LMmIpKaqqqqGD58\nOOvXr090VjwTKZj8zt7KgHHAnUFpv2v+NBER7zU3WaKXgntqjRgxok01sLckUm+ucvvnb4Ffhjw3\nGzODsIhIQvl8PmbMmMGSJUvYunUrlZWVTJo0iVmzZtUPBPRCsqzFnihOGl7WAieHpFUCJ7qfnVZR\nA7xIGmpussQxY8awbNkyT/JQW1vL8ccfzzXXXMOUKVOSoqeWE141wF+DCRp97Z+BbTNmbi4RkYRr\nbrLEfv36uXqfSNVoOTk5VFZWMm3atJQJJG6LFJE6A0cC/wvcHHTsHuDrOOcrFiqZiKSheE+WGFqN\nVlhYmJBqtHjwepwJwJmYyR4XAEcDnWiYqytZKJiIpKmJEyc2CSZLly515drhqtGysrIYO3asZ9Vo\n8eL1rMFlmDVM+mKCSTvgj8AwNzIgItJabgWOcPr168ezzz7bKK2urs71arRU5yQircM0wH9AQ0O8\n1jMRkbRQXV3NgAED2LlzZ32al2uOxJPXI+BrAX/Qfkc3biwikoyCG9r9fj/PPPMMu3fvpnfv3px1\n1lmUlJRQUlKS8oHEbU6quZ4GHgKOAH4OXAE8Gs9MiYh4Ldx4lYkTJ7Jnzx4+/PDDtBs3Ei2nxZvh\n9gbwMvBqfLLTKqrmEpGYJcN4Fa95Xc0FZl6uXwOzMG0nXdy4uYhIsvBqvEpb5SSYXA1sxzS6r8YE\nk9XxzJSIiJf8fj+dO3emW7dujdLz8/O59tprE5Sr1OJ0DfgTgJ0tHSgikmqC59QaMmQIe/bsqX8u\nPz9fDe0OOQkmG4ED8c6IiKSviooKZsyYwezZsznppJM8uaff7+f++++nrKyMmTNnptScWsnISTCZ\nAfwNeA/TTRjMqouT45UpEUkPiZrx1+fzMXz4cGpqatJyht94cNKK/3dgJWaSR799jgU8Ecd8xUK9\nuURSTCJ7UL355pucddZZaV0a8bo3VzYwFTOVyhPAQpIvkIhICkrkjL9nn312WgcStzmJSHcCn2OW\n6q0NSv8mLjmKnUomIinGixl/b775ZpYuXdrmZvx1g9ezBm/GVGsFs4DebmTARQomIikomhl/o22o\nHz58OK++2niMdVsfiBgNr2cNLnbjRiIi4TiZ8Tfahnq/3899993Hm2++GfZaGojoPlciUpJQyUSk\njYqmoT4wbqSyspLvvvsOv9/f6PmcnBw2btyo8SMkZjoVEZGEcdpQX1dXx9ixYxkzZgw/+9nPmgQS\ngN69eyuQxIFKJiKScC21hUTTUF9bW0tOTk7cG/fbAq/bTF4HznWQFklP4EmgG6bx/mFgbpjj5gI/\nAvYDlwFr7fTzgDlAFmb6+9lR3FtEklRzbSETJ07kV7/6VX1wKSoqoqSkpElgCBcUcnJyAKI6R+Kr\nA9AVM8Fjl6CtGPgkymvlAwPsx52AfwChLWAjgRX241OBd+3HWcBn9n0PAyrCnAumZCIiSWjt2rXW\niBEjrIqKikbp48aNs7Kzsy3Ml0wLsDIyMqz27dtbgFVYWGhNnz7dOnToUJNrbtq0KWy6OEfTnrox\ni9RmcjVmduC+mJmCA9vzwLwo77MdEwQA9gIbgMKQY8bSMBjyPcxiXPnAEEww2QwcApYC50d5fxHx\nSPAAQZ/Px/Tp0xk1ahQvv/wyI0eO5Kabbqpv/wjXFmJZFjU1NQBs3bqVOXPmcOGFF9Y/7/f7mTFj\nBscdd1xc134X97k9B1cxZhBkp5D0F4BhQfuvAYOAC4BHgtL/A7gvzHUTHeRF0tqhQ4esadOmWYWF\nhfWlij59+lhZWVmNSh7Z2dnW+PHjLcuyrC1btlj5+fmNng+33XLLLZZlWdYzzzxj5eTk1JdmIpVc\npGW4WDJx0mYyF/MhXxxy/JMx3K8T8GfgBkwJJVSrGoLKysrqH5eWllJaWtqay4lIFCZMmNCo++7W\nrVvJyMjACukYE9wLK7Rdo7a2loqKivqSCZh2jquuuopzzz2XN954o9G1AiWXjRs3ahCiA+Xl5ZSX\nl8fl2k4+vBdhRrtXAHVB6ddHea/DgOXAXzGN6aEeBMox1Vhg2mVKgF5AGaYRHmAmZsLJ0EZ4K/SP\nVkS8c8sttzBr1qwm6R07dmTfvn31+y31qAo3Ir6mpobnn3++SWAKvvcdd9zRyleQfryeTmUD0J/W\nFYcyMO0hXwM3NnPMSOAX9s/TMAHnNExp6B+Y3mNbgfeBi+18BVMwEUmg5rrinnLKKezevbtRWrRt\nHc0FqsD11N03Nl4Hk6cx1VJbW3GfM4C3MD3DAp/4twDfsx8/ZP+chymB7AMuB9bY6T+ioWvwY5i1\n6EMpmIgkWDTzbEUjXKA67LDDGDRoEMccc4wa4mPkdTApx3TrfZ/Gi2ONdSMDLlIwkZSTiBUGk5nf\n7+fBBx9kzJgx9OzZs9Fz8QpU6czrYFLaTHq5GxlwkYKJpIzQwXrpPjV6RUUFkydPZv/+/bRr145F\nixbRu3eyTUze9rgZTNqSxPStE4lBuMF6wV1mU0FzAxEjWbJkidW1a1frT3/6k2VZpjvx1KlTrc6d\nO1uAlZeXZ02dOlVdfT2Ci12DI1ll/9wL7AnZdjd3UgIl+vci4tjMmTMjjqdIZuHGk7Q01uPAgQPW\noEGDrMzMTAuwMjMzrcGDB1ujRo2yMjIyUjqopjI8CiapJtG/FxHHwg3Wy8/Pt7Zs2ZLorLUollJV\nQUFB2ODZsWPHlA2qbQEeD1oEOAk4y77xSmBd5MNFJJJUnoSwX79+PPvss43SWlpwqri4mG3btoW9\n1pYtW5q8D9dee617GRZPOGl4uQH4GbDMPn4cZnqTcLP+JpIdaEXEiVh7ksUytfvq1asZMmRIo0GH\nmZmZvPfee9x9993qpZUgXvfmqsQMHgwMYe2ImdH3RDcy4CIFExEH3OhJFm033aqqKvr37092dnb9\nPfLy8vjiiy9a92KkVRIRTIYAB+z9DpgxJwomIikomiVwY7V06VL+8z//k549ezJ69GgeeeQRZs6c\nyZQpU8jKynLlHtJ6Xi+OtQAzJXxwNdfjbtxcRLwXS5uHUzU1NZx++umsXbsWy7LYtWsXH330EZde\neik33HCDAkkb5jQiDQJOtx+vpGEFxGSikomIA/FczrawsDBsQzuYEpFm9k0uXpdM6u+L6c2l0ZIi\nKexf//oXAIMGDaJTJ7OskFs9yZrrtQW4UvKR5BVppcWAW4GFmCV7j8JUe/13HPMkInEQvOrh9u3b\n2bZtG6eccgqvvfZafeN58CqJsZg7d27g224jXbp0UXdf4Z9A+6D9DnZasknUuB+RlBBpsGEso9oD\nNm7caO3fv79+v2fPnlZ2draVlZVlZWVlWe3atbMuuuiieL40iREerQEfUI0JIAHtgS1uZUBEWs9J\niSLceuuBhvcJEyZw7733snWrWWkidO31pUuXctRRR/HUU0/Vn+v3+5k3bx5Dhgzh/fffr0//4osv\nOHToED6fD5/PR21trcaNCADPYdYyWWhv1cAzmHXYk2ngYqKDvIjnoilRRJrCpbm5wn75y1+GnVPr\n448/tkpKSqyhQ4dan3zySQJeubgBF0smThrTLwv+wKZxQ7yFWUExGdjvjUj6cDJmJHik+6xZs8IO\nNmyuh5ff72fHjh1N7puRkcFdd92lcSMpzuveXAvduJGIuC/SmJHQke6VlZVMmjSJRYsWNRnp3txc\nYV988UXYYHL00Udr3Ii0WYkuMYp4LlLVVWvXTFmyZImVl5cXtvorKytL08S3ASRg1mARSUKRZh+O\ndaR7TU0NZ5xxBmvXrsXv94c9pq6uTuNGpM1KdJAX8VRLKx0Gl1ra094CrK5du1olJSX154SufGhZ\nza89QpjSj6Q2PGqAfyH4gzrkWAsY61YmXGK/NyJtWzSz/k6cOJEvv/ySDe9toEP3DnzzzTfU1NRQ\nUFBQ37huWRaZmZkMHDiQlStXMmzYMNaubTpjUm5uLgMHDgQ0TXxb4dWswaX2z/FAPrDIPv5i4Ctg\nihsZcJGCiaSFSD24br311iZrlCx+dDEVP6vggcwH2OvfG/HaeXl5ZGRksHv37rBrjwwePDg+L0oS\nws1gEmnQYrm9nQFchCmpPI8JJme6cXMRiV5zgw+3bt3KqFGjePnllxk5ciQ33XQTPp+P9194n/M4\nj6P8R7V47b179/LWW2/Ro0cPOnfuXL8VFRUpkEhETiLSBmA0sNHe7w28CCRb65tKJpIWwo0JycnJ\nwefzUVdXV5+WnZ3N6NGj6fZpNy7++GJuy7qNt+reavH6BQUF9SPhpW3zepzJjcCbwCZ7vxj4uRs3\nF5HohevBtWPHDjZs2NDoOJ/PR5cju9Dj8x4ADMsYxr6B+zi84+GsXbuWvXvDV3n16tUrfpmXNstJ\nMHkJOA7oa+9/AtTGLUci0qLQxu9wpZV27dqR+XUmJ+89GYBhvmEcPuxw7v/z/c0GkszMTO699974\nZVzaLCfBpCMwFfge8DPg+5jAsjyO+RIRBx6a8xCvPPkKPfJ6cGLdiRyXdxw1NTUcPHgQ66DFlhe3\n0AmzZkkuuXzxwhcU7iikO92bXGsPeziQe0BtIxITJ3VlTwEfAJcCx2OCy9+Ak+KYr1iozSTNBc9B\nFejJ1JaEe30+n4+7Z97NjsU7GLV1FFlEP71JHXU8zMMU/kchdy24q0n3Ymm7vOrNFdAHmA0ctPf3\nuXFjEbcEL/oU2pMpmTldiCrS68vOzmbGXTO4YsUVPDnkSaoyqqLKw6d8yg2ZN/B297e55w/3KJBI\nzJxEpL8B59o/T8YElyXAkDjmKxYqmaQpJzPnJpNoBh2C89fn8/m4/Re3s/GRjVzpvzJiKaWOOpYX\nLqf7pO5MnzVdQSRNeV0yKcM0wvcAFgNvADe7cXMRN0Ra9CkZtbQQVSinry87O5tfP/hrdv2/XdzV\n/q6Iefhjnz9y5YormXHXDAUScYWTYPIKcAFwOSaYDMZ0FRZJCtdddx35+fmN0vLz85N2zfFog991\n111H9+5NG8yXL19OTU0N0LjKbNGSRRx39HER89DpYCd6HNMjxlcg0pST4s0i4BfAd/Z+MfA4cE6c\n8hQrVXOlsYkTJ4Zd9CkZhevG27VrV0444QTuvffesJ0HOnToUB84ghUUFDBp0qT6KrP8/HxO+8Fp\njHp1FMdaxzabh08zPqXTI524+MqL3XlRkpK8mpsr4GpM1+CpQBEwHZhG44kgk4GCicSdWz3GAsHP\nsiyqqqrYuXMnNTU1zbafDB06lHfffbfJdY488kh2797daOR7L3rxGI+RYf97b87ezOu9XueHm37I\nMb5jALCweG7sc8x5bk7Mr0FSn9dtJg8BVwHPArcDJSRfIBGJK7d7jC1dupTy8nK6dOnC9u3b60sd\nzbWf5OTkhL1O+/btGwUSgAIKyCCDOup4rvA5tk/ZzqOVj7JtyjaeL3yeOurIIIMDGw+gL2DiFifB\n5BJMtdalmCV8VwAD4pgnkaQTbaO5U07bT+xvkE18++235ObmNko7gzPYlL2JJ4c8Wd/InpOTw4y7\nZnD5i5fzxClP8Hn25xR9UUTF2opW5V8kwEkwuQA4HdMdeCam2mthHPMkknScfOg7HTcS7LLLLmsS\nKDIyMvjpT38KmFl8u3fvTnl5eZNzc3Nz60tJJSUllJSUcFLBSVTlVPHVlK94bNVjnHDSCY3OOXHA\niTz+t8fZNmUbXx7+Jc899pzjvIrEQ7tEZyAMrxcpkzQSbq31wKqFq1evtqZNm2YVFhZagFVYWGhN\nnz7dOnToUIvXzcnJCbuSYU5OTsTnMzIyrIsuuqjJ9eb+Zq5VWVHp6DVVVlRac38zN7o3QtoUPFpp\n8WbMyPf7wjxnAZPdyoRL7PdGJD6aazRv3749tbW1jdofggcVRmq0LyoqCjvde1FREVu2bGnxeZHW\n8KoBfr398wNgddD2gb2JpJXmGs1ramqaNGT7fD769u0bsdF+79697NsXfnaihx9+GICHHnoo4vMi\nqeAP9s9kW563OQktLkr6mDlzZtiqp+AtPz/fGjFihJWdnd0oPTs72xo/frxlWc1XYQX+ljdu3GiV\nlpZamZmZVmZmppWVlWVlZWVZHTp0SOTLlzYEF6u5IpVMBgGFwBVAlzCbSFpqbkR6QUEBZ511Vn1j\n+MCBA8M22r/00ks89dRTdO3aNez1CwsLmT9/PqeeeiqjR4/m4MGD1NXV4fP58Pl87N+/Py6vS6Q1\nItWVTQauwSzTG1ppa9npycQOtCLx16NHD6qrqxulhU6+uH79eo4//vhmr9GhQwcOHDjQJH3YsGFY\nlsWCBQvo27dvmDNF3OFVm8lczDrvC4BeIVuyBRIRT1166aVN0kK7Cp9wwglNjgkWHEgyMzPJysqi\nQ4cOPPzww6xcuVKBRFKKKxEpSahkIp75/PPP6d+/f6Mqp8MPP5z169dzzDFmypLc3Nxml8cNlszT\n5Uvb5vV0KiISYsqUKU3aLvbv38+NN95Yvz9//nxH10rm6fJFnFIwkYSLZeR4ojX34R+cfumll5KZ\n2fK/WDJPly/ilFfB5HHgK6AywjFzgU+BdZgVHQPOAz6xn9OiXG1Iqi63W1NTw4svvtgkvVu3bk2C\nQl1dHZZlMW7cuLCLUHXp0oWSkhKKiorill+RZDEU+Dtm7fdDgB/YHeU1zsQEiOaCyUjMBJIApwKB\nubazgM8wa6gcBlRgOgWEk8ju2hKDcePGRRyHkawKCgrCjg1p37592OPXrl1r9erVK+w5t9xyi8e5\nF2mAR+NMAuYBk4B/Au2BK4H7o7zPSuDbCM+PBZ6wH78HHAHkY9aZ/wzYjAlkS4Hzo7y3JKlUW243\noLi4OGz6wIEDG+0Hl7w2bdrU5HhVb0lb4rSa61NMKaEO01X4PJfzUQR8GbS/xU4rbCZd2oBkWm43\nmnabuXPnNmkLyczM5N57722UFjptfUDXrl3rBzaqekvaiqaVuE3tA3IwbRm/BbYTny7Frb5mWVlZ\n/ePS0lJKS0tbe0mJo6KiIkpKSpost+vlB6zP52PGjBn1y95WVlaGXekw2ODBgykqKmL37oba3ry8\nPAYPHtzouH79+vHss882Of/qq6/mjjvucPeFiDhQXl4edjkDNzj5AC/GNJ63A24E8jDVXJ9Fea9i\nzAqNJ4Z57kGgHFONBabBvQQzQLKMhpLQTEybzeww17CrAEWcGz9+PMuXL29U3dbacR9VVVV06tSJ\nQ4cONVnrPT8/n9WrV6tEIknB63Emm4EDwC7MB/tUog8kLXkes5IjwGnAd5gAthr4PiYQtQMuso8V\ncYWb7TZ+v79+Tq333nuvvuQVuimQSFsUKSI9DUwAPqJpi78F/CCK+yzBlDSOwgSJ2zC9s8CsMQ+m\nof88TLXa5cAaO/1HwBxMm81jwKxm7qGSiUSturraldJDVVUVV155JbW1tZpTS1KGmyWTSBcpxEzw\neEwzx212IwMuUjCRmAQWvQrIz89n6dKlEc5o7IEHHuDWW29lxowZTJkyhaysrHhkU8R1bgaTSA3w\ngS4oP8G0ZVRHOFYkZUUKHKGrJIZbNTEzM5O3335bpRFJa04iUhmmuutbTFB5GlNVlWxUMhHXhPby\nKigooKioiOrqarZt20ZhYWGLvb5Ekp1X1VyhTgIuxJRUtgDnupEBFymYSMT11qMRrpdXKM32K6ku\nUbMG78CMMfkaONqNm4u4xe15vsL18gp3z2QfrS/iFScR6VpMiaQbporrT8D6eGYqRiqZpDG3x4uE\n6+UVSmNGJNV51QAf0BOYgplkUSQphRtt3pqSQ1FREWeddRZr1qzh888/p2fPnhw8eJA+ffrUH+P1\naH2RZKaVFqVNcGu8SLBJkyaxefNmjRuRNitRDfDJTsEkzcUyXiRSg/1nn31Gr169NG5E2iwFk/AU\nTMSxDz74gAsuuIB9+/axc+dOcnJyuOiii3jsscfU1VfShoJJeAom0qLA+JF58+ZRW1vb5Pljjz2W\nDRs2KKBIWvC6a7AbKy2KxJXT9UgCa4yECyQAGzdu5MILL4xHFkXaNK9WWhSJi2jHl7Q0fsSyLI0d\nEYmBk+LNB8Ag4EMaZgquAAbEK1MxUjVXGop2fEl1dTUDBgxg586dYa+nsSOSTrweZ+LVSosiUYt2\nfElRUREdO3YkLy+PHj16sGHDBgD69+8PaOyISKy8XGkx3lQySUOxjC+xLCvwjUwkrXldMtls/zyA\nmUFYJGnEso68AomI+yL9V1VGeC7alRa9oJKJAA0DEa+//npOPPFEvve97yU6SyJJyatxJsX2z2vt\nn3+wj/93e/9mNzLgIgWTNBcYQ7J48WK2bdtGZmYmo0eP5i9/+YvGjYiE4dU4k832Nhz4Jaak8iEm\niAx34+bSNjgd4xHv606YMIE5c+awbds2APx+PytWrNC4EREPOBlnkgGcEbR/OurNJbi/hkhrr1tT\nU0NdXV2Ta2nciEhyCIwx+dze1gEDE5qj8Czx1rhx46zs7GwL04ZmAVZ2drY1fvz4hFx37ty51lFH\nHdXovPz8fGvLli2tyo9IW2X/n7jCSUXyB5jG9s72/i63bi6pze01RFp73euvv55Vq1ZF1bNLRNzh\npLrqKOA2TFWXBawE/gezfG8ysQOteCUea4jE87oi0pjX40yWAv8H/Ni+6STM0r0/dCMDkrpiGeMR\ny3X37t1LdXU1O3fupKCggAceeIAePXpw/vnnt+o+IuIeJxHpI+CEkLRK4ET3s9MqKpmkuNCFqgJd\nfZcsWcLWrVvp1q0bOTk5FBUVsXDhQq1+KNJKXpdMXgEuxpRGACbYaSKuCA0alZWVTJo0iX/+85+s\nWLGivhfXjh07yMzMZNCgQQokIkkmUjDZS0NL/xTMoEUw3Yn3AdPimC9JIxMmTGg08+/WrVuZM2cO\nvXv3btId2O/310/KKCLJI9I4k05Arr1lYgJPtv04N/5Zk3QRbo0Rn8/HiBEjyM/Pb5Sen5/Ptdde\ni4gkF6d1ZT/ATK8SXJJpulhEYqnNJEVF6r01bdq0JulLly5NRDZF2hyv14BfgGls/xizZG/A5W5k\nwEUKJils4sSJbNu2DcuyyMzMVNAQ8YDXa8CfCpwC/BQTQAKbSMxC59268847yczMZNy4cZSXlyuQ\niKQYJ7253gX6Y0omIq0S2nPrww8/pH///qxbt44ZM2Zwww03JDqLIhIDJ8WbEuB5zGqLtXaa1jOR\nmIRbsx3ghz/8Ia+++mqCciWSnrweZ/I4cAlm8KK/hWNFIgo37xbAkCFDEpAbEXGLk4j0DjA03hlx\ngUomKUDCuCV5AAASlElEQVTzbokkD69LJmuBxcALwEE7zSL5ugZLCojXfF4iklhOItJCws95n2w9\nulQySVJVVVUcOnRIU6CIJBmvuwZfRuMuweoaLI74/X7mz5/Pqaeeypo1axKdHRGJIyfVXB2AKzHd\ngzvQUEq5Il6ZktRXVVXFlVdeSW1tLW+//bZKJSJtnJOSyR+A7sB5QDnQEzMJpEhYjz76KKeeeiqj\nR49m5cqVCiQiacBJXVkFMACzDvwPgMOAtzEj45OJ2kySxHPPPce//du/KYiIJDmve3MFenDtwszR\ntR042o2bS9ukFRBF0o+TYPII0AX4L8xI+E7Af8czUyIiklpcKd4kCVVzecjv9/PAAw+Ql5fHJZdc\nkujsiEgMvKrmCreSomXf2AJ+70YGJDUEr8+em5tb31NrwYIFic6aiCSBSMEkl/CDFSWNhM7y++67\n73Lw4EFuv/12pk6dSlZWVqKzKCJJIFIwKfMqE5K8Qtdn37VrF1lZWbzzzjsKJCJSz8k4E7ecB3wC\nfArcHOb5UkyPsbX29l9RnCsuCF2wCsKvz15XV0e/fv28zp6IJDGvGuCzgH8APwSqgb8DFwMbgo4p\nBaYCY2M4F9QAH7PQqqzCwkImTZrErFmz+OqrrzTLr0gb5fU4EzcMAT4DNtv7S4HzaRoQwr0op+dK\njEKrsrZu3co999zDxo0bWbZsmWb5FZEWOe3NFejFFXgM0fXmKgK+DNrfQtMR9BYwDFiHKYFMB9Y7\nPFdaIdyCVcFVWVqPXURa4qQ3V1/gFMyAxQxgNPB+lPdxUv+0BjPv137gR8CzwHHR3KSsrKz+cWlp\nKaWlpdGcnrauu+46Hn/8cb766qv6tO7du3PttdcmMFci4rby8nLKy8vjcm0ndWUrgZHAHns/F1gB\nnBnFfU7D9A47z96fiVkCeHaEczYBgzABxcm5ajOJQUVFBZMnT+ajjz6irq6Ovn37cvjhh5Ofn68S\niUgb53WbSTfgUND+ITstGquB7wPFwFbgIkwjerDuwA5MKWYI5gV+4/BciVJoo3teXh5XXXUVs2fP\nJjvbq6Y0EWkrnHxqPImp1lqG+YAfBzwR5X18wC+AlzG9sx7DNKBfbT//EPAT4Br72P3AxBbOlVYI\nbXTfvXs3c+fOZdOmTSxbphWZRSQ6ToLJHcBLwBn2/mWYcSDR+qu9BXso6PF8e3N6rrRCuEZ3n8+n\n8SMiEhOndWVnYqqaHsdMP98J06aRTNRm0oKqqip2797NgAEDqK6u1vgRkTTndZtJGaYhvC8mmLQD\nFgGnu5EBib/ADL9lZWXcfffdDBgwgKKiIo0fERHXOIlI64CTgQ/sn9Cw6mIyUckkjOC12BcsWKDV\nD0WknpslEydzc9ViuuIGdHTjxhJ/Cxcu1FrsIuIJJ9VcT2Mayo8Afg5cATwaz0yJO3r06MHbb7+t\nICIicee0eDPc3sB00X01PtlpFVVziYhEwc1qLicXmU3Tad/DpSWagomISBS8bjMZHiZtpBs3l9bz\n+/3Mnz+fefPmJTorIpLGIrWZXANcC/QBKoPSc4FV8cyUOBPaU0tEJFEilUwWA2MwswWPth+PwYw5\n+ff4Z02aEyiNqKeWiCSLaOrKugHtg/a/cDkvrZU2bSY33XQTq1at0rgREWkVrxvgxwK/Awoxs/oe\ng5lo8Xg3MuCitAkmX3/9NUcccQRZWVmJzoqIpDCvG+B/AwwF/gn0As4F3nPj5hKbrl27KpCISFJx\nEkwOATvtY7OAN4HB8cyUGH6/nz179rR8oIhIgjkJJt9ienCtBP4IzAX2xjNTYnpqnXPOOdxxxx2J\nzoqISIucBJNxmMWqbsSsa/IZpleXxIHf72fevHkMGTKEMWPGKJiISEpwMjdXoBTSEXjBfpweLd0e\nq6qq4oorruDgwYOsWrVKPbVEJGU4acW/GridxrMHW0DveGUqRinfm+vOO+8kJyeHKVOmqIFdROLO\n667BnwGnYRrhk1nKBxMRES953TV4I3DAjZuJiEjb5CQinQwsxIwtqbXTLGBynPIUq5QpmVRVVfHV\nV18xdOjQRGdFRNKY1yWTh4HXgXeA1Zjlez9w4+bpJrin1vr16xOdHRER1zjpzZUNTI13RtqyiooK\nJk+ezP79+2nXrp16aolIm+OkZPJXTI+uAqBL0CYt8Pl8TJ8+nbPPPpuVK1fy6aefMnToUPr06ZPo\nrImIuMpJXdlmwo8r6eVuVlot6dpMxo8fz/Lly/H5fPVp2dnZjBkzhmXLliUwZyIi3reZFGMCR+gm\nLejXr1+jQAKmtNKvX78E5UhEJD4iRaRzMQ3vFxC+ZJJsX62TrmRSXV3N4MGD2b59e31afn4+q1ev\npqioKIE5ExFxt2QSqQH+LEwwGUNqBJOE8vv93H///ezevZtbbrkFgKKiIkpKSpoEEwUSEWlrnESk\n3kCVg7RES1jJJHhOLa1+KCKpwus2kz+HSXvajZunutAZfrUWu4ikq0jVXP2A/sARwI8x0csC8mi8\nFnzaKisr47XXXtO4ERFJe5GKN+cD4zFtJs8Hpe8BlgJ/i2O+YuF5NdeuXbvo1KmTZvgVkZTk9azB\nQzFTqSS7pOvNJSKSzLxuM/kxpmrrMEzvrp3AJW7cPFX4/X6++eabRGdDRCRpOQkmw4HdwGjMaPg+\nwE1xzFNSCazFfvvttyc6KyIiSctJMAk00o/G9OzaRRos2xvaU+v3v/99orMkIpK0nMwa/ALwCVAD\nXAN0sx+3WVqLXUQkOk4bXroC3wF1QEcgF9ge8QzvudYAP3/+fGpqarQWu4i0aV715vol8Fv78QQa\nD1S8E7jFjQy4SL25RESi4FVvrouDHocGjh+5cXMREWkbnDTAt1lVVVW8/vrric6GiEjKS8tgEtxT\n67PPPkt0dkREUl6k3lw/wEydAtAh6HFgPyWpp5aIiPsilUyyML22cjFBJzdkP+UsWbJEM/yKiMSB\nK634SaLF3lwVFRV06NBBQUREBO8nekwV6hosIhIFryd6dMt5mJH0nwI3N3PMXPv5dcDJUZ4rIiIJ\n4lUwyQLmYYJCf8wYln4hx4wEjgW+D/wceCCKc+sFemrNmDHDzfynlfLy8kRnoU3R++kuvZ/Jyatg\nMgT4DDPr8CHM4lrnhxwzFnjCfvweZoXHfIfnAvDiiy9yzjnnsHjxYi6//HJ3X0Ea0T+ru/R+ukvv\nZ3LyKpgUAV8G7W+x05wcU+jgXADGjh0LwJtvvqlGdhERD3kVTJy2jLeqIcjv97Nq1Souvvjilg8W\nEZGUcxrwUtD+TJo2pD8ITAza/wTo7vBcMAFLmzZt2rQ531JuCpBsYCNQDLQDKgjfAL/Cfnwa8G4U\n54qISJr4EfAPTCScaaddbW8B8+zn1wEDWzhXRERERETEOxrs6K6W3pNSYBew1t7+K4pz083jwFdA\nZYRj9LfpTE/gTeBj4CNgcjPH6f1smR+4O2h/OnBbDNcpxSzb3iZkYaq2ioHDaLmt5VQa2lqcnJtu\nnLwnpcDzMZ6bbs7EfKA1F0z0t+lcPjDAftwJU62t//XY1GDambva+9PwIJgk+3omngx2TCNO35Nw\nXbT1fja1Evg2wvP623RuOyYIAOwFNmDGmAXT++nMIeBh4MYwz43BBOE1wKtANzu9hIbaiDWYgI79\n82nM72NRpJsmezDxZLBjGnHyflrAMEw1wgrMFDZOz5XG9LcZm2JMie+9kHS9n87dD/w7kBeSvhLT\nW3Yg8Cfgl3b6NOBazPt+BnDATj8ZuAHzOdAbOL25Gyb7uiSWw+Pa0uzH8eTk/VyDqb/ej+lF9yxw\nXDwz1cbpbzM6nYA/Yz7A9oZ5Xu+nM3uAJzFtTweC0nsCT2FKdO2AKjt9FXAP8EdgGVBtp78PbLUf\nV2AC/apwN0z2kkk15sUH9MR864h0TA/7GCfnphsn78keTCAB+CumDrqLfZzez+jobzM6hwF/wVSn\nPBvmeb2f0ZkDXAl0DEq7D9OJ4QeYYRmBVXNn28d2wASLwHxUtUHn1pH8BZBmabCju5y8J91p+PY3\nBFMP7fTcdFSMswZ4/W1GloH5Jn1PhGP0fjoTvMT6bOBz4FZ7fw0NY/gWYHrQAfQJOudpTPtUCY0b\n4O8Dfup2Zr2kwY7uaun9vA7TNbMC+BvmnzbSuelsCaYK4CCmzv4K9LcZqzMwXVoraGgI/hF6P2Ox\nO+hxN2AfDcFkLCbwrgZ+C7xhp8/FfClah6nqOgwTTIJ7dt4HXBq3XIuIiIiIiIiIiIiIiIiIiIiI\niIiIiIhIItXR0J9/LQ1z9IRzPo0Hgd0OnOtCHjoD18RwXhlmLiGn6bEIN5VHqGIiTz/vVCFmoFgy\nORMzHfwaoD1wF2b80WyX7/NToCBofzNmxoVYtfZ8EYnSnpYPqbcQuCAOeSgmtg/j2wgfNJpLj4WT\n96cYd4JJMnoQM1FgwHfEZ16sN4FBQfubaJg6PRabUDBJiGSfm0u897+Yb6TrMN9Gh2Kmrb4L8y21\nN42Dy2bgTkzp5u+YWUZfxoxEDoxc7gS8BnwAfIgZhRu4Vx/73MA33pswk8utw5Q0An6FGeG8koZ5\ngyL5mX2dCszEgYE5iBZiZlR9BzMSuASzyNV6zPQSwX6P+Tb+GnCUnTbIzlsFZpbVgGLgLfs1foB5\n30LNCjmnDBP8jrHv4/Q6xZiFoBbZ+X466PX9t/26K4GH7LQ+9rUCvh+0fy7m9/oh8BhmOpKrgAnA\nr+17PIf5Ha4BLgzJSxlmWvi3MH8L4zEjqz/EzO0WmMtpEFCOGXn9EmaiwZ8AgzEjrgMlIIDrafhb\nCfyuu2Dm61qH+d2daKd3BV7BvH+PoIkgRTzno3E11wTMP+YnQccEpq9eAPw4KD14fxMNQeP3mH/2\njpgP3+12ehaQaz8+CrMaHpgP0eBv9sNp+ADMxMwLdCbmg+hDzIdNrn3+1DCvKbhkEvzt9NfAL4Ly\nvth+PBazquTxmA+h1ZgJ8MBM7XGx/fi/MVNJYOfjDPvxb4Py3wHIsR9/HxNYQw3AfKAGfIyZKr04\nyusU2/kLBJrHaHjdRwYd9yQw2n78BnCS/fhOzLQ57YEvgGPt9Ccws/VC0995cyW1MkwgycK8d/uA\nEfZzyzBVpIdhpuYJlDgusvMMpmQSPC3KJjtvYKpAH7Ef34f5PQCcjfmbBTMNSGA10JGY90UlkwRI\n2RkgpdUO0HjZUzAfCDWYf/Tl9hYQ6RtfYP6eSsw32H32VosJSAcw38rPxPyzF2LmDAq95nB7C3xQ\ndMR8oOZiPphq7O35FvID5pvrbzDtMp0w34YDApPXfYRZdvdje/9jzAf1h3Y+/2SnL7Lv39ne3rbT\n/4CZEwrMN/p5mA/sOsJP21+Bed0F9s9vMTPeFgcd4+Q6YOYCeycof5OB3wHnYEp3h2M+VD/C/B4f\nBS7HBOELgVMw3/o3YUqRYILJdcC99r6Tb/kWpgRSZ98rC1MyBfP3UGy/huMxJTzsY7YGXSP0Psvs\nn2toCGinBz1+ExOYcjF/U+Pt9BVEXqxM4kjBRILVYWYKPhdTBfELGhraI62FEpim2k/jKav9mG+l\nP8aUSAba99hEQ5VGqFmYVeKC3UDjD5xIH3KBfC7ElDwqMY28pUHHHIyQ33D/ExmEf/3B+bgR2AZc\nQkNQDudpzHubj1kRMJTT6wTnJ5C/HEwV3kBMkLqNhuqvZfb+G5gS2LfA9yK8nmgEv5+HgtID72cG\nJlAPa+b80Pc28DsJnfK8ufypaisJqM1EgnXELIX6V8w32EC1yB6artgWTnP/1HnADsyHw9mY6q3A\ndXODjnsZM/NuYP2FIuBoTDXKOBqquUbTfHAL5KETpprtMOA/IhzfnExM1R/AJExbzS5MQ3Rgtbng\nBuo8Gqr1LsUEgnD+hKk++wnhe3A5vc73aJjROZC/9pjX+TXm9U+g4XXXYN7fB2hoG/oHpuQQmH78\nEhpXw7nlH5jfYyC/h9GwgqfTv62VNLzfpcC/7HPfwrx+MKXEI5ucKZ5QMElfHWjcZnIn5oP6BUy7\nx0oa1pBeiqk6+QDTAN8ci8Yf2oH9P2IaWj/EfGBtsJ//GrMQTyWmAf5VTHvGO/axT2E+FNdiPoQD\nSwm/30IewNSvv4epktrQzDGhj4Ptw5TSKjEfXv9jp18OzKehKi5w/v2YElAFpvqoua7F6zGvaQum\nii00H06v8w9MldR6TNXbA5hg9wimuuklmi57uxhTWnjF3q+xX8/TmPfbh+nFFZqn0MehIh1nYUor\nP8H8jgNTzAfaexba9wxugA8+N3C9Mho6P9xJw7oatwNnYV7zeMzaHSIi4kAxsXVJno758BVxndpM\nRFJTtNV2zwC9MA30IiIiIiIiIiIiIiIiIiIiIiIiIiIiIiLh/H9WWQ3LmJcxMwAAAABJRU5ErkJg\ngg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b568910>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"method_scatterplot(simdata, 1.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In the case of a 2x2 game, we can do something else to visualise what is going on. Because the space of mixed strategy profiles is just equivalent to a square, we can project the QRE correspondence down onto a square. This next function sets that up."
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def correspondence_plot(game, df=None):\n",
" corresp = gambit.nash.logit_principal_branch(game)\n",
" plt.plot([ x.profile[game.players[0]][0] for x in corresp ],\n",
" [ x.profile[game.players[1]][0] for x in corresp ], 'k--')\n",
" plt.xlabel(\"Pr(Player 0 strategy 0)\")\n",
" plt.ylabel(\"Pr(Player 1 strategy 0)\")\n",
" \n",
" for lam in numpy.arange(1.0, 10.1, 1.0):\n",
" qrelam = gambit.nash.logit_atlambda(game, lam).profile\n",
" plt.plot([ qrelam[game.players[0]][0] ],\n",
" [ qrelam[game.players[1]][0] ], 'kd')\n",
" \n",
" if df is None: return\n",
"\n",
" for (index, sample) in df.iterrows():\n",
" lam = sample['payoff']\n",
" fitted = gambit.nash.logit_atlambda(game, lam).profile\n",
" plt.plot([ sample['p0s0']/(sample['p0s0']+sample['p0s1']),\n",
" fitted[game.players[0]][0] ],\n",
" [ sample['p1s0']/(sample['p1s0']+sample['p1s1']),\n",
" fitted[game.players[1]][0] ], 'r')\n",
" \n",
" lam = sample['fixedpoint']\n",
" fitted = gambit.nash.logit_atlambda(game, lam).profile\n",
" plt.plot([ sample['p0s0']/(sample['p0s0']+sample['p0s1']),\n",
" fitted[game.players[0]][0] ],\n",
" [ sample['p1s0']/(sample['p1s0']+sample['p1s1']),\n",
" fitted[game.players[1]][0] ], 'b')"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10afdbf10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"correspondence_plot(g)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now, we can add to this correspondence plot information about our simulated data and fits. For each simulated observation, we plot the simulated strategy frequencies. We then plot from that point a red line, which links the observed frequencies to the fitted point on the QRE correspondence using the payoff method, and a blue line, which links the observed frequencies to the fitted point using the fixed-point method. It becomes clear that the fixed-point method (blue) lines generally link up to points farther along the correspondence, i.e. ones with higher $\\lambda$."
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b763890>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"correspondence_plot(g, simdata)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Other games from McKPal95"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is reasonable to ask whether this biased performance is due to some special characteristic of the games studied by Ochs. We can look to some other games from McKelvey-Palfrey (1995) to investigate this further.\n",
"\n",
"The second case study is a constant-sum game with four strategies for each player reported in\n",
"\n",
"O'Neill, B. (1987) Nonmetric test of the minimax theory of two-person zerosum games. *Proceedings of the National Academy of Sciences of the USA*, **84**:2106-2109."
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"array([[5, -5, -5, -5],\n",
" [-5, -5, 5, 5],\n",
" [-5, 5, -5, 5],\n",
" [-5, 5, 5, -5]], dtype=object)"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"matrix = numpy.array([ [ 5, -5, -5, -5 ],\n",
" [ -5, -5, 5, 5 ],\n",
" [ -5, 5, -5, 5 ],\n",
" [ -5, 5, 5, -5 ] ], dtype=gambit.Rational)\n",
"matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We again follow McKPal95 and translate these payoffs into 1982 cents for comparability."
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"matrix *= gambit.Rational(913, 1000)\n",
"game = gambit.Game.from_arrays(matrix, -matrix)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We simulate our data around the $\\hat\\lambda\\approx 1.3$ reported by McKPal95."
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"simdata = simulate_fits(g, 1.3, 50)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"0.81999999999999995"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(simdata.fixedpoint>simdata.payoff).astype(int).mean()"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 10404.541981\n",
"std 104031.503429\n",
"min 0.000000\n",
"25% 0.873675\n",
"50% 1.378318\n",
"75% 1.898363\n",
"max 1040316.425896\n",
"Name: fixedpoint, dtype: float64"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.fixedpoint.describe()"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 1.170266\n",
"std 0.808044\n",
"min 0.000000\n",
"25% 0.640770\n",
"50% 1.124914\n",
"75% 1.638081\n",
"max 4.552230\n",
"Name: payoff, dtype: float64"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.payoff.describe()"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b7823d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"method_scatterplot(simdata, 1.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another game considered by McKPal95 is a 5x5 constant-sum game from\n",
"\n",
"Rapoport, A. and Boebel, R. (1992) Mixed strategies in strictly competitive games: A further test of the minimax hypothesis. *Games and Economic Behavior* **4**: 261-283.\n",
"\n",
"We put the estimation approaches through their paces, around the $\\hat\\lambda \\approx 0.25$ reported by McKPal95."
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"matrix = numpy.array([ [ 10, -6, -6, -6, -6 ],\n",
" [ -6, -6, 10, 10, 10 ],\n",
" [ -6, 10, -6, -6, 10 ],\n",
" [ -6, 10, -6, 10, -6 ],\n",
" [ -6, 10, 10, -6, -6 ] ], dtype=gambit.Rational)\n",
"matrix *= gambit.Rational(713, 1000)\n",
"game = gambit.Game.from_arrays(matrix, -matrix)\n",
"simdata = simulate_fits(g, 0.25, 50)"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 0.526018\n",
"std 0.758547\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.269889\n",
"75% 0.729984\n",
"max 4.459251\n",
"Name: fixedpoint, dtype: float64"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.fixedpoint.describe()"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 0.442650\n",
"std 0.603704\n",
"min 0.000000\n",
"25% 0.000000\n",
"50% 0.236655\n",
"75% 0.627919\n",
"max 3.032108\n",
"Name: payoff, dtype: float64"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.payoff.describe()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10bbcf650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"method_scatterplot(simdata, 0.25)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Estimating other parameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"While it appears, from these (still preliminary) results, that the payoff method for estimating $\\lambda$ is biased towards estimates which are more \"noisy\" than the true behaviour, this may not in practice be much of a concern.\n",
"\n",
"In the view of this researcher, the real strength of the logit model is in using it to estimate other parameters of interest. The logit model has some attractive foundations in terms of information theory which make it ideal for this task (in addition to being computationally quite tractable).\n",
"\n",
"It is precisely in these applications where the payoff-based estimation approach is most attractive. The fixed-point method becomes progressively more computationally infeasible as the game gets larger, or as the number of parameters to be considered grows. The payoff approach on the other hand scales much more attractively. What we really want to know, then, is not so much whether $\\hat\\lambda$ is biased, but whether estimates of *other* parameters of interest are systematically biased as well.\n",
"\n",
"We pick this up by looking at some examples from\n",
"\n",
"Goeree, Holt, and Palfrey (2002), Risk averse behavior in generalized matching pennies games."
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"matrix1 = numpy.array([ [ 200, 160 ], [ 370, 10 ]], dtype=gambit.Decimal)\n",
"matrix2 = numpy.array([ [ 160, 10 ], [ 200, 370 ]], dtype=gambit.Decimal)\n",
"game = gambit.Game.from_arrays(matrix1, matrix2)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The idea in GHP2002 is to estimate simultaneously a QRE with a common constant-relative risk aversion parameter $r$. This utility function transforms the basic payoff matrix into (scaled) utilities given CRRA paramater $r$."
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def transform_matrix(m, r):\n",
" r = gambit.Decimal(str(r))\n",
" return (numpy.power(m, 1-r) - numpy.power(10, 1-r)) / \\\n",
" (numpy.power(370, 1-r) - numpy.power(10, 1-r))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The next few functions set up the optimisation. For the purposes of the talk, we simply look over a discrete grid of possible risk aversion parameters (to keep the running time short and reliable for a live demo!)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def estimate_risk_fixedpoint_method(matrix1, matrix2, freqs):\n",
" def log_like(r):\n",
" tm1 = transform_matrix(matrix1, r)\n",
" tm2 = transform_matrix(matrix2, r)\n",
" g = gambit.Game.from_arrays(tm1, tm2)\n",
" profile = g.mixed_strategy_profile()\n",
" for i in xrange(len(profile)):\n",
" profile[i] = freqs[i]\n",
" qre = gambit.nash.logit_estimate(profile)\n",
" logL = numpy.dot(numpy.array(list(freqs)), numpy.log(list(qre.profile)))\n",
" return logL\n",
" results = [ (x0, log_like(x0))\n",
" for x0 in numpy.linspace(0.01, 0.99, 100) ]\n",
" results.sort(key=lambda r: -r[1])\n",
" return results[0][0]"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def estimate_payoff_method(freqs):\n",
" def log_like(freqs, values, lam):\n",
" logit_probs = [ [ math.exp(lam*v) for v in player ] for player in values ]\n",
" sums = [ sum(v) for v in logit_probs ]\n",
" logit_probs = [ [ v/s for v in vv ]\n",
" for (vv, s) in zip(logit_probs, sums) ]\n",
" logit_probs = [ v for player in logit_probs for v in player ]\n",
" logit_probs = [ max(v, 1.0e-293) for v in logit_probs ]\n",
" return sum([ f*math.log(p) for (f, p) in zip(list(freqs), logit_probs) ])\n",
" p = freqs.copy()\n",
" p.normalize()\n",
" v = p.strategy_values()\n",
" res = scipy.optimize.minimize(lambda x: -log_like(freqs, v, x[0]), (0.1,),\n",
" bounds=((0.0, 10.0),))\n",
" return log_like(freqs, v, res.x[0])\n",
"\n",
"def estimate_risk_payoff_method(matrix1, matrix2, freqs):\n",
" def log_like(r):\n",
" tm1 = transform_matrix(matrix1, r)\n",
" tm2 = transform_matrix(matrix2, r)\n",
" g = gambit.Game.from_arrays(tm1, tm2)\n",
" profile = g.mixed_strategy_profile()\n",
" for i in xrange(len(profile)):\n",
" profile[i] = freqs[i]\n",
" logL = estimate_payoff_method(profile)\n",
" return logL\n",
" results = [ (x0, log_like(x0))\n",
" for x0 in numpy.linspace(0.01, 0.99, 100) ]\n",
" results.sort(key=lambda r: -r[1])\n",
" return results[0][0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is a variation on the simulator driver, where we will focus on collecting statistics on the risk aversion parameters estimated."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def simulate_fits(game, matrix1, matrix2, r, lam, N, trials=100):\n",
" qre = gambit.nash.logit_atlambda(game, lam).profile\n",
" samples = [ ]\n",
" for sample in xrange(trials):\n",
" f = game.mixed_strategy_profile()\n",
" for player in game.players:\n",
" f[player] = numpy.random.multinomial(N, qre[player], size=1)[0]\n",
" samples.append(f)\n",
" labels = [ \"p%ds%d\" % (i, j)\n",
" for (i, player) in enumerate(game.players)\n",
" for (j, strategy) in enumerate(player.strategies) ]\n",
" return pandas.DataFrame([ list(freqs) +\n",
" [ estimate_risk_fixedpoint_method(matrix1, matrix2, freqs),\n",
" estimate_risk_payoff_method(matrix1, matrix2, freqs),\n",
" r ]\n",
" for freqs in samples ],\n",
" columns=labels + [ 'r_fixedpoint', 'r_payoff', 'actual' ])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"GHP02 report a risk aversion parameter estimate of $r=0.44$ for this game, so we adopt this as the true value. Likewise, they report a logit parameter estimate of $\\frac{1}{\\lambda}=0.150$ which we use as the parameter for the data generating process in the simulation."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"game = gambit.Game.from_arrays(transform_matrix(matrix1, gambit.Decimal(\"0.44\")),\n",
" transform_matrix(matrix2, gambit.Decimal(\"0.44\")))"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>p0s0</th>\n",
" <th>p0s1</th>\n",
" <th>p1s0</th>\n",
" <th>p1s1</th>\n",
" <th>r_fixedpoint</th>\n",
" <th>r_payoff</th>\n",
" <th>actual</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>71</td>\n",
" <td>29</td>\n",
" <td>0.663333</td>\n",
" <td>0.663333</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>42</td>\n",
" <td>58</td>\n",
" <td>63</td>\n",
" <td>37</td>\n",
" <td>0.396061</td>\n",
" <td>0.405960</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>66</td>\n",
" <td>34</td>\n",
" <td>0.455455</td>\n",
" <td>0.455455</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>67</td>\n",
" <td>33</td>\n",
" <td>0.475253</td>\n",
" <td>0.475253</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>66</td>\n",
" <td>34</td>\n",
" <td>0.455455</td>\n",
" <td>0.455455</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>39</td>\n",
" <td>61</td>\n",
" <td>65</td>\n",
" <td>35</td>\n",
" <td>0.455455</td>\n",
" <td>0.465354</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>52</td>\n",
" <td>48</td>\n",
" <td>69</td>\n",
" <td>31</td>\n",
" <td>0.673232</td>\n",
" <td>0.673232</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>65</td>\n",
" <td>35</td>\n",
" <td>0.425758</td>\n",
" <td>0.435657</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>42</td>\n",
" <td>58</td>\n",
" <td>61</td>\n",
" <td>39</td>\n",
" <td>0.356465</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>46</td>\n",
" <td>54</td>\n",
" <td>71</td>\n",
" <td>29</td>\n",
" <td>0.594040</td>\n",
" <td>0.594040</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>52</td>\n",
" <td>48</td>\n",
" <td>68</td>\n",
" <td>32</td>\n",
" <td>0.643535</td>\n",
" <td>0.643535</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>67</td>\n",
" <td>33</td>\n",
" <td>0.475253</td>\n",
" <td>0.475253</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>55</td>\n",
" <td>45</td>\n",
" <td>68</td>\n",
" <td>32</td>\n",
" <td>0.821717</td>\n",
" <td>0.821717</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>42</td>\n",
" <td>58</td>\n",
" <td>69</td>\n",
" <td>31</td>\n",
" <td>0.524747</td>\n",
" <td>0.524747</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>14</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.366364</td>\n",
" <td>0.376263</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>15</th>\n",
" <td>46</td>\n",
" <td>54</td>\n",
" <td>49</td>\n",
" <td>51</td>\n",
" <td>0.010000</td>\n",
" <td>0.010000</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>16</th>\n",
" <td>41</td>\n",
" <td>59</td>\n",
" <td>66</td>\n",
" <td>34</td>\n",
" <td>0.455455</td>\n",
" <td>0.475253</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>17</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>61</td>\n",
" <td>39</td>\n",
" <td>0.346566</td>\n",
" <td>0.356465</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>18</th>\n",
" <td>48</td>\n",
" <td>52</td>\n",
" <td>67</td>\n",
" <td>33</td>\n",
" <td>0.514848</td>\n",
" <td>0.514848</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>19</th>\n",
" <td>52</td>\n",
" <td>48</td>\n",
" <td>64</td>\n",
" <td>36</td>\n",
" <td>0.544545</td>\n",
" <td>0.544545</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20</th>\n",
" <td>54</td>\n",
" <td>46</td>\n",
" <td>64</td>\n",
" <td>36</td>\n",
" <td>0.663333</td>\n",
" <td>0.663333</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>21</th>\n",
" <td>49</td>\n",
" <td>51</td>\n",
" <td>63</td>\n",
" <td>37</td>\n",
" <td>0.425758</td>\n",
" <td>0.425758</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>22</th>\n",
" <td>43</td>\n",
" <td>57</td>\n",
" <td>60</td>\n",
" <td>40</td>\n",
" <td>0.326768</td>\n",
" <td>0.336667</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>23</th>\n",
" <td>58</td>\n",
" <td>42</td>\n",
" <td>61</td>\n",
" <td>39</td>\n",
" <td>0.990000</td>\n",
" <td>0.990000</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>24</th>\n",
" <td>35</td>\n",
" <td>65</td>\n",
" <td>66</td>\n",
" <td>34</td>\n",
" <td>0.514848</td>\n",
" <td>0.514848</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25</th>\n",
" <td>33</td>\n",
" <td>67</td>\n",
" <td>71</td>\n",
" <td>29</td>\n",
" <td>0.613838</td>\n",
" <td>0.633636</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>26</th>\n",
" <td>48</td>\n",
" <td>52</td>\n",
" <td>78</td>\n",
" <td>22</td>\n",
" <td>0.821717</td>\n",
" <td>0.821717</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27</th>\n",
" <td>41</td>\n",
" <td>59</td>\n",
" <td>60</td>\n",
" <td>40</td>\n",
" <td>0.346566</td>\n",
" <td>0.356465</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>28</th>\n",
" <td>44</td>\n",
" <td>56</td>\n",
" <td>72</td>\n",
" <td>28</td>\n",
" <td>0.603939</td>\n",
" <td>0.603939</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>29</th>\n",
" <td>47</td>\n",
" <td>53</td>\n",
" <td>70</td>\n",
" <td>30</td>\n",
" <td>0.574242</td>\n",
" <td>0.574242</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>70</th>\n",
" <td>41</td>\n",
" <td>59</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.386162</td>\n",
" <td>0.396061</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>71</th>\n",
" <td>53</td>\n",
" <td>47</td>\n",
" <td>74</td>\n",
" <td>26</td>\n",
" <td>0.861313</td>\n",
" <td>0.861313</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>72</th>\n",
" <td>46</td>\n",
" <td>54</td>\n",
" <td>72</td>\n",
" <td>28</td>\n",
" <td>0.613838</td>\n",
" <td>0.613838</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>73</th>\n",
" <td>48</td>\n",
" <td>52</td>\n",
" <td>64</td>\n",
" <td>36</td>\n",
" <td>0.435657</td>\n",
" <td>0.435657</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>74</th>\n",
" <td>49</td>\n",
" <td>51</td>\n",
" <td>60</td>\n",
" <td>40</td>\n",
" <td>0.346566</td>\n",
" <td>0.346566</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75</th>\n",
" <td>44</td>\n",
" <td>56</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.366364</td>\n",
" <td>0.376263</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>76</th>\n",
" <td>58</td>\n",
" <td>42</td>\n",
" <td>71</td>\n",
" <td>29</td>\n",
" <td>0.990000</td>\n",
" <td>0.990000</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>77</th>\n",
" <td>52</td>\n",
" <td>48</td>\n",
" <td>65</td>\n",
" <td>35</td>\n",
" <td>0.564343</td>\n",
" <td>0.564343</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>78</th>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>70</td>\n",
" <td>30</td>\n",
" <td>0.633636</td>\n",
" <td>0.633636</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>79</th>\n",
" <td>50</td>\n",
" <td>50</td>\n",
" <td>65</td>\n",
" <td>35</td>\n",
" <td>0.495051</td>\n",
" <td>0.495051</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>80</th>\n",
" <td>45</td>\n",
" <td>55</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.366364</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>81</th>\n",
" <td>55</td>\n",
" <td>45</td>\n",
" <td>64</td>\n",
" <td>36</td>\n",
" <td>0.752424</td>\n",
" <td>0.752424</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>82</th>\n",
" <td>56</td>\n",
" <td>44</td>\n",
" <td>70</td>\n",
" <td>30</td>\n",
" <td>0.950404</td>\n",
" <td>0.950404</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>83</th>\n",
" <td>51</td>\n",
" <td>49</td>\n",
" <td>64</td>\n",
" <td>36</td>\n",
" <td>0.504949</td>\n",
" <td>0.504949</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>84</th>\n",
" <td>42</td>\n",
" <td>58</td>\n",
" <td>74</td>\n",
" <td>26</td>\n",
" <td>0.643535</td>\n",
" <td>0.643535</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>85</th>\n",
" <td>48</td>\n",
" <td>52</td>\n",
" <td>66</td>\n",
" <td>34</td>\n",
" <td>0.485152</td>\n",
" <td>0.485152</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>86</th>\n",
" <td>45</td>\n",
" <td>55</td>\n",
" <td>61</td>\n",
" <td>39</td>\n",
" <td>0.336667</td>\n",
" <td>0.346566</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>87</th>\n",
" <td>47</td>\n",
" <td>53</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.366364</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>88</th>\n",
" <td>47</td>\n",
" <td>53</td>\n",
" <td>76</td>\n",
" <td>24</td>\n",
" <td>0.742525</td>\n",
" <td>0.742525</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>89</th>\n",
" <td>44</td>\n",
" <td>56</td>\n",
" <td>63</td>\n",
" <td>37</td>\n",
" <td>0.386162</td>\n",
" <td>0.396061</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>90</th>\n",
" <td>45</td>\n",
" <td>55</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.366364</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>91</th>\n",
" <td>51</td>\n",
" <td>49</td>\n",
" <td>59</td>\n",
" <td>41</td>\n",
" <td>0.366364</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>92</th>\n",
" <td>51</td>\n",
" <td>49</td>\n",
" <td>70</td>\n",
" <td>30</td>\n",
" <td>0.663333</td>\n",
" <td>0.663333</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>93</th>\n",
" <td>48</td>\n",
" <td>52</td>\n",
" <td>68</td>\n",
" <td>32</td>\n",
" <td>0.534646</td>\n",
" <td>0.534646</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>94</th>\n",
" <td>54</td>\n",
" <td>46</td>\n",
" <td>63</td>\n",
" <td>37</td>\n",
" <td>0.643535</td>\n",
" <td>0.643535</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>95</th>\n",
" <td>49</td>\n",
" <td>51</td>\n",
" <td>70</td>\n",
" <td>30</td>\n",
" <td>0.613838</td>\n",
" <td>0.613838</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>96</th>\n",
" <td>45</td>\n",
" <td>55</td>\n",
" <td>56</td>\n",
" <td>44</td>\n",
" <td>0.247576</td>\n",
" <td>0.247576</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>97</th>\n",
" <td>42</td>\n",
" <td>58</td>\n",
" <td>61</td>\n",
" <td>39</td>\n",
" <td>0.356465</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>98</th>\n",
" <td>47</td>\n",
" <td>53</td>\n",
" <td>62</td>\n",
" <td>38</td>\n",
" <td>0.366364</td>\n",
" <td>0.366364</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>99</th>\n",
" <td>48</td>\n",
" <td>52</td>\n",
" <td>74</td>\n",
" <td>26</td>\n",
" <td>0.702929</td>\n",
" <td>0.702929</td>\n",
" <td>0.44</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>100 rows × 7 columns</p>\n",
"</div>"
],
"text/plain": [
" p0s0 p0s1 p1s0 p1s1 r_fixedpoint r_payoff actual\n",
"0 50 50 71 29 0.663333 0.663333 0.44\n",
"1 42 58 63 37 0.396061 0.405960 0.44\n",
"2 43 57 66 34 0.455455 0.455455 0.44\n",
"3 43 57 67 33 0.475253 0.475253 0.44\n",
"4 43 57 66 34 0.455455 0.455455 0.44\n",
"5 39 61 65 35 0.455455 0.465354 0.44\n",
"6 52 48 69 31 0.673232 0.673232 0.44\n",
"7 43 57 65 35 0.425758 0.435657 0.44\n",
"8 42 58 61 39 0.356465 0.366364 0.44\n",
"9 46 54 71 29 0.594040 0.594040 0.44\n",
"10 52 48 68 32 0.643535 0.643535 0.44\n",
"11 43 57 67 33 0.475253 0.475253 0.44\n",
"12 55 45 68 32 0.821717 0.821717 0.44\n",
"13 42 58 69 31 0.524747 0.524747 0.44\n",
"14 43 57 62 38 0.366364 0.376263 0.44\n",
"15 46 54 49 51 0.010000 0.010000 0.44\n",
"16 41 59 66 34 0.455455 0.475253 0.44\n",
"17 43 57 61 39 0.346566 0.356465 0.44\n",
"18 48 52 67 33 0.514848 0.514848 0.44\n",
"19 52 48 64 36 0.544545 0.544545 0.44\n",
"20 54 46 64 36 0.663333 0.663333 0.44\n",
"21 49 51 63 37 0.425758 0.425758 0.44\n",
"22 43 57 60 40 0.326768 0.336667 0.44\n",
"23 58 42 61 39 0.990000 0.990000 0.44\n",
"24 35 65 66 34 0.514848 0.514848 0.44\n",
"25 33 67 71 29 0.613838 0.633636 0.44\n",
"26 48 52 78 22 0.821717 0.821717 0.44\n",
"27 41 59 60 40 0.346566 0.356465 0.44\n",
"28 44 56 72 28 0.603939 0.603939 0.44\n",
"29 47 53 70 30 0.574242 0.574242 0.44\n",
".. ... ... ... ... ... ... ...\n",
"70 41 59 62 38 0.386162 0.396061 0.44\n",
"71 53 47 74 26 0.861313 0.861313 0.44\n",
"72 46 54 72 28 0.613838 0.613838 0.44\n",
"73 48 52 64 36 0.435657 0.435657 0.44\n",
"74 49 51 60 40 0.346566 0.346566 0.44\n",
"75 44 56 62 38 0.366364 0.376263 0.44\n",
"76 58 42 71 29 0.990000 0.990000 0.44\n",
"77 52 48 65 35 0.564343 0.564343 0.44\n",
"78 50 50 70 30 0.633636 0.633636 0.44\n",
"79 50 50 65 35 0.495051 0.495051 0.44\n",
"80 45 55 62 38 0.366364 0.366364 0.44\n",
"81 55 45 64 36 0.752424 0.752424 0.44\n",
"82 56 44 70 30 0.950404 0.950404 0.44\n",
"83 51 49 64 36 0.504949 0.504949 0.44\n",
"84 42 58 74 26 0.643535 0.643535 0.44\n",
"85 48 52 66 34 0.485152 0.485152 0.44\n",
"86 45 55 61 39 0.336667 0.346566 0.44\n",
"87 47 53 62 38 0.366364 0.366364 0.44\n",
"88 47 53 76 24 0.742525 0.742525 0.44\n",
"89 44 56 63 37 0.386162 0.396061 0.44\n",
"90 45 55 62 38 0.366364 0.366364 0.44\n",
"91 51 49 59 41 0.366364 0.366364 0.44\n",
"92 51 49 70 30 0.663333 0.663333 0.44\n",
"93 48 52 68 32 0.534646 0.534646 0.44\n",
"94 54 46 63 37 0.643535 0.643535 0.44\n",
"95 49 51 70 30 0.613838 0.613838 0.44\n",
"96 45 55 56 44 0.247576 0.247576 0.44\n",
"97 42 58 61 39 0.356465 0.366364 0.44\n",
"98 47 53 62 38 0.366364 0.366364 0.44\n",
"99 48 52 74 26 0.702929 0.702929 0.44\n",
"\n",
"[100 rows x 7 columns]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata = simulate_fits(game, matrix1, matrix2, 0.44, 1.0/0.150, 100, trials=100)\n",
"simdata"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 0.520293\n",
"std 0.185179\n",
"min 0.010000\n",
"25% 0.386162\n",
"50% 0.475253\n",
"75% 0.616313\n",
"max 0.990000\n",
"Name: r_fixedpoint, dtype: float64"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.r_fixedpoint.describe()"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"count 100.000000\n",
"mean 0.520590\n",
"std 0.188479\n",
"min 0.010000\n",
"25% 0.393586\n",
"50% 0.480202\n",
"75% 0.626212\n",
"max 0.990000\n",
"Name: r_payoff, dtype: float64"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"simdata.r_payoff.describe()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## (Tentative) conclusions\n",
"\n",
"* The payoff-based approach to estimating QRE is attractive and offers hope of fitting much richer models.\n",
"* Preliminary indications are that estimated QRE parameters $\\hat\\lambda$ obtained by using the payoff method are biased (in the direction of understating precision), so these should be used with care in small samples.\n",
"* At least in the generalized matching pennies game, the bias in $\\hat\\lambda$ does not seem to result in any bias in risk attitude estimates."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment