{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "990b6558-1145-4024-8492-882b5d1358c1",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "# Lösungen Statistical Test Methods"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "7fc345df-f487-44ed-a2d2-0162736cab85",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "skip"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy import stats\n",
    "import pandas as pd\n",
    "import seaborn as sb"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7958f96d-3762-40dd-9573-59936a406433",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "## Umfrage für nächste Aufgabe\n",
    "\n",
    "https://forms.gle/JVKq6FrSUE8kN7Jq6"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "dda1bf9e-6ab2-4794-832e-79cba819b9fa",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/jpeg": "[encoded data, 25124 characters]",
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAFyAQAAAADAX2ykAAADSElEQVR4Ae2bUWrkMAyGpc1AHxOYA8xRnJste6TeIDnKHKAweSwkaJFkJ1OmKHbAYR70PYS0ERrPr1qW5RQJShj/lFgDgNvbuD42ro+N62Pj+ti4Pjbn6IORyzqYBbGHBQGm9KyXZ+eMJx8fj03UJxDzEFuOKjRE/7qGsOc7JrpxPW3eTZ80Y6cOIHwCcGwBYLrOGO6XmWCS3zVz/FrvNn4fj80v+vCsbWegoZ0hZuWNX+xN3N7mfH3aGWBE1KX3ZXDnj8fGx2OT9GmJaGDTcOfQMuMtrrpElNLzap9L8p+L29sc1IcnLGInvhuC8GgI/95lcV60gI4fe9B/Nu7fplQfra9SdcyztgOE8SYTdkGC52feb9ylVP/a9px8iSesjDzthfRHLrLinik+oKH2eNy/zTF9ZK8L0H5jLK14OSZO0tLVCLRW0sf85+P+bUr10fyM4dFxwfzBiVr2ugs/aGYab/OPFF7q3+1tausT8zNPWJCtkVw4P2tqljveCUse9/y8R+14HfMvsaRh+iCiO09iaW1wzHWTpBObOeY/H/dvU6pPmpcgdzPI1ogG2SStXWe5kxa111c7lOpf214XV4D264Lh80oAk5wvLEgjNtx/vs6gd0Lt8bh/m1J9UnynD0Kpn6Hlgqp9AATiIPcNoNx5fHMo1b+2/VpfSUOjkfpZt0bSldQLp2uvr7KoHa9S/ym+HMFYJvMirJd06svtSl9/syjVv7Z9jO/av5Kdkh4oxKpKmlg+fzOpHa+j/vXA9xuJ7ojY64ZI3s/hFZobW8pR/7m4f5uj+khA+TJ2kqlTQMcOAPvpkk76j/rPxf3blOqj+XkjdrKkoEqrrn6i739zKNX/HPv0juQFaOCtL19iVpb8LNWXfL1zxpOPj2cHmbo6OZ8mLLcm167Vduf9qz3e7e8txZfPf2UbFM8XeBHW7bA8SHnc+5M7vFt8U//qiYZwvHF91X7x+xv6TgdgkAT9buP38di86LO9Xxf4/St5MYsP+fXtu1f7HV787+D2NqX6pPwsy/DWxtjqZ8nUfv6bS6n+te1jfCOxDRkPCbXnkc4MBV9/d6gdr1L/cYXNxf+/e4dS/d3exvWxcX1sXB8b18emtj7/AVBt6JR2+GEnAAAAAElFTkSuQmCC",
      "text/plain": [
       "<qrcode.image.pil.PilImage at 0x7f2d04619b20>"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import qrcode\n",
    "qrcode.make(\"https://forms.gle/JVKq6FrSUE8kN7Jq6\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b3645176-f2bc-42b9-b9f0-ed460adf55e6",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "### Aufgabe T-Test\n",
    "\n",
    "*6 Punkte - Programmieren*\n",
    "\n",
    "*6 Punkte - Schriftteil*\n",
    "\n",
    "Für diese Aufgabe ist extra ein Feld für den Schriftteil reserviert. **Erkläre** dort dein Vorgehen, die Nullhypothese, dein Ergebnis und wie der Nominallohn zu verstehen ist. **Interpretiere** dein Ergebnis und Stelle ein **Fazit** auf. Gebe auch alle verwendeten Quellen (samt link) korrekt an.\n",
    "Jupyter unterstütz die Markdown Syntax ein Guide hierfür ist unter [The Ultimate Markdown Guide](https://medium.com/analytics-vidhya/the-ultimate-markdown-guide-for-jupyter-notebook-d5e5abf728fd) zu finden.\n",
    "\n",
    "**!!Wird der Schriftteil nicht oder nur unzureichend ausgefüllt führt dies zu einer Bewertung von 0 Punkten für die gesamte Aufgabe!!**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0ab1d35e-f6a4-40e3-afca-4008077e0444",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "Dem Notebook mit beigelegt ist das Datenset `nominallohn_deutschland_2023-2024_nach_geschlecht.csv` (Quelle: [DESTASIS Nominallohnindex: Deutschland, Monate, Geschlecht](https://www-genesis.destatis.de/datenbank/online/statistic/62361/table/62361-0003)).\n",
    "\n",
    "Analysiere das Datenset, gehen dabei von der Nullhypothese aus das es keinen Signifikanten Unterschied in den Nominallöhnen zwischen den Geschlechtern gibt.\n",
    "\n",
    "Gehe dabei wie folgt vor:\n",
    "1. Stelle die Nullhypothese prüfbar auf.\n",
    "2. Importiere das Datenset und filtere angemessen (Kommentare helfen mir später bei der Korrektur diesen Schritt nachzuvollziehen)\n",
    "3. Berechne den von der Nullhypothese geforderten Populations Parameter $\\mu$.\n",
    "4. Bestimme das Signifikanzlevel $\\alpha$ unter der $H_0$ verworfen wird.\n",
    "5. Bestimme mittels t-test den p-wert zur Nullhypothese.\n",
    "6. Stelle dein Ergebnis dar."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ca2cad52-220e-40f7-9ba8-8d8c9a800314",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "## Nullhypothese\n",
    "\n",
    "$$H_0 = \\varnothing\\text{Nominallohn Männer} = \\varnothing\\text{Nominallohn Frauen}$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b013f02a-e4aa-4870-80c9-a9f61d1ae44a",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "dataset: pd.DataFrame = pd.read_csv('nominallohn_deutschland_2023-2024_nach_geschlecht.csv', delimiter=',')\n",
    "male = dataset.loc[dataset[\"Geschlecht\"] == \"männlich\"]\n",
    "female = dataset.loc[dataset[\"Geschlecht\"] == \"weiblich\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "9b7a1f0f-fb91-4159-8692-32606feed847",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "mu = male[\"Nominallohn\"].mean()\n",
    "alpha = 0.05"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "543c338d-53f7-410b-bfce-eb77832db104",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "        Fail to reject the null hypothesis;\n",
      "        there is no significant difference between the sample mean\n",
      "        and the hypothesized population mean.\n",
      "        \n",
      "P-Value: 0.95\n"
     ]
    }
   ],
   "source": [
    "t_stat, p_value = stats.ttest_1samp(female[\"Nominallohn\"], mu)\n",
    "\n",
    "if p_value < alpha:\n",
    "    print('''\n",
    "        Reject the null hypothesis;\n",
    "        there is a significant difference between the sample mean\n",
    "        and the hypothesized population mean.\n",
    "        '''\n",
    "         )\n",
    "else:\n",
    "    print('''\n",
    "        Fail to reject the null hypothesis;\n",
    "        there is no significant difference between the sample mean\n",
    "        and the hypothesized population mean.\n",
    "        '''\n",
    "         )\n",
    "\n",
    "print(f\"P-Value: {p_value:.2}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b42d406d-e79c-494c-9b50-7660785b8a58",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "slide"
    },
    "tags": []
   },
   "source": [
    "### Aufgabe\n",
    "\n",
    "*6 Punkte - Programmieren*\n",
    "\n",
    "*6 Punkte - Schriftteil*\n",
    "\n",
    "Für diese Aufgabe ist extra ein Feld für den Schriftteil reserviert. **Erkläre** dort dein Vorgehen, die Nullhypothese, dein Ergebnis und wie der Bruttoverdienst zu verstehen ist. **Interpretiere** dein Ergebnis und Stelle ein **Fazit** auf. Gebe auch alle verwendeten Quellen (samt link) korrekt an.\n",
    "Jupyter unterstütz die Markdown Syntax ein Guide hierfür ist unter [The Ultimate Markdown Guide](https://medium.com/analytics-vidhya/the-ultimate-markdown-guide-for-jupyter-notebook-d5e5abf728fd) zu finden.\n",
    "\n",
    "**!!Wird der Schriftteil nicht oder nur unzureichend ausgefüllt führt dies zu einer Bewertung von 0 Punkten für die gesamte Aufgabe!!**"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94f5f238-281b-4884-bf18-ffbac035f621",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "Analysiere das Datenset `bruttoverdiensterhebung_deutschland_april_22-23_nach_geschlecht.csv` (Quelle: [Destatis]( https://www-genesis.destatis.de/datenbank/online/statistic/62361/table/62361-0030))\n",
    "\n",
    "Gehe dabei von der Hypothese aus das einen keinen Bruttoeinkommensunterschied der Geschlechter in Deutschland für den Zeitraum 2022-2023 gibt.\n",
    "\n",
    "Gehe dabei wie folgt vor:\n",
    "1. Lies das Datenset ein und schaue dir die vorhandenen Werte an. Achte auf `Nan` Werte.\n",
    "2. Filter aus der Spalte \"Geschlecht\" die benötigten Werte.\n",
    "3. Führe einen Korrelationstest zwischen den Geschlechtern & dem Bruttoverdienst durch.\n",
    "4. Berechne den Bruttoeinkommensunterschied.\n",
    "5. Finde eine geeignete Darstellung für dein Ergebnis."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9d28b23e-868b-4dce-9efe-d9a509673812",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "source": [
    "## Nullhypothese\n",
    "\n",
    "$$H_0 = \\varnothing\\text{Bruttoeinkommen Männer} - \\varnothing\\text{Bruttoeinkommen Frauen} = 0$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "2bb73d80-edc5-4256-b52e-2095f52395e8",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "df: pd.DataFrame = pd.read_csv('bruttoverdiensterhebung_deutschland_april_22-23_nach_geschlecht.csv')\n",
    "df_cleaned: pd.DataFrame = df.dropna()\n",
    "df_cleaned = df_cleaned.drop(\n",
    "    df_cleaned[df_cleaned['Geschlecht'] == 'Insgesamt'].index\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "478dbd4a-91cb-4ebc-9baa-a554b65aa3ca",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# Pearson test\n",
    "f = lambda x: 1 if x=='männlich' else 0\n",
    "df_cleaned[\"Geschlecht numerisch\"] = df_cleaned[\"Geschlecht\"].apply(f)\n",
    "pearsoncorr = df_cleaned.corr(method='pearson', numeric_only=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "9377f08f-d9c7-4c03-97e7-8fdd8c3b8e56",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "[encoded data, 22020 characters]",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sb.heatmap(pearsoncorr, \n",
    "            xticklabels=pearsoncorr.columns,\n",
    "            yticklabels=pearsoncorr.columns,\n",
    "            cmap='RdBu_r',\n",
    "            annot=True,\n",
    "            linewidth=0.5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "e3bd5f36-390d-4be9-a009-b0ce555e497f",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "subslide"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "df_women = df_cleaned[df_cleaned['Geschlecht'] == 'weiblich']\n",
    "df_men = df_cleaned[df_cleaned['Geschlecht'] == 'männlich']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "f2d19be6-d402-48fe-b7cd-1518bb591200",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Differenz Bruttoeinkommen 313.25€\n"
     ]
    }
   ],
   "source": [
    "diff = abs(df_men['Verdienst'].mean() - df_women['Verdienst'].mean())\n",
    "print(f\"Differenz Bruttoeinkommen {diff:.2f}€\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "26415fd9-7150-4844-8187-fd382d14db3e",
   "metadata": {
    "editable": true,
    "slideshow": {
     "slide_type": "skip"
    },
    "tags": []
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
