"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "with sns.axes_style('darkgrid'):\n",
+ " fig, ax = plt.subplots(figsize=(7, 5), nrows=1, ncols=1)\n",
+ "\n",
+ " sns.barplot(data=df, x=\"Age_class\", y=\"Dead\", hue=\"Smoker\", ax=ax, ci=95, palette=(\"blue\", \"red\"), order=tuple(age_classes)) # Note: in recent versions of seaborn, we should rather use errorbar=('ci', 95).\n",
+ "\n",
+ " ax.yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:.0%}'.format(y)))\n",
+ "\n",
+ " plt.tight_layout()\n",
+ " plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "Redo the statistical tests"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Ttest_indResult(statistic=0.013780528783028018, pvalue=0.9890122465905076)\n",
+ "Ttest_indResult(statistic=1.783075769977916, pvalue=0.07588466008529735)\n",
+ "Ttest_indResult(statistic=2.4009857289248324, pvalue=0.01677328896330688)\n",
+ "Ttest_indResult(statistic=0.03927297913991199, pvalue=0.9687782291030265)\n"
+ ]
+ }
+ ],
+ "source": [
+ "df_smoker = df[df[\"Smoker\"]]\n",
+ "df_nonsmoker = df[~df[\"Smoker\"]]\n",
+ "\n",
+ "for age_class in age_classes:\n",
+ " df_smoker_age_class = df_smoker[df_smoker[\"Age_class\"] == age_class]\n",
+ " df_nonsmoker_age_class = df_nonsmoker[df_nonsmoker[\"Age_class\"] == age_class]\n",
+ " print(ttest_ind(df_smoker_age_class[\"Dead\"], df_nonsmoker_age_class[\"Dead\"], equal_var=False))"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "**Conclusion**: when inspecting by age class, the conclusion is reversed, i.e. within each age class, the mortality rate is higher among smokers. \n",
+ "\n",
+ "Note that this increase of mortality rate is not significant for the youngest and oldest age classes ($p\\gg0.05$). This is intuitive: tobacco-related health conditions take many years to develop, therefore they do not significantly impact the mortality rate of young people. On the other hand, the elderly suffer from many possible health threats that are unrelated to their smoking status, which tend to erase disparities between smokers and non-smokers. \n",
+ "\n",
+ "For the other two age classes (35-54 and 55-64), the increases of mortality rates are respectively weakly significant ($p=0.076$) and significant ($p=0.017$). In particular, this last class comprises aging people for which a lifetime of smoking may is likely to have had the time to trigger tobacco-related conditions."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "### Why is it seemingly contradictory with the age-agnostic analysis of question 1?\n",
+ "\n",
+ "In this study, $Age$ is a typical *confounding* variable. In simple terms, $Age$ conditions the distributions of the $Smoker$ variable. In the figure below, we report the percentage of smokers per age class."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 89,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "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r7zyim699VaNGzdOubm52rdvX1gGBAAApzpjwNva2oL3Pn/33Xd17bXXBj8WCATsnQwAAHTojD8DnzBhgu644w716tVLF110kYYPHy5J2rdvn+Li4sIyIAAAONUZA37fffcpOTlZX375pX74wx/K4XBI+uqR+aOPPhqWAQEAwKnO+mtkV1111SnbBg4caMswAAAgNNwXFQAAAxFwAAAMRMABAMbasWOb5swp1I4d2yI9StiFdCtVAAA6o5deWq09ez6T3+/T1VcPj/Q4YcUjcACAsXw+f7u3FxICDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgWwL+BdffKE777xTP/7xjzVhwgStWrVKktTY2CiPx6OxY8fK4/HoyJEjkqTt27crLS1NGRkZ2rdvnySpqalJmZmZsizLrjEBADCSbQGPiopSfn6+Xn31Vb344otavXq1Pv30U5WWlio5OVkbNmxQcnKySktLJUkrV65USUmJ8vLyVF5eLklaunSpsrKy5HA47BoTAAAjuew6sdvtltvtliTFxcVp0KBBqqur08aNG1VWViZJSk9P15133qmHHnpILpdLfr9fPp9PLpdL+/fvV11dnUaMGGHXiACA09iVMTHSI4TspCtKcjh08otDRs39/36//p8+h20B/0cHDx7U7t27NXToUNXX1wfD7na71dDQIEnKyspSUVGRYmNjtXDhQi1YsEAzZsw443nj4mLlckXZPj/OrmfPrrad22fbmSHZu3awF2tnru9i7WwP+LFjx5STk6PZs2crLi6uw/0GDx6sNWvWSJJqa2vldrtlWZZyc3PlcrmUn5+v3r17tzumufmErbMjdI2NxyM9Ar4l1s5crJ25zmXtkpK6n3a7rc9Cb2lpUU5OjtLS0jR27FhJUmJiorxeryTJ6/UqISGh3TGWZWnZsmWaPn26lixZouzsbE2aNCl42R0AANgYcMuyVFhYqEGDBsnj8QS3p6amqrKyUpJUWVmp0aNHtzuuoqJCKSkpio+Pl9/vl9PplNPplM/HhVQAAL5m2yX07du3q6qqSldccYUmT54sScrLy9O0adOUm5urtWvXql+/fiouLg4e4/P5VFFRoRUrVkiSPB6PcnJyFB0drUWLFtk1KgAAxrEt4MOHD9dHH3102o99/Tvh39SlS5d2l8qHDx+u6upqW+YDAMBk3IkNAAADEXAAAAxEwAEAMBABBwDAQAQcAAADEXAAAAxEwAEAMBABBwDAQAQcAAADEXAAAAxEwAEAMBABBwDAQAQcAAADEXAAAAxEwAEAMBABBwDAQAQcAAADEXAAAAxEwAEAxor9xtsLCQEHABgrJdCmS9ralBJoi/QoYeeK9AAAAHxbV1iWrghYkR4jIngEDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCDbAl5QUKDk5GRNnDgxuK2xsVEej0djx46Vx+PRkSNHJEnbt29XWlqaMjIytG/fPklSU1OTMjMzZVmWXSMCAGAs2wI+ZcoULV++vN220tJSJScna8OGDUpOTlZpaakkaeXKlSopKVFeXp7Ky8slSUuXLlVWVpYcDoddIwIAYCzbAn7NNdcoPj6+3baNGzcqPT1dkpSenq6amhpJksvlkt/vl8/nk8vl0v79+1VXV6cRI0bYNR4AAEZzhfOT1dfXy+12S5LcbrcaGhokSVlZWSoqKlJsbKwWLlyoBQsWaMaMGWc9X1xcrFyuKFtnRmh69uxq27l9tp0Zkr1rB3uxdub6LtYurAHvyODBg7VmzRpJUm1trdxutyzLUm5urlwul/Lz89W7d+9TjmtuPhHuUdGBxsbjkR4B3xJrZy7WzlznsnZJSd1Puz2sz0JPTEyU1+uVJHm9XiUkJLT7uGVZWrZsmaZPn64lS5YoOztbkyZNUllZWTjHBACg0wtrwFNTU1VZWSlJqqys1OjRo9t9vKKiQikpKYqPj5ff75fT6ZTT6ZTPx0VUAAD+kW2X0PPy8rR161YdPnxYN954o7KzszVt2jTl5uZq7dq16tevn4qLi4P7+3w+VVRUaMWKFZIkj8ejnJwcRUdHa9GiRXaNCQCAkWwL+NNPP33a7atWrTrt9i5durS7VD58+HBVV1fbMhsAAKbjTmwAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABiIgAMAYCACDgCAgQg4AAAGIuAAABgoIgF/4403NG7cOI0ZM0alpaWSpIULFyotLU2zZs0K7ldZWalVq1ZFYkQAADq1sAc8EAho7ty5Wr58uV5++WWtX79eH374od577z1VV1crEAjoo48+kt/vV0VFhW6//fZwjwgAQKfnCvcn3Llzpy655BINGDBAkjRhwgRt3LhRLS0tsixLJ06ckMvl0vLly3XnnXcqOjo63CMCANDphT3gdXV16tu3b/D9Pn36aOfOnRo7dqzS09OVnJys7t276/3339cDDzxwxnMlJXUP+fNuX/jzbz0zIqzoL5GeAN/C29lvR3oEfEspb2yO9AgIQdgDblnWKdscDoemTp2qqVOnSpIKCwuVk5Ojl156SW+99Za+973vafr06eEeFQCATivsPwPv27ev/va3vwXfr6urk9vtDr6/a9cuSdKll16qyspKFRcX65NPPtHevXvDPSoAAJ1W2AN+5ZVXau/evTpw4IBOnjypl19+WampqcGPFxcXKycnR62trQoEAl8N6XTK7/eHe1QAADqtsF9Cd7lcKioq0r333qtAIKCMjAxdfvnlkqSamhpdeeWV6tOnjyRp2LBhSktL0xVXXKHvf//74R4VAIBOy2Gd7ofS+E4VFBToz3/+sxITE7V+/XpJ0u7du/XYY4/pxIkTioqK0uOPP64hQ4accuxvfvMbbdy4UU6nU4mJiZo/f37wf3Ak6fPPP9eECRP0wAMPKDMzM2xf04XgxIkT+tnPfqaTJ08qEAho3LhxysnJUUlJidasWaOEhARJUl5enlJSUk45/mz7sXb2Sk1NVbdu3eR0OhUVFaV169aFvHaSVFZWpueff14ul0spKSnt7lHB2oVPU1OTHnnkEX388cdyOBx64okn9NZbb4W8juczAh4GtbW16tq1qx5++OFgwO+55x7dddddSklJ0ebNm7V8+XKVlZWdcmxzc7Pi4uIkSc8995w+/fRTzZ07N/jx7OxsORwODR06lP+QfMcsy9Lx48fVrVs3tbS06Pbbb1dhYaHefPNNde3a9azf75KSkjPux9rZKzU1VWvXrg3+R146+5p8bcuWLXr22WdVWlqqmJgY1dfXKzExMfhx1i58Hn74YQ0fPly33HKLTp48Kb/fr1WrVp11HUtKSnTxxRdrypQpYZw2vMJ+Cf1CdM011+jgwYPttjkcDh07dkySdPTo0XZP5PtHX8dbknw+nxwOR/D9mpoa9e/fX127drVhajgcDnXr1k2S1NraqtbW1nbf/38Ga9e5lZeXa9q0aYqJiZGkdvFm7cKnublZtbW1evLJJyVJMTExwTUB90KPmNmzZ+upp55SSkqKFixYoLy8vA73feaZZ5SSkqLq6mrNmDFDknT8+HH99re/PevvyuOfEwgENHnyZF133XW67rrrNHToUEnS7373O6WlpamgoEBHjhzp8PjT7cfahU9mZqamTJmiF198MbgtlLXbu3evtm3bpltuuUV33HGHdu7cKYm1C7cDBw4oISFBBQUFSk9PV2FhoY4fPy4p9L+D5zMCHiHl5eUqKCjQ5s2bVVBQoMLCwg73nTlzpjZv3qy0tDQ9//zzkr66PHTXXXcFHyHCHlFRUaqqqtLmzZu1c+dOffzxx7rtttv0xz/+UVVVVXK73cFHB9/U0X6sXXiUl5eroqJCv/3tb/W73/1OtbW1Ia9dIBBQU1OT1qxZo1mzZik3N1eWZbF2Ydba2qpdu3bptttuU2Vlpbp06aLS0tIO1/Gjjz7S5MmTNXnyZL3wwgtavHhx8P3Dhw9H+KuxgYWwOHDggDVhwoTg+1dffbXV1tZmWZZltbW1WcOGDbMsy7Ly8/OtSZMmWffee+8p5zh48GDwHLfddps1atQoa9SoUdYPfvAD65prrrHKysrC8JVcuEpKSqzly5e32/aP63qmtfvH/Vi78Fu8ePE5rd0999xjbdmyJbjv6NGjrfr6etYuzLxerzVq1Kjg+7W1tdbUqVPb7fPN/7Z+bfHixdbvf/9722eMJH4GHiFut1tbt27VyJEjtWXLFl166aWSpPnz57fbb+/evcGPbdq0SYMGDZIkrV69OrjP10/MueOOO8Iy+4WioaFBLpdLPXr0kN/v1zvvvKOpU6fK6/UGn7NQU1MT/DXIb65dR/uxdvY7fvy42traFBcXp+PHj+vtt9/W9OnTQ167m266SVu2bNHIkSO1Z88etbS0qFevXqxdmCUlJalv37767LPPNGjQIL377ru67LLLOlzHCw0BD4O8vDxt3bpVhw8f1o033qjs7Gz96le/0hNPPKHW1lbFxsa2e2b5P1q0aJH27Nkjh8Ohiy++WHPmzAnz9Bcur9er/Px8BQIBWZal8ePHa9SoUXrooYf04YcfSpIuvvjiDtdu4cKFIe2H7159fb3uv/9+SV9dDp84caJuvPHGkNcuIyNDs2fP1sSJExUdHa0nn3zyO3sCI87No48+qgcffFAtLS08jP64AAAEP0lEQVQaMGCA5s+fr3nz5vF3S/waGQAARuJJbAAAGIiAAwBgIAIOAICBCDgAAAYi4AAAGIiAAwBgIAIOnIf++Mc/6nvf+57++te/2v65Dh48qIkTJ9r+eQC0R8CB89D69ev1gx/8QK+88kqkRwFgE+7EBpxnjh07ph07dui5557Tfffdp+zsbLW1tWnu3Lmqra1V//791dbWpoyMDI0fP17vv/++nnzySR0/fly9evXS/PnzO3x523379umxxx5TQ0ODoqKiVFxcLKfz/x4HHDx4ULNmzZLP55P01V20rr76anm9Xs2cOVPNzc0KBAJ6/PHHNWzYMBUWFur999+Xw+FQRkaG7r777nB8i4DzAgEHzjM1NTW64YYbNHDgQPXs2VMffPCBDhw4oEOHDqm6ulr19fX6yU9+ooyMDLW0tGjevHlaunSpEhIS9Morr+iZZ5455d7gX3vwwQc1bdo0jRkzRidOnFBbW5vq6+uDH09MTNTKlSsVGxurvXv3Ki8vT+vWrdP69et1/fXX67777lMgEJDP59Pu3btVV1en9evXS5KamprC8v0BzhcEHDjPvPzyy7rrrrskST/5yU+0fv16tba2avz48XI6nUpKStLIkSMlSXv27NHHH38sj8cjSWpra1NSUtJpz9vc3Ky6ujqNGTNGkhQbG3vKPq2trZo7d64+/PBDOZ1O7d27V5J05ZVXavbs2WptbdVNN92kwYMHa8CAATpw4IB+9atfKSUlRddff/13/a0AzmsEHDiPHD58WFu2bNEnn3wih8OhQCAgh8Ohm2666bT7W5alyy+/XC+++OJ38vn/+7//W71791ZVVZXa2to0ZMgQSdI111yj559/Xps3b9asWbOUmZmp9PR0VVVV6a233tLq1av16quvdvjIH8CpeBIbcB55/fXXlZ6erj/96U/atGmTNm/erP79+6tXr17asGGD2tra9Pe//11bt26VJA0cOFANDQ167733JEktLS365JNPTnvuuLg49e3bVzU1NZKkkydPBn/W/bWjR48qKSlJTqdTVVVVCgQCkqRDhw4pMTFR//7v/66MjAx98MEHamhokGVZGjdunGbMmKFdu3bZ9W0Bzks8AgfOIy+//LKmTp3abtvYsWP117/+VX369NHEiRN16aWXasiQIerevbtiYmK0ePFizZs3T0ePHlUgENBdd93V4esrP/XUUyoqKlJxcbGio6NVXFzc7mU2b7/9dmVnZ+u1117TyJEj1bVrV0nS1q1b9V//9V9yuVzq2rWrFixYIK/Xq4KCArW1tUn66mV3AYSOlxMFLhDHjh1Tt27ddPjwYd1yyy0qLy/v8OfdADo/HoEDF4hf/OIXampqUktLi6ZPn068AcPxCBzAKebMmaMdO3a02/bzn/9cGRkZEZoIwDcRcAAADMSz0AEAMBABBwDAQAQcAAADEXAAAAz0/wH4ekCKZwl23AAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ "
"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "with sns.axes_style('darkgrid'):\n",
+ " fig, ax = plt.subplots(figsize=(7, 5), nrows=1, ncols=1)\n",
+ "\n",
+ " sns.barplot(data=df, x=\"Age_class\", y=\"Smoker\", ax=ax, ci=95, order=tuple(age_classes)) # Note: in recent versions of seaborn, we should rather use errorbar=('ci', 95).\n",
+ "\n",
+ " ax.yaxis.set_major_formatter(FuncFormatter(lambda y, _: '{:.0%}'.format(y)))\n",
+ "\n",
+ " plt.tight_layout()\n",
+ " plt.show()"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We see that smokers are underrepresented among the elderly compared to the other three age classes (probably because many long-time smokers quit when they grow old and start developing tobacco-related health conditions). Therefore, in the overall analysis of question 1, $Age$ acted as a proxy for the absence of smoking habit. Since the mean mortality rate is higher among the elderly (irrespective of the cause -- after all, they may simply die of old age), this creates a spurious negative correlation between $Smoker$ and $Dead$ (non-smokers are more likely older, and thus more likely to have a high mortality rate). "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "## 3. Mortality rates among smokers vs. non-smokers by age using logistic regression"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "metadata": {},
+ "source": [
+ "We perform a logistic regression for the model $Dead \\sim Age$"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 70,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stdout",
+ "output_type": "stream",
+ "text": [
+ "Optimization terminated successfully.\n",
+ " Current function value: 0.629619\n",
+ " Iterations 5\n",
+ "Optimization terminated successfully.\n",
+ " Current function value: 0.633082\n",
+ " Iterations 4\n",
+ "Optimization terminated successfully.\n",
+ " Current function value: 0.687904\n",
+ " Iterations 3\n"
+ ]
+ }
+ ],
+ "source": [
+ "import statsmodels.api as sm\n",
+ "\n",
+ "log_reg = sm.Logit(df[\"Dead\"], df[[\"Age\", \"Smoker\"]].astype(int)).fit()\n",
+ "\n",
+ "log_reg_smoker = sm.Logit(df_smoker[\"Dead\"], df_smoker[\"Age\"]).fit()\n",
+ "log_reg_nonsmoker = sm.Logit(df_nonsmoker[\"Dead\"], df_nonsmoker[\"Age\"]).fit()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 71,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "