{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "6a5f234f",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/ec2-user/anaconda3/envs/python3/lib/python3.10/site-packages/pandas/core/computation/expressions.py:21: UserWarning: Pandas requires version '2.8.0' or newer of 'numexpr' (version '2.7.3' currently installed).\n",
      "  from pandas.core.computation.check import NUMEXPR_INSTALLED\n",
      "Matplotlib is building the font cache; this may take a moment.\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import seaborn as sns\n",
    "import matplotlib.pyplot as plt\n",
    "import boto3 "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "e62f1239",
   "metadata": {},
   "outputs": [],
   "source": [
    "s3 = boto3.resource('s3')\n",
    "bucket_name = 'dev-cucumbers'\n",
    "bucket = s3.Bucket(bucket_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "4d13d74d",
   "metadata": {},
   "outputs": [],
   "source": [
    "path = 'eimpara/TikTok_analysis/Rock'\n",
    "table_names = []\n",
    "\n",
    "for obj in bucket.objects.filter(Prefix=path):\n",
    "    table_name = obj.key.split('/')[-1]\n",
    "    if len(table_name) > 0:\n",
    "        table_names.append(table_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "0a2e9805",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "158"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Expected 160 files: 8 chunks * 20 parallel processes\n",
    "\n",
    "len(table_names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "2ea55271",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for table_name in table_names:\n",
    "#     print(f'{path}/{table_name}')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "27640424",
   "metadata": {},
   "outputs": [],
   "source": [
    "merged_df = pd.DataFrame() \n",
    "\n",
    "for table_name in table_names:\n",
    "    obj = bucket.Object(f'{path}/{table_name}')\n",
    "    table_data = pd.read_csv(obj.get()['Body'])\n",
    "    merged_df = pd.concat([merged_df,table_data])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "7dd7c99b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(10964, 3)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merged_df.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "878333c9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "10964"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Rock should have 11099 unique ISRCs (here 135 missing)\n",
    "\n",
    "merged_df['ISRC'].nunique()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "6f13af77",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>ISRC</th>\n",
       "      <th>exog_coeff</th>\n",
       "      <th>pvalue</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>GB7QY1500175</td>\n",
       "      <td>-0.124743</td>\n",
       "      <td>0.525689</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>GB7QY1500176</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>GB7QY1500177</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>GB7QY1500178</td>\n",
       "      <td>-1.368953</td>\n",
       "      <td>0.762925</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>GB7QY1500179</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>65</th>\n",
       "      <td>USSTT2000022</td>\n",
       "      <td>-2.040606</td>\n",
       "      <td>0.039832</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>66</th>\n",
       "      <td>USSTT2000079</td>\n",
       "      <td>0.041343</td>\n",
       "      <td>0.794029</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>67</th>\n",
       "      <td>USSTT2000080</td>\n",
       "      <td>0.007592</td>\n",
       "      <td>0.657965</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>68</th>\n",
       "      <td>USSTT2000082</td>\n",
       "      <td>-0.052641</td>\n",
       "      <td>0.185200</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>69</th>\n",
       "      <td>USSTT2000083</td>\n",
       "      <td>0.021082</td>\n",
       "      <td>0.548669</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>10964 rows × 3 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "            ISRC  exog_coeff    pvalue\n",
       "0   GB7QY1500175   -0.124743  0.525689\n",
       "1   GB7QY1500176    0.000000  1.000000\n",
       "2   GB7QY1500177    0.000000       NaN\n",
       "3   GB7QY1500178   -1.368953  0.762925\n",
       "4   GB7QY1500179    0.000000  1.000000\n",
       "..           ...         ...       ...\n",
       "65  USSTT2000022   -2.040606  0.039832\n",
       "66  USSTT2000079    0.041343  0.794029\n",
       "67  USSTT2000080    0.007592  0.657965\n",
       "68  USSTT2000082   -0.052641  0.185200\n",
       "69  USSTT2000083    0.021082  0.548669\n",
       "\n",
       "[10964 rows x 3 columns]"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "merged_df"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "9b2230a5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "Index: 10964 entries, 0 to 69\n",
      "Data columns (total 3 columns):\n",
      " #   Column      Non-Null Count  Dtype  \n",
      "---  ------      --------------  -----  \n",
      " 0   ISRC        10964 non-null  object \n",
      " 1   exog_coeff  10964 non-null  float64\n",
      " 2   pvalue      9167 non-null   float64\n",
      "dtypes: float64(2), object(1)\n",
      "memory usage: 342.6+ KB\n"
     ]
    }
   ],
   "source": [
    "merged_df.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "0c9187d7",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NaAs in coeff:  0\n",
      "NaAs in pvalue:  1797\n"
     ]
    }
   ],
   "source": [
    "print('NaAs in coeff: ', merged_df['exog_coeff'].isnull().sum())\n",
    "print('NaAs in pvalue: ', merged_df['pvalue'].isnull().sum())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "3d039dfa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "9167"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "no_nans_pval = len(merged_df) - (merged_df['pvalue'].isnull().sum())\n",
    "no_nans_pval"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "e446e739",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "367"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len_pval_sig = len(merged_df[~(merged_df['pvalue'].isnull()) & (merged_df['pvalue'] <= 0.05)])\n",
    "len_pval_sig"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "f83b6bc6",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Proportion of significant p-values:  0.04\n"
     ]
    }
   ],
   "source": [
    "print('Proportion of significant p-values: ', round(len_pval_sig/no_nans_pval, 3))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "e08b78a1",
   "metadata": {},
   "outputs": [],
   "source": [
    "subset = merged_df[~merged_df['pvalue'].isnull()]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "4c6ddfa0",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "count    9167.000000\n",
       "mean       -0.000793\n",
       "std         1.855221\n",
       "min       -48.396587\n",
       "25%        -0.002340\n",
       "50%         0.000000\n",
       "75%         0.002260\n",
       "max        38.173711\n",
       "Name: exog_coeff, dtype: float64"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "subset['exog_coeff'].describe()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "555376a6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<seaborn.axisgrid.FacetGrid at 0x7f317743fa30>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 3000x4500 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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GjVKo0ePVklJiev57777riZMmKBJkyZpy5Yt+v3vf6+1a9dq8uTJp7nlAFoSm3IA0VkN6lmzZmnSpEmaPHmyBgwYoNmzZyszM1Nz5851Pf+DDz7Queeeq/vvv19ZWVm67LLLdM8992jdunWnueUAWhILngDRWQvq6upqFRcXKycnJ+x4Tk6O1qxZ4/qeESNGaO/evSosLJQxRl988YVeffVVjRkzJurnVFVVqbKyMuwBwFsilhC11A7Ai6wF9f79++X3+5Wenh52PD09XWVlZa7vGTFihJYsWaLx48crMTFRGRkZOuecc/Tss89G/ZyCggKlpaWFHpmZmS36fQBoPjblAKKzPpjM5/OFPTfGRBxzbN26Vffff78efvhhFRcX680339SuXbuUm5sb9evn5+eroqIi9NizZ0+Lth9A87EpBxBdgq0P7tKli+Lj4yOq5/Ly8ogq21FQUKCRI0fqxz/+sSTpoosu0llnnaVRo0bp5z//ubp37x7xnqSkJCUlJbX8NwCgxdBHDURnraJOTExUdna2ioqKwo4XFRVpxIgRru85evSo4uLCmxwfHy+Jf4EDbRkLngDRWb31nZeXp5deekkLFizQtm3bNG3aNJWUlIRuZefn52vChAmh88eOHavly5dr7ty52rlzp9577z3df//9GjZsmHr06GHr2wDQTCx4AkRn7da3JI0fP14HDhzQzJkzVVpaqoEDB6qwsFB9+vSRJJWWlobNqZ44caIOHTqk5557Tg888IDOOeccXXXVVXr88cdtfQsAWkDkWt922gF4kc/E2D3jyspKpaWlqaKiQqmpqbabA0DSig17NW3ZptDzoX066tUfuneBAbHG+qhvAKjfJx1T1QNwEgQ1AOvoowaiI6gBWMemHEB0BDUA65wKOiEuuNhRjA2dARpEUAOwzqmg404ENbe+gVoENQDrzInhY/Enlg9mwROgFkENwDqnok6gogYiENQArHP6pOPjnT5qm60BvIWgBmBdIBA+mIyKGqhFUAOwzrn1He+M+rbYFsBrCGoA1tVOz4oLew6AoAbgASY0PSv8OQCCGoAHONOzqKiBSAQ1AOvq91ET1EAtghqAdU4ws+AJEImgBmCdqT/qm4oaCCGoAVgXmkcd79z6ttkawFsIagDWhTbl8DnzqElqwEFQA7CudtQ3FTVQH0ENwLqIlcnoowZCCGoA1jnBTB81EImgBmBdaHoWC54AEQhqANaFbn37TjynpAZCCGoA1tWvqCmogVoENQDrahc8Cf7KrW+gFkENwDoTsc2lzdYA3kJQA7AuYnoWC54AIQQ1AOsChgVPgGgIagDWsSkHEB1BDcC6AAueAFE1Kah37drV0u0AEMOcoHY25WDUN1CrSUHdt29fXXnllfrtb3+rY8eOtXSbAMSYyFvf3P4GHE0K6k2bNmnIkCF64IEHlJGRoXvuuUf/+Mc/WrptAGJE/VHfEoueAI4mBfXAgQM1a9Ys7du3TwsXLlRZWZkuu+wyXXjhhZo1a5b++c9/tnQ7AZzBTL1R3xK3vwFHswaTJSQk6KabbtLvfvc7Pf7449qxY4emT5+uXr16acKECSotLW2pdgI4g9VfQlQSM6mBE5oV1OvWrdOUKVPUvXt3zZo1S9OnT9eOHTv017/+Vfv27dO4ceNaqp0AzmDOrW8qaiBSQlPeNGvWLC1cuFDbt2/XDTfcoMWLF+uGG25Q3Il/DWdlZWnevHnq379/izYWwJmptqKmjxqor0lBPXfuXN1111268847lZGR4XpO7969NX/+/GY1DkBsqD/qW6KiBhxNCuqioiL17t07VEE7jDHas2ePevfurcTERN1xxx0t0kgAZzbjUlGz6AkQ1KQ+6m984xvav39/xPGDBw8qKyur2Y0CEFvoowaia1JQR1uI4PDhw0pOTm5WgwDEHtc+6oCt1gDeckq3vvPy8iRJPp9PDz/8sNq3bx96ze/36+9//7sGDx7cog0EcOajjxqI7pSCesOGDZKCFfXmzZuVmJgYei0xMVGDBg3S9OnTW7aFAM549be5rHsMiHWnFNR/+9vfJEl33nmnnn76aaWmprZKowDEFieUfb46t75tNQbwmCaN+l64cGFLtwNADHOK5zifT3G+4OAyKmogqNFBffPNN2vRokVKTU3VzTff3OC5y5cvb3bDAMSOQCiog2EdMIYFT4ATGh3UaWlpodtSaWlprdYgALHH1NmPOrgntaGiBk5odFDXvd3NrW8ALam2jzr4CB6z2CDAQ5o0j/rrr7/W0aNHQ893796t2bNn66233mqxhgGIHYGwPupgUgdIakBSE4N63LhxWrx4sSTpq6++0rBhw/TUU09p3Lhxmjt3bos2EMCZz6mo4+JqK2rufANBTQrq9evXa9SoUZKkV199VRkZGdq9e7cWL16sZ555pkUbCODM54SyT3UqapIakNTEoD569Kg6dOggSXrrrbd08803Ky4uTpdeeql2797dog0EcOYzcuujJqgBqYlB3bdvX7322mvas2ePVq5cqZycHElSeXk5i6AAOGWBE+t61+2jJqaBoCYF9cMPP6zp06fr3HPP1SWXXKLhw4dLClbXQ4YMadEGAjjzBcKmZwWPRdv8B4g1TVqZ7Nvf/rYuu+wylZaWatCgQaHjV199tW666aYWaxyA2GDqLXgiMT0LcDQpqCUpIyNDGRkZYceGDRvW7AYBiD111/r2MZgMCNOkoD5y5Ih+9atf6S9/+YvKy8sVCIRvHLtz584WaRyA2FB3wRPn1neA/agBSU0M6smTJ2vVqlW6/fbb1b1797Adb07VnDlz9Otf/1qlpaW68MILNXv27NDULzdVVVWaOXOmfvvb36qsrEy9evXSjBkzdNdddzW5DQDscmrnOJ+PUd9APU0K6jfeeEN//vOfNXLkyGZ9+LJlyzR16lTNmTNHI0eO1Lx58zR69Ght3bpVvXv3dn3Prbfeqi+++ELz589X3759VV5erpqamma1A4Bd9TflkFjwBHA0Kag7duyoTp06NfvDZ82apUmTJmny5MmSpNmzZ2vlypWaO3euCgoKIs5/8803tWrVKu3cuTP0+eeee26z2wHArshNOaioAUeTpmf97Gc/08MPPxy23vepqq6uVnFxcWgOtiMnJ0dr1qxxfc8f//hHDR06VE888YR69uypfv36afr06fr666+jfk5VVZUqKyvDHgC8xW1TDmIaCGpSRf3UU09px44dSk9P17nnnqt27dqFvb5+/fqTfo39+/fL7/crPT097Hh6errKyspc37Nz5069++67Sk5O1ooVK7R//35NmTJFBw8e1IIFC1zfU1BQoMcee6yR3xkAG9wWPKGiBoKaFNQ33nhjizWg/kA0Y0zUwWmBQEA+n09LliwJ7Yk9a9Ysffvb39bzzz+vlJSUiPfk5+crLy8v9LyyslKZmZkt1n4AzceCJ0B0TQrqRx55pNkf3KVLF8XHx0dUz+Xl5RFVtqN79+7q2bNnKKQlacCAATLGaO/evTr//PMj3pOUlKSkpKRmtxdA6wltysGCJ0CEJvVRS8HtLV966SXl5+fr4MGDkoK3vPft29eo9ycmJio7O1tFRUVhx4uK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hRf00EMPhc7hujbNsmXLNHXqVM2YMUMbNmzQqFGjNHr06LDpmWjYqlWrdO+99+qDDz5QUVGRampqlJOToyNHjoTOeeKJJzRr1iw999xzWrt2rTIyMnTttdfq0KFT3wUwFq1du1YvvviiLrroorDjrX5dDc5YhYWFpn///mbLli1GktmwYUPYa3FxcWbfvn2hY0uXLjVJSUmmoqLCQmvbpieeeMJkZWWFnnNdm2bYsGEmNzc37Fj//v3Ngw8+aKlFbV95ebmRZFatWmWMMSYQCJiMjAzzq1/9KnTOsWPHTFpamnnhhRdsNbPNOHTokDn//PNNUVGRufzyy82PfvQjY8zpua5U1GeoL774Qnfffbf++7//W+3bt494/f3339fAgQPDqu3rrrtOVVVVKi4uPp1NbdMqKirUqVOn0HOu66lztrytv4VtQ1ve4uScLX2dv5+7du1SWVlZ2HVOSkrS5ZdfznVuhHvvvVdjxozRNddcE3b8dFxX67tnoeUZYzRx4kTl5uZq6NCh+uyzzyLOcdsytGPHjkpMTIy6zSjC7dixQ88++6yeeuqp0DGu66lrypa3aJgxRnl5ebrssss0cOBASQpdS7frvHv37tPexrbklVde0fr167V27dqI107HdaWibkMeffRR+Xy+Bh/r1q3Ts88+q8rKSuXn5zf49dy2+TQn2Wb0TNTY61rX559/ruuvv17f+c53NHny5LDXuK5Nc6pb3iK6++67Tx9++KGWLl0a8RrX+dTs2bNHP/rRj/Tb3/5WycnJUc9rzetKRd2G3Hffffrud7/b4Dnnnnuufv7zn+uDDz6IWH926NCh+v73v6//+q//UkZGhv7+97+Hvf7ll1/q+PHjUbcZPVM19ro6Pv/8c1155ZUaPny4XnzxxbDzuK6nrilb3iK6f//3f9cf//hHrV69Wr169Qodz8jIkBSsALt37x46znVuWHFxscrLy5WdnR065vf7tXr1aj333HOhkfWtel1bpKcbnrJ7926zefPm0GPlypVGknn11VfNnj17jDG1g54+//zz0PteeeUVBj2dxN69e835559vvvvd75qampqI17muTTNs2DDzwx/+MOzYgAEDGEx2CgKBgLn33ntNjx49zMcff+z6ekZGhnn88cdDx6qqqhhMdhKVlZVhP083b95shg4dan7wgx+YzZs3n5brSlDHgF27dkWM+q6pqTEDBw40V199tVm/fr353//9X9OrVy9z33332Wuox+3bt8/07dvXXHXVVWbv3r2mtLQ09HBwXZvmlVdeMe3atTPz5883W7duNVOnTjVnnXWW+eyzz2w3rc344Q9/aNLS0szbb78d9nfz6NGjoXN+9atfmbS0NLN8+XKzefNm873vfc90797dVFZWWmx521N31LcxrX9dCeoY4BbUxgQr7zFjxpiUlBTTqVMnc99995ljx47ZaWQbsHDhQiPJ9VEX17Vpnn/+edOnTx+TmJhoLr744tC0IjROtL+bCxcuDJ0TCATMI488YjIyMkxSUpL513/9V7N582Z7jW6j6gd1a19XtrkEAMDDGPUNAICHEdQAAHgYQQ0AgIcR1AAAeBhBDQCAhxHUAAB4GEENAICHEdQAAHgYQQ2gzXj00UeVnp4un8+n1157Leox4EzCymQA2oRt27bpm9/8plasWKFLL71UHTt21M6dOyOO1d81Dmjr2OYSQJuwY8cOSdK4ceNC+/y6HQPONNz6BtoIY4yeeOIJnXfeeUpJSdGgQYP06quvyhija665Rtdff72cG2RfffWVevfurRkzZkiSAoGAZs6cqV69eikpKUmDBw/Wm2++Gfb116xZo8GDBys5OVlDhw7Va6+9Jp/Pp40bNzaqfVu2bNGYMWOUmpqqDh06aNSoUaEgbczn79u3T+PHj1fHjh3VuXNnjRs3Tp999pmk4O3tsWPHSpLi4uLk8/lcjwFnpBbb3gNAq3rooYdM//79zZtvvml27NhhFi5caJKSkszbb79t9u7dazp27Ghmz55tjDFm/PjxZujQoaa6utoYY8ysWbNMamqqWbp0qfnoo4/MT37yE9OuXbvQvsWVlZWmU6dO5gc/+IHZsmWLKSwsNP369XPddc3N3r17TadOnczNN99s1q5da7Zv324WLFhgPvroo0Z9/pEjR8z5559v7rrrLvPhhx+arVu3mttuu81ccMEFpqqqyhw6dCi0e5mzfaPbMeBMRFADbcDhw4dNcnKyWbNmTdjxSZMmme9973vGGGN+97vfmaSkJJOfn2/at29vtm/fHjqvR48e5he/+EXYe7/1rW+ZKVOmGGOMmTt3runcubP5+uuvQ6//53/+Z6ODOj8/32RlZYX+YVDfyT5//vz55oILLjCBQCD0elVVlUlJSTErV640xhizYsWKiC1F3Y4BZxr6qIE2YOvWrTp27JiuvfbasOPV1dUaMmSIJOk73/mOVqxYoYKCAs2dO1f9+vWTJFVWVurzzz/XyJEjw947cuRIbdq0SZK0fft2XXTRRUpOTg69PmzYsEa3b+PGjRo1apTatWsX8VpjPr+4uFiffvqpOnToEHbOsWPHQrfPgVhFUANtQCAQkCT9+c9/Vs+ePcNec0Y5Hz16VMXFxYqPj9cnn3wS8TXq9+EaY0LH6v6+7uuNlZKSctJzGvr8QCCg7OxsLVmyJOJ9Xbt2bXQ7gDMRg8mANuCb3/ymkpKSVFJSor59+4Y9MjMzJUkPPPCA4uLi9MYbb+iZZ57RX//6V0lSamqqevTooXfffTfsa65Zs0YDBgyQJPXv318ffvihqqqqQq+vW7eu0e276KKL9M477+j48eMRrzXm8y+++GJ98skn6tatW8T3l5aW1uh2AGcku3feATTWjBkzTOfOnc2iRYvMp59+atavX2+ee+45s2jRIvOnP/3JJCYmmuLiYmOMMf/xH/9hevXqZQ4ePGiMMeY3v/mNSU1NNa+88or56KOPzE9/+tOwwVwVFRWmU6dOZsKECWbr1q3mzTffNP379zeSzMaNG0/atv3795vOnTuHBpN9/PHHZvHixaHBZCf7fGcw2RVXXGFWr15tdu7cad5++21z//33mz179hhj6KNG7OJvONBGBAIB8/TTT5sLLrjAtGvXznTt2tVcd9115u233zbp6enml7/8Zejc48ePm2HDhplbb73VGGOM3+83jz32mOnZs6dp166dGTRokHnjjTfCvv57771nLrroIpOYmGiys7PNyy+/bCSFwvZkNm3aZHJyckz79u1Nhw4dzKhRo8yOHTsa/fmlpaVmwoQJpkuXLiYpKcmcd9555u677zYVFRXGGIIasYuVyQC4WrJkie68805VVFQ0qg8aQOtgMBkASdLixYt13nnnqWfPntq0aZN++tOf6tZbbyWkAcsYTAZAklRWVqYf/OAHGjBggKZNm6bvfOc7evHFFyVJubm5Ovvss10fubm5llsOnNm49Q3gpMrLy1VZWen6Wmpqqrp163aaWwTEDoIaAAAP49Y3AAAeRlADAOBhBDUAAB5GUAMA4GEENQAAHkZQAwDgYQQ1AAAe9v8BZcSIWHYYaugAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 500x500 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(30, 45))\n",
    "\n",
    "sns.displot(subset, x='exog_coeff', kind='kde')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e2fa33ab",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "conda_python3",
   "language": "python",
   "name": "conda_python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.10.14"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
