{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Popularity hide and seek\n", "> \"Estimate latent presidential popularity across time with a Markov chain\"\n", "\n", "- toc: true\n", "- badges: true\n", "- comments: true\n", "- author: Alexandre Andorra, Rémi Louf\n", "- categories: [popularity, Macron, Hidden Markov models, polls]\n", "- image: images/hmm-popularity.png" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A few months ago, [I experimented with a Gaussian Process](https://alexandorra.github.io/pollsposition_blog/popularity/macron/gaussian%20processes/polls/2021/01/18/gp-popularity.html) to estimate the popularity of French presidents across time. The experiment was really positive, and helped me get familiar with the beauty of GPs. This time, I teamed up with [Rémi Louf](https://twitter.com/remilouf) on a [Markov Chain](https://en.wikipedia.org/wiki/Markov_chain) model to estimate the same process -- what is the true latent popularity, that we only observe through the noisy data that are polls?\n", "\n", "This was supposed to be a trial run before working on an electoral model for the coming regional elections in France -- it's always easier to start with 2 dimensions than 6, right? But the model turned out to be so good at smoothing and predicting popularity data that we thought it'd be a shame not to share it. And voilà!\n", "\n", "## Show me the data!\n", "\n", "The data are the same as in [my GP post](https://alexandorra.github.io/pollsposition_blog/popularity/macron/gaussian%20processes/polls/2021/01/18/gp-popularity.html), so we're not going to spend a lot of time explaining them. It's basically all the popularity opinion polls of French presidents since the term limits switched to 5 years (in 2002).\n", "\n", "Let's import those data, as well as the (fabulous) packages we'll need:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import datetime\n", "\n", "import arviz\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import pymc3 as pm\n", "import theano.tensor as aet\n", "from scipy.special import expit as logistic" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# hide\n", "RANDOM_SEED = 926\n", "np.random.seed(RANDOM_SEED)\n", "arviz.style.use(\"arviz-darkgrid\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = pd.read_csv(\n", " \"https://raw.githubusercontent.com/AlexAndorra/pollsposition_models/master/data/raw_popularity_presidents.csv\",\n", " header=0,\n", " index_col=0,\n", " parse_dates=True,\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The dataset contains 1083 polls between the years 2002 and 2021.\n", "There are 10 pollsters: BVA, Elabe, Harris, Ifop, Ipsos, Kantar, Odoxa, OpinionWay, Viavoice, YouGov\n", "\n" ] } ], "source": [ "# hide\n", "# restrict data to after the switch to 5-year term\n", "data = data.loc[data.index >= pd.to_datetime(\"2002-05-05\")]\n", "data[\"year\"] = data.index.year\n", "data[\"month\"] = data.index.month\n", "\n", "data[\"sondage\"] = data[\"sondage\"].replace(\"Yougov\", \"YouGov\")\n", "data[\"method\"] = data[\"method\"].replace(\"face-to-face&internet\", \"face to face\")\n", "\n", "# convert to proportions\n", "data[[\"approve_pr\", \"disapprove_pr\"]] = (\n", " data[[\"approve_pr\", \"disapprove_pr\"]].copy() / 100\n", ")\n", "data = data.rename(columns={\"approve_pr\": \"p_approve\", \"disapprove_pr\": \"p_disapprove\"})\n", "\n", "POLLSTERS = data[\"sondage\"].sort_values().unique()\n", "comment = f\"\"\"The dataset contains {len(data)} polls between the years {data[\"year\"].min()} and {data[\"year\"].max()}.\n", "There are {len(POLLSTERS)} pollsters: {', '.join(list(POLLSTERS))}\n", "\"\"\"\n", "print(comment)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The number of polls is homogeneous among months, except in the summer because, well, France:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1 100\n", "2 96\n", "3 100\n", "4 89\n", "5 91\n", "6 95\n", "7 68\n", "8 71\n", "9 94\n", "10 99\n", "11 98\n", "12 82\n", "Name: month, dtype: int64" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[\"month\"].value_counts().sort_index()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us look at simple stats on the pollsters:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
method | \n", "face to face | \n", "internet | \n", "phone | \n", "phone&internet | \n", "All | \n", "
---|---|---|---|---|---|
sondage | \n", "\n", " | \n", " | \n", " | \n", " | \n", " |
BVA | \n", "0 | \n", "101 | \n", "89 | \n", "0 | \n", "190 | \n", "
Elabe | \n", "0 | \n", "52 | \n", "0 | \n", "0 | \n", "52 | \n", "
Harris | \n", "0 | \n", "33 | \n", "0 | \n", "0 | \n", "33 | \n", "
Ifop | \n", "0 | \n", "29 | \n", "181 | \n", "38 | \n", "248 | \n", "
Ipsos | \n", "0 | \n", "40 | \n", "177 | \n", "0 | \n", "217 | \n", "
Kantar | \n", "208 | \n", "4 | \n", "0 | \n", "0 | \n", "212 | \n", "
Odoxa | \n", "0 | \n", "67 | \n", "0 | \n", "0 | \n", "67 | \n", "
OpinionWay | \n", "0 | \n", "12 | \n", "0 | \n", "0 | \n", "12 | \n", "
Viavoice | \n", "0 | \n", "20 | \n", "0 | \n", "0 | \n", "20 | \n", "
YouGov | \n", "0 | \n", "32 | \n", "0 | \n", "0 | \n", "32 | \n", "
All | \n", "208 | \n", "390 | \n", "447 | \n", "38 | \n", "1083 | \n", "
\n", " | year | \n", "month | \n", "p_approve | \n", "
---|---|---|---|
0 | \n", "2002 | \n", "5 | \n", "0.017078 | \n", "
1 | \n", "2002 | \n", "6 | \n", "0.030000 | \n", "
2 | \n", "2002 | \n", "7 | \n", "0.005774 | \n", "
3 | \n", "2002 | \n", "8 | \n", "0.045826 | \n", "
4 | \n", "2002 | \n", "9 | \n", "0.025166 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "
223 | \n", "2020 | \n", "12 | \n", "0.064627 | \n", "
224 | \n", "2021 | \n", "1 | \n", "0.042661 | \n", "
225 | \n", "2021 | \n", "2 | \n", "0.041748 | \n", "
226 | \n", "2021 | \n", "3 | \n", "0.042980 | \n", "
227 | \n", "2021 | \n", "4 | \n", "0.020000 | \n", "
228 rows × 3 columns
\n", "\n", " | field_date | \n", "president | \n", "sondage | \n", "samplesize | \n", "method | \n", "p_approve | \n", "p_disapprove | \n", "year | \n", "month | \n", "p_approve_mean | \n", "diff_approval | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "2002-05-15 | \n", "chirac2 | \n", "Ifop | \n", "924 | \n", "phone | \n", "0.51 | \n", "0.44 | \n", "2002 | \n", "5 | \n", "0.50 | \n", "0.01 | \n", "
1 | \n", "2002-05-20 | \n", "chirac2 | \n", "Kantar | \n", "972 | \n", "face to face | \n", "0.50 | \n", "0.48 | \n", "2002 | \n", "5 | \n", "0.50 | \n", "-0.00 | \n", "
2 | \n", "2002-05-23 | \n", "chirac2 | \n", "BVA | \n", "1054 | \n", "phone | \n", "0.52 | \n", "0.37 | \n", "2002 | \n", "5 | \n", "0.50 | \n", "0.02 | \n", "
3 | \n", "2002-05-26 | \n", "chirac2 | \n", "Ipsos | \n", "907 | \n", "phone | \n", "0.48 | \n", "0.48 | \n", "2002 | \n", "5 | \n", "0.50 | \n", "-0.02 | \n", "
4 | \n", "2002-06-16 | \n", "chirac2 | \n", "Ifop | \n", "974 | \n", "phone | \n", "0.49 | \n", "0.43 | \n", "2002 | \n", "6 | \n", "0.50 | \n", "-0.02 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1078 | \n", "2021-03-29 | \n", "macron | \n", "Kantar | \n", "1000 | \n", "internet | \n", "0.36 | \n", "0.58 | \n", "2021 | \n", "3 | \n", "0.38 | \n", "-0.02 | \n", "
1079 | \n", "2021-03-30 | \n", "macron | \n", "YouGov | \n", "1068 | \n", "internet | \n", "0.30 | \n", "0.61 | \n", "2021 | \n", "3 | \n", "0.38 | \n", "-0.08 | \n", "
1080 | \n", "2021-04-07 | \n", "macron | \n", "Elabe | \n", "1003 | \n", "internet | \n", "0.33 | \n", "0.63 | \n", "2021 | \n", "4 | \n", "0.35 | \n", "-0.02 | \n", "
1081 | \n", "2021-04-10 | \n", "macron | \n", "Ipsos | \n", "1002 | \n", "internet | \n", "0.37 | \n", "0.58 | \n", "2021 | \n", "4 | \n", "0.35 | \n", "0.02 | \n", "
1082 | \n", "2021-04-26 | \n", "macron | \n", "Kantar | \n", "1000 | \n", "internet | \n", "0.35 | \n", "0.58 | \n", "2021 | \n", "4 | \n", "0.35 | \n", "0.00 | \n", "
1083 rows × 11 columns
\n", "\n", " | field_date | \n", "president | \n", "sondage | \n", "samplesize | \n", "method | \n", "p_approve | \n", "p_disapprove | \n", "year | \n", "month | \n", "p_approve_mean | \n", "diff_approval | \n", "num_approve | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "2002-05-15 | \n", "chirac2 | \n", "Ifop | \n", "924 | \n", "phone | \n", "0.51 | \n", "0.44 | \n", "2002 | \n", "5 | \n", "0.502500 | \n", "7.500000e-03 | \n", "471 | \n", "
1 | \n", "2002-05-20 | \n", "chirac2 | \n", "Kantar | \n", "972 | \n", "face to face | \n", "0.50 | \n", "0.48 | \n", "2002 | \n", "5 | \n", "0.502500 | \n", "-2.500000e-03 | \n", "486 | \n", "
2 | \n", "2002-05-23 | \n", "chirac2 | \n", "BVA | \n", "1054 | \n", "phone | \n", "0.52 | \n", "0.37 | \n", "2002 | \n", "5 | \n", "0.502500 | \n", "1.750000e-02 | \n", "548 | \n", "
3 | \n", "2002-05-26 | \n", "chirac2 | \n", "Ipsos | \n", "907 | \n", "phone | \n", "0.48 | \n", "0.48 | \n", "2002 | \n", "5 | \n", "0.502500 | \n", "-2.250000e-02 | \n", "435 | \n", "
4 | \n", "2002-06-16 | \n", "chirac2 | \n", "Ifop | \n", "974 | \n", "phone | \n", "0.49 | \n", "0.43 | \n", "2002 | \n", "6 | \n", "0.505000 | \n", "-1.500000e-02 | \n", "477 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
1078 | \n", "2021-03-29 | \n", "macron | \n", "Kantar | \n", "1000 | \n", "internet | \n", "0.36 | \n", "0.58 | \n", "2021 | \n", "3 | \n", "0.375455 | \n", "-1.545455e-02 | \n", "360 | \n", "
1079 | \n", "2021-03-30 | \n", "macron | \n", "YouGov | \n", "1068 | \n", "internet | \n", "0.30 | \n", "0.61 | \n", "2021 | \n", "3 | \n", "0.375455 | \n", "-7.545455e-02 | \n", "320 | \n", "
1080 | \n", "2021-04-07 | \n", "macron | \n", "Elabe | \n", "1003 | \n", "internet | \n", "0.33 | \n", "0.63 | \n", "2021 | \n", "4 | \n", "0.350000 | \n", "-2.000000e-02 | \n", "330 | \n", "
1081 | \n", "2021-04-10 | \n", "macron | \n", "Ipsos | \n", "1002 | \n", "internet | \n", "0.37 | \n", "0.58 | \n", "2021 | \n", "4 | \n", "0.350000 | \n", "2.000000e-02 | \n", "370 | \n", "
1082 | \n", "2021-04-26 | \n", "macron | \n", "Kantar | \n", "1000 | \n", "internet | \n", "0.35 | \n", "0.58 | \n", "2021 | \n", "4 | \n", "0.350000 | \n", "5.551115e-17 | \n", "350 | \n", "
1083 rows × 12 columns
\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", "
---|---|---|---|---|---|---|---|---|---|
house_effect[0] | \n", "-0.10 | \n", "0.04 | \n", "-0.19 | \n", "-0.03 | \n", "0.01 | \n", "0.01 | \n", "23.23 | \n", "59.59 | \n", "1.15 | \n", "
house_effect[1] | \n", "0.38 | \n", "0.04 | \n", "0.30 | \n", "0.45 | \n", "0.01 | \n", "0.01 | \n", "22.39 | \n", "62.47 | \n", "1.15 | \n", "
house_effect[2] | \n", "-0.15 | \n", "0.04 | \n", "-0.23 | \n", "-0.08 | \n", "0.01 | \n", "0.01 | \n", "22.52 | \n", "64.04 | \n", "1.15 | \n", "
house_effect[3] | \n", "0.34 | \n", "0.04 | \n", "0.26 | \n", "0.42 | \n", "0.01 | \n", "0.01 | \n", "23.70 | \n", "63.04 | \n", "1.14 | \n", "
house_effect[4] | \n", "0.05 | \n", "0.04 | \n", "-0.03 | \n", "0.13 | \n", "0.01 | \n", "0.01 | \n", "24.94 | \n", "65.23 | \n", "1.14 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
month_effect[55] | \n", "-0.93 | \n", "0.04 | \n", "-1.02 | \n", "-0.85 | \n", "0.01 | \n", "0.01 | \n", "30.41 | \n", "93.90 | \n", "1.11 | \n", "
month_effect[56] | \n", "-0.96 | \n", "0.04 | \n", "-1.04 | \n", "-0.87 | \n", "0.01 | \n", "0.01 | \n", "26.41 | \n", "85.65 | \n", "1.12 | \n", "
month_effect[57] | \n", "-0.94 | \n", "0.04 | \n", "-1.02 | \n", "-0.85 | \n", "0.01 | \n", "0.01 | \n", "25.97 | \n", "81.38 | \n", "1.12 | \n", "
month_effect[58] | \n", "-0.78 | \n", "0.04 | \n", "-0.86 | \n", "-0.70 | \n", "0.01 | \n", "0.01 | \n", "25.49 | \n", "90.16 | \n", "1.13 | \n", "
month_effect[59] | \n", "-0.75 | \n", "0.04 | \n", "-0.83 | \n", "-0.66 | \n", "0.01 | \n", "0.01 | \n", "25.33 | \n", "86.35 | \n", "1.13 | \n", "
75 rows × 9 columns
\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", "
---|---|---|---|---|---|---|---|---|---|
house_effect[0] | \n", "-0.10 | \n", "0.04 | \n", "-0.17 | \n", "-0.03 | \n", "0.0 | \n", "0.0 | \n", "69.19 | \n", "126.68 | \n", "1.03 | \n", "
house_effect[1] | \n", "0.38 | \n", "0.04 | \n", "0.31 | \n", "0.45 | \n", "0.0 | \n", "0.0 | \n", "70.21 | \n", "134.31 | \n", "1.03 | \n", "
house_effect[2] | \n", "-0.15 | \n", "0.04 | \n", "-0.22 | \n", "-0.07 | \n", "0.0 | \n", "0.0 | \n", "71.80 | \n", "132.09 | \n", "1.03 | \n", "
house_effect[3] | \n", "0.34 | \n", "0.04 | \n", "0.27 | \n", "0.41 | \n", "0.0 | \n", "0.0 | \n", "74.23 | \n", "150.45 | \n", "1.03 | \n", "
house_effect[4] | \n", "0.05 | \n", "0.04 | \n", "-0.02 | \n", "0.12 | \n", "0.0 | \n", "0.0 | \n", "74.48 | \n", "152.07 | \n", "1.03 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
month_effect[56] | \n", "-0.96 | \n", "0.04 | \n", "-1.03 | \n", "-0.88 | \n", "0.0 | \n", "0.0 | \n", "85.24 | \n", "198.54 | \n", "1.03 | \n", "
month_effect[57] | \n", "-0.93 | \n", "0.04 | \n", "-1.01 | \n", "-0.85 | \n", "0.0 | \n", "0.0 | \n", "86.12 | \n", "189.24 | \n", "1.03 | \n", "
month_effect[58] | \n", "-0.79 | \n", "0.04 | \n", "-0.87 | \n", "-0.71 | \n", "0.0 | \n", "0.0 | \n", "85.96 | \n", "177.54 | \n", "1.03 | \n", "
month_effect[59] | \n", "-0.75 | \n", "0.04 | \n", "-0.83 | \n", "-0.67 | \n", "0.0 | \n", "0.0 | \n", "86.35 | \n", "206.63 | \n", "1.02 | \n", "
sigma_mu | \n", "0.10 | \n", "0.01 | \n", "0.08 | \n", "0.12 | \n", "0.0 | \n", "0.0 | \n", "4283.14 | \n", "4889.75 | \n", "1.00 | \n", "
76 rows × 9 columns
\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", "
---|---|---|---|---|---|---|---|---|---|
house_effect[0] | \n", "-0.09 | \n", "0.06 | \n", "-0.20 | \n", "0.01 | \n", "0.00 | \n", "0.00 | \n", "970.36 | \n", "2360.00 | \n", "1.0 | \n", "
house_effect[1] | \n", "0.36 | \n", "0.06 | \n", "0.25 | \n", "0.46 | \n", "0.00 | \n", "0.00 | \n", "972.49 | \n", "2209.77 | \n", "1.0 | \n", "
house_effect[2] | \n", "-0.11 | \n", "0.06 | \n", "-0.23 | \n", "0.02 | \n", "0.00 | \n", "0.00 | \n", "1397.60 | \n", "3077.42 | \n", "1.0 | \n", "
house_effect[3] | \n", "0.30 | \n", "0.07 | \n", "0.16 | \n", "0.44 | \n", "0.00 | \n", "0.00 | \n", "1598.99 | \n", "3445.40 | \n", "1.0 | \n", "
house_effect[4] | \n", "0.06 | \n", "0.07 | \n", "-0.09 | \n", "0.19 | \n", "0.00 | \n", "0.00 | \n", "1997.57 | \n", "4200.72 | \n", "1.0 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
month_effect[57] | \n", "-0.90 | \n", "0.08 | \n", "-1.05 | \n", "-0.75 | \n", "0.00 | \n", "0.00 | \n", "1449.45 | \n", "3172.23 | \n", "1.0 | \n", "
month_effect[58] | \n", "-0.85 | \n", "0.08 | \n", "-1.00 | \n", "-0.69 | \n", "0.00 | \n", "0.00 | \n", "1594.73 | \n", "3531.40 | \n", "1.0 | \n", "
month_effect[59] | \n", "-0.83 | \n", "0.09 | \n", "-1.00 | \n", "-0.65 | \n", "0.00 | \n", "0.00 | \n", "2052.19 | \n", "3857.49 | \n", "1.0 | \n", "
sigma_mu | \n", "0.08 | \n", "0.01 | \n", "0.05 | \n", "0.10 | \n", "0.00 | \n", "0.00 | \n", "2309.07 | \n", "3766.36 | \n", "1.0 | \n", "
theta_offset | \n", "18.93 | \n", "1.28 | \n", "16.53 | \n", "21.30 | \n", "0.01 | \n", "0.01 | \n", "7712.70 | \n", "5102.88 | \n", "1.0 | \n", "
77 rows × 9 columns
\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", "
---|---|---|---|---|---|---|---|---|---|
baseline | \n", "0.16 | \n", "0.08 | \n", "-0.00 | \n", "0.31 | \n", "0.0 | \n", "0.00 | \n", "1875.39 | \n", "2361.99 | \n", "1.01 | \n", "
president_effect[0] | \n", "-0.22 | \n", "0.06 | \n", "-0.32 | \n", "-0.11 | \n", "0.0 | \n", "0.00 | \n", "5477.76 | \n", "2964.37 | \n", "1.00 | \n", "
president_effect[1] | \n", "0.24 | \n", "0.06 | \n", "0.13 | \n", "0.35 | \n", "0.0 | \n", "0.00 | \n", "5901.82 | \n", "3281.21 | \n", "1.00 | \n", "
president_effect[2] | \n", "-0.02 | \n", "0.06 | \n", "-0.13 | \n", "0.08 | \n", "0.0 | \n", "0.00 | \n", "6010.84 | \n", "3175.73 | \n", "1.00 | \n", "
president_effect[3] | \n", "-0.01 | \n", "0.05 | \n", "-0.10 | \n", "0.08 | \n", "0.0 | \n", "0.00 | \n", "4991.87 | \n", "3454.38 | \n", "1.00 | \n", "
... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
month_president_effect[3,56] | \n", "-0.59 | \n", "0.39 | \n", "-1.27 | \n", "0.18 | \n", "0.0 | \n", "0.00 | \n", "6903.42 | \n", "2799.11 | \n", "1.00 | \n", "
month_president_effect[3,57] | \n", "-0.60 | \n", "0.40 | \n", "-1.36 | \n", "0.16 | \n", "0.0 | \n", "0.00 | \n", "7176.01 | \n", "2852.99 | \n", "1.00 | \n", "
month_president_effect[3,58] | \n", "-0.60 | \n", "0.42 | \n", "-1.40 | \n", "0.21 | \n", "0.0 | \n", "0.00 | \n", "7949.23 | \n", "2993.55 | \n", "1.00 | \n", "
month_president_effect[3,59] | \n", "-0.60 | \n", "0.44 | \n", "-1.41 | \n", "0.22 | \n", "0.0 | \n", "0.00 | \n", "8050.80 | \n", "3096.09 | \n", "1.00 | \n", "
theta_offset | \n", "143.78 | \n", "7.89 | \n", "128.92 | \n", "158.73 | \n", "0.1 | \n", "0.07 | \n", "5746.64 | \n", "2687.64 | \n", "1.00 | \n", "
322 rows × 9 columns
\n", "