{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b9802fc2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Imports\n",
    "\n",
    "from IPython.display import display, Markdown\n",
    "from scipy.stats import chi2_contingency\n",
    "from scipy.stats import t as t_test\n",
    "import numpy as np\n",
    "t_value = t_test.isf\n",
    "\n",
    "def _display_table(data_array, row_names=None, col_names=None):\n",
    "    _row_num = len(data_array)\n",
    "    _col_num = len(data_array[0])\n",
    "    _rows = []\n",
    "    for i in range(_row_num):\n",
    "        row = f'| {row_names[i]} |'\n",
    "        for j in range(_col_num):\n",
    "            row += f' {data_array[i][j]:.1f} |'\n",
    "        row += f' {sum(data_array[i]):.0f} |'\n",
    "        _rows.append(row)\n",
    "    _total_row = '| **Total** |'\n",
    "    _col_tots = 0\n",
    "    for i in range(_col_num):\n",
    "        col_tot = 0\n",
    "        for j in range(_row_num):\n",
    "            col_tot += data_array[j][i]\n",
    "        _col_tots += col_tot\n",
    "        _total_row += f' **{col_tot:.0f}** |'\n",
    "    _total_row += f' **{_col_tots:.0f}** |'\n",
    "    display(Markdown(\n",
    "    rf\"\"\"\n",
    "| | {' | '.join(col_names + ['Total'])} |\n",
    "{'|-'*(len(row_names) + 2)} |\n",
    "{'\\n'.join(_rows)}\n",
    "{_total_row}\n",
    "\"\"\"\n",
    "))\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2af7f22b",
   "metadata": {},
   "source": [
    "|                    | **\\|----** | **Kategoriske data** |            **----\\|** | **Numerisk data** |     **----\\|** |\n",
    "|:------------------:|:----------:|:--------------------:|----------------------:|:-----------------:|---------------:|\n",
    "|     **Outcome**    |  **Binær** |    **Kategorisk**    | **Ordnet kategorisk** |    **Diskret**    | **Kontinuert** |\n",
    "| Antal fødsler      |            |                      |                       |         x         |                |\n",
    "| Hårfarve           |            |           x          |                       |                   |                |\n",
    "| Blodtryk           |            |                      |                       |                   |        x       |\n",
    "| Køn                |      x     |                      |                       |                   |                |\n",
    "| Kønsidentitet      |            |           x          |                       |                   |                |\n",
    "| Socialt klassetrin |            |                      |           x           |                   |                |\n",
    "| BMI                |            |                      |          (x)          |                   |        x       |\n",
    "| Karakter           |            |                      |          (x)          |         x         |                |\n",
    "| Syg/ikke syg       |      x     |                      |                       |                   |                |"
   ]
  },
  {
   "attachments": {
    "image-2.png": {
     "image/png": "[encoded data, 212820 characters]"
    },
    "image-3.png": {
     "image/png": "[encoded data, 153796 characters]"
    },
    "image-4.png": {
     "image/png": "[encoded data, 150012 characters]"
    },
    "image-5.png": {
     "image/png": "[encoded data, 97952 characters]"
    },
    "image.png": {
     "image/png": "[encoded data, 177436 characters]"
    }
   },
   "cell_type": "markdown",
   "id": "a86c45f1",
   "metadata": {},
   "source": [
    "![image.png](attachment:image.png)\n",
    "\n",
    "![image-2.png](attachment:image-2.png)\n",
    "\n",
    "![image-3.png](attachment:image-3.png)\n",
    "\n",
    "![image-4.png](attachment:image-4.png)\n",
    "\n",
    "![image-5.png](attachment:image-5.png)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6801bdc7-2b6a-4478-a15e-02a30f5f0f89",
   "metadata": {},
   "source": [
    "# Sensitivitet, specificitet og positiv/negativ prædiktiv værdi"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "080e79be-8277-4cd5-8ff0-83a68f7e01d1",
   "metadata": {},
   "source": [
    "$$\n",
    "Sensitivitet = P(Positiv\\ test | syg) = \\frac{antal\\ sandt\\ positive}{antal\\ sandt\\ positive + antal\\ falsk\\ negative}\n",
    "$$\n",
    "\n",
    "$$\n",
    "Specificitet = P(Negativ\\ test|rask) = \\frac{antal\\ sandt\\ negative}{antal\\ sandt\\ negative + antal\\ falsk\\ positive}\n",
    "$$\n",
    "\n",
    "$$\n",
    "PPV = P(Syg|positiv\\ test) = \\frac{antal\\ sande\\ positive}{antal\\ sande\\ positive + antal\\ falske\\ positive}\n",
    "$$\n",
    "\n",
    "$$\n",
    "NPV = P(Rask|negativ\\ test) = \\frac{antal\\ sande\\ negative}{antal\\ sande\\ negative + antal\\ falske\\ negative}\n",
    "$$"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ed85ecf",
   "metadata": {},
   "source": [
    "## Tabel ud fra positive og negative\n",
    "\n",
    "|              | Syg              | Ikke syg         | I alt                             |\n",
    "| :----------- | :--------------: | :--------------: | --------------------------------: |\n",
    "| Test positiv | _sandt positive_ | _falsk positive_ | Total positive |\n",
    "| Test negativ | _falsk negative_ | _sandt negative_ | Total negative |\n",
    "| I alt        | Total syge | Total raske | **n** |"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1774cb7c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "### Data\n",
       "\n",
       "|              | Syg              | Ikke syg         | I alt                             |\n",
       "| :----------- | :--------------: | :--------------: | --------------------------------: |\n",
       "| Test positiv | 117 | 796 | 913                    |\n",
       "| Test negativ | 20 | 3142 | 3162                    |\n",
       "| I alt        | 137       | 3938  | **4075** |\n",
       "\n",
       "\n",
       "### Nøgleværdier\n",
       "\n",
       "|                  |                    |\n",
       "| ---------------- | ------------------ |\n",
       "| **Sensitivitet** | 85.4% |\n",
       "| **Specificitet** | 79.8% |\n",
       "| **PPV**          | 12.8%          |\n",
       "| **NPV**          | 99.4%          |\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sandt_positive = 117\n",
    "sandt_negative = 3142\n",
    "\n",
    "falsk_positive = 796\n",
    "falsk_negative = 20\n",
    "\n",
    "sensitivitet = sandt_positive / (sandt_positive + falsk_negative)\n",
    "specificitet = sandt_negative / (sandt_negative + falsk_positive)\n",
    "ppv = sandt_positive / (sandt_positive + falsk_positive)\n",
    "npv = sandt_negative / (sandt_negative + falsk_negative)\n",
    "\n",
    "sum_syge = sandt_positive + falsk_negative\n",
    "sum_ikke_syge = falsk_positive + sandt_negative\n",
    "sum_positive = sandt_positive + falsk_positive\n",
    "sum_negative = sandt_negative + falsk_negative\n",
    "\n",
    "display(Markdown(\n",
    "    rf\"\"\"\n",
    "### Data\n",
    "    \n",
    "|              | Syg              | Ikke syg         | I alt                             |\n",
    "| :----------- | :--------------: | :--------------: | --------------------------------: |\n",
    "| Test positiv | {sandt_positive} | {falsk_positive} | {sum_positive}                    |\n",
    "| Test negativ | {falsk_negative} | {sandt_negative} | {sum_negative}                    |\n",
    "| I alt        | {sum_syge}       | {sum_ikke_syge}  | **{sum_positive + sum_negative}** |\n",
    "\n",
    "\n",
    "### Nøgleværdier\n",
    "\n",
    "|                  |                    |\n",
    "| ---------------- | ------------------ |\n",
    "| **Sensitivitet** | {sensitivitet:.1%} |\n",
    "| **Specificitet** | {specificitet:.1%} |\n",
    "| **PPV**          | {ppv:.1%}          |\n",
    "| **NPV**          | {npv:.1%}          |\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a3586b61",
   "metadata": {},
   "source": [
    "## Værdier ud fra sensitivitet, specificitet og prævalens"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7d9c104e",
   "metadata": {},
   "source": [
    "$$\n",
    "PPV = \\frac{sensitivitet \\cdot prævalens}{sensitivitet \\cdot prævalens + (1-specificitet) \\cdot (1-prævalens)}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 156,
   "id": "e31c1ac9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "$$\n",
       "PPV = \\frac{sensitivitet \\cdot prævalens}{sensitivitet \\cdot prævalens + (1-specificitet) \\cdot (1-prævalens)}\n",
       "$$\n",
       "$$\n",
       "= \\frac{0.854 \\cdot 0.05}{0.854 \\cdot 0.05 + (1-0.798) \\cdot (1-0.05)}\n",
       "$$\n",
       "$$\n",
       "= 18.20%\n",
       "\\%\n",
       "$$\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "sensitivitet = 0.854\n",
    "specificitet = 0.798\n",
    "prævalens = 0.05\n",
    "\n",
    "ppv = sensitivitet * prævalens / (sensitivitet * prævalens + (1-specificitet) * (1-prævalens))\n",
    "\n",
    "display(Markdown(\n",
    "    rf\"\"\"\n",
    "$$\n",
    "PPV = \\frac{{sensitivitet \\cdot prævalens}}{{sensitivitet \\cdot prævalens + (1-specificitet) \\cdot (1-prævalens)}}\n",
    "$$\n",
    "$$\n",
    "= \\frac{{{sensitivitet} \\cdot {prævalens}}}{{{sensitivitet} \\cdot {prævalens} + (1-{specificitet}) \\cdot (1-{prævalens})}}\n",
    "$$\n",
    "$$\n",
    "= {ppv:.2%}\n",
    "\\%\n",
    "$$\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ca5604a5",
   "metadata": {},
   "source": [
    "# Nøglebegreber til datasæt"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9b70817a",
   "metadata": {},
   "source": [
    "| Symbol | Begreb | Betydning |\n",
    "| ------ | ------ | --------- |\n",
    "| $n$    | Stikprøvestørrelse | Hvor stor stikprøve har undersøgelsen brugt? |\n",
    "| $\\bar{x}$ | Stikprøvegennemsnit | Det udregnede gennemsnit for stikprøven |\n",
    "| $SD$ | Stikprøvens spredning | Den udregnede spredning for stikprøven |\n",
    "| $s.e.$ | _standard error_ | Mål for, hvor præcist stikprøvens gennemsnit estimerer den sande middelværdi |"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5516d767",
   "metadata": {},
   "source": [
    "# Konfidensinterval ($95\\%\\ CI$)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "af44cf60",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "$$\n",
       "\\alpha = 0.05 \\\\\n",
       "\\bar{x} = 3437 \\\\\n",
       "se = 8.04\n",
       "$$\n",
       "\n",
       "$$\n",
       "95\\%\\ CI = \n",
       "[\\bar{x} \\pm t' \\cdot se]\n",
       "\\\\\n",
       "= [3437 \\pm 1.96 \\cdot 8.04]\n",
       "\\\\\n",
       "= [3421.2 ; 3452.8]\n",
       "$$\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "alpha = 0.05\n",
    "_mean = 3437\n",
    "_standard_error = 8.04\n",
    "_t = t_value(alpha/2, 3977)\n",
    "_t_se = _t * _standard_error\n",
    "\n",
    "display(Markdown(\n",
    "    rf\"\"\"\n",
    "$$\n",
    "\\alpha = {alpha} \\\\\n",
    "\\bar{{x}} = {_mean} \\\\\n",
    "se = {_standard_error}\n",
    "$$\n",
    "\n",
    "$$\n",
    "95\\%\\ CI = \n",
    "[\\bar{{x}} \\pm t' \\cdot se]\n",
    "\\\\\n",
    "= [{_mean} \\pm {_t:.2f} \\cdot {_standard_error}]\n",
    "\\\\\n",
    "= [{(_mean - _t_se):.1f} ; {(_mean + _t_se):.1f}]\n",
    "$$\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "33dcc0df",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "e7725049",
   "metadata": {},
   "source": [
    "# Nøgletests og undersøgelser"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c990bc63",
   "metadata": {},
   "source": [
    "I alle 4 scenarier/modeller ovenfor indgår fælles elementer, fx _frihedsgrader_ og _standardafvigelse_ (se), men formlerne for beregning af disse - samt fortolkning - er forskellig og afhænger af det specifikke scenarie.\n",
    "\n",
    "### Én numerisk stikprøve\n",
    "\n",
    "- Deskriptiv statistik for en numerisk stikprøve\n",
    "- Konfidensinterval for middelværdien, $\\mu$\n",
    "- Prædiktionsinterval\n",
    "\n",
    "### To numeriske stikprøver\n",
    "\n",
    "- Uparret t-test for $H_0$: $\\mu_1 = \\mu_2$\n",
    "- Konfidensinterval for differensen mellem middelværdierne\n",
    "\n",
    "### Én binær stikprøve\n",
    "\n",
    "- Konfidensinterval for en proportion (sandsynlighedsparameter)\n",
    "\n",
    "### To binære stikprøver\n",
    "\n",
    "- $\\Chi^2$-test for $H_0$: $\\pi_1 = \\pi_0$ eller (mere generelt) ingen sammenhæng mellem række- og søjleinddeling\n",
    "- Større tabeller: $\\Chi^2$-test i $r \\times s$-tabel for $H_0$: ingen sammenhæng mellem række- og søjleinddeling"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d01d3ce5",
   "metadata": {},
   "source": [
    "# Bayes Formel og Positiv Prædiktiv Værdi"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "[encoded data, 22200 characters]"
    }
   },
   "cell_type": "markdown",
   "id": "6be05a11",
   "metadata": {},
   "source": [
    "Generelt siger Bayes formel noget om sandsynligheden for, at to forbundne hændelser indtræffer. Sandsynligheden for, at $A$ sker, benævnes $P(A)$; ligeledes er $P(B)$ sandsynligheden for, at $B$ indtræffer.\n",
    "\n",
    "Vil man så finde sandsynligheden for, at $A$ indtræffer givet at $B$ også gør (sandsynligheden for $A$, givet $B$), kan følgende skrives:\n",
    "\n",
    "$$\n",
    "P(A|B) = \\frac{P(A \\cap B)}{B}\n",
    "$$\n",
    "\n",
    "![image.png](attachment:image.png)\n",
    "\n",
    "Bayes formel går så ud på at finde sandsynligheden for $A$, givet $B$, ved følgende:\n",
    "\n",
    "$$\n",
    "P(A|B) = \\frac{P(B|A) \\cdot P(A)}{P(B|A) \\cdot P(A) + P(B|A^C) \\cdot P(A^C)}\n",
    "$$\n",
    "\n",
    "## Anvendelser\n",
    "\n",
    "- Genetik: monogenetiske, autosomale sygdomme (dominant eller recessivt nedarvet)\n",
    "- Diagnostik: positiv prædiktiv værdi (PPV) på baggrund af et screeningredskabs sensitivitet og specificitet, samt på prævalensen i den population, der screenes\n",
    "- Ved screening for en sygdom (f. eks. COVID-19) er det velkendt, at man kan teste falsk positiv. Det er derfor interessant at vide, i fald man tester positiv, hvor sandsynligt det er, at man faktisk er syg\n",
    "- Denne sandsynlighed kaldes den _positive prædiktive værdi_ (PPV), og afhænger dels af dden risikovurdering, man har før man screener (altså prævalensen af sygdommen i populationen, der screenes), men den afhænger også af selve screeningsredskabets egenskaber, dvs. dets evne til korrekt at identificere de syge (_sensitiviteten_) og dets evne til korrekt at identificere de raske (_specificiteten_)\n",
    "\n",
    "## PPV\n",
    "\n",
    "$$\n",
    "PPV = \\frac{sensitivitet \\cdot prævalens}{sensitivitet \\cdot prævalens + (1-specificitet) \\cdot (1-prævalens)}\n",
    "$$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "efb233fe",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9705882352941176\n"
     ]
    }
   ],
   "source": [
    "def ppv(sensitivitet=None, specificitet=None, prævalens=None):\n",
    "    _ppv = sensitivitet * prævalens / (sensitivitet*prævalens + (1-specificitet)*(1-prævalens))\n",
    "    return _ppv\n",
    "\n",
    "print(ppv(0.99, 0.98, 0.4))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "dbffc3e7",
   "metadata": {},
   "source": [
    "# Én numerisk stikprøve"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ff88815f",
   "metadata": {},
   "source": [
    "## Prædiktionsinterval\n",
    "\n",
    "\n",
    "$$\n",
    "95\\% - PI = \\bar{x} \\pm 1.96 \\cdot SD\n",
    "$$\n",
    "\n",
    "- $95\\%$ af alle observationer i populationen ligger indenfor prædiktionsintervallets grænser\n",
    "- I klinikken: et (passende) prædiktionsinterval angiver de målinger, der ikke anses for unormale eller ekstreme\n",
    "- F. eks. normal vs. unormal fødselsvægt\n",
    "\n",
    "**Forudsætninger**: Uafhængige, normalfordelte observationer med samme måleusikkerhed"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "db92032b",
   "metadata": {},
   "source": [
    "## Konfidensinterval for middelværdien $\\mu$\n",
    "\n",
    "_Obs: der findes her en **eksakt** og **approksimativ** formel. Den eksakte må altid benyttes, hvorimod den approksimative kan bruges, når_ $n \\ge 60$.\n",
    "\n",
    "### Beregning:\n",
    "\n",
    "Et eksakt $95\\%$-konfidensinterval for middelværdien $\\mu$ er givet ved\n",
    "\n",
    "$$\n",
    "\\left[\\bar{x} \\pm t' \\cdot se\\right]\n",
    "\\\\\n",
    "= \\bar{x} - t' \\cdot se\\ ;\\ \\bar{x} + t' \\cdot se\n",
    "$$\n",
    "\n",
    "- $\\bar{x}$: stikprøvegennemsnit\n",
    "- $t'$: det tosidede $5\\%$-punkt i t-fordelingen med $n-1$ frihedsgrader\n",
    "- $se$: standard error, $se = se(\\bar{x}) = \\frac{SD}{\\sqrt{n}}$\n",
    "\n",
    "Et approksimativt interval er givet ved:\n",
    "\n",
    "$$\n",
    "\\left[\\bar{x} \\pm 1.96 \\cdot se\\right]\n",
    "\\\\\n",
    "= \\bar{x} - 1.96 \\cdot se\\ ;\\ \\bar{x} + 1.96 \\cdot se\n",
    "$$\n",
    "\n",
    "### Fortolkning:\n",
    "\n",
    "- Hvis vi trak 100 nye stikprøver og beregnede tilsvarende 100 konfidensintervaller for hver af disse, ville vi forvente, at 95 af dem indeholdt den sande middelværddi i populationen\n",
    "- Med andre ord er der $95\\%$ sandsynlighed for, at et konfidensinterval omfavner den sande værdi $\\mu$ for middelværdien i hele populationen\n",
    "\n",
    "**Forudsætninger**: uafhængige, normalfordelte observationer med samme måleusikkerhed"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "267293e3",
   "metadata": {},
   "source": [
    "# To numeriske stikprøver"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "71d136f2",
   "metadata": {},
   "source": [
    "## Det uparrede t-test\n",
    "\n",
    "Nulhypotese: $H_0$: $\\mu_1 = \\mu_2$, dvs. ingen forskel i middelværdien af udfaldet i de to grupper.\n",
    "\n",
    "Teststørrelse:\n",
    "\n",
    "$$\n",
    "SD_{fælles} = \\sqrt{\\frac{(n_1-1)\\cdot SD_1^2 + (n_2-1)\\cdot SD_2^2}{n_1 + n_2 - 2}}\n",
    "$$\n",
    "\n",
    "$$\n",
    "se(\\bar{x}_1 - \\bar{x}_2) = \\sqrt{\\frac{1}{n_1} + \\frac{1}{n_2}} \\cdot SD_{fælles}\n",
    "$$\n",
    "\n",
    "$$\n",
    "t(x) = \\frac{\\bar{x}_1 - \\bar{x}_2}{se(\\bar{x}_1 - {\\bar{x}_2})}\n",
    "$$\n",
    "\n",
    "Frihedsgrader:\n",
    "\n",
    "$$\n",
    "df = n_1 + n_2 - 2\n",
    "$$\n",
    "\n",
    "**p-værdien** findes så ved opslag af $|t(x)|$ (den numeriske værdi af $t(x)$) i tabellen for T-fordelingen i rækken med det passende antal frihedsgrader.\n",
    "\n",
    "### Konklusion:\n",
    "\n",
    "- p-værdi under $5\\%$: nulhypotesen forkastes. Der findes altså en signifikant sammenhæng mellem eksponering og udfald.\n",
    "- p-værdi over $5\\%$: nulhypotesen kan ikke forkastes. Man kan ikke afvise, at der ikke er nogen sammenhæng mellem eksponering og udfald."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "44bf5b34",
   "metadata": {},
   "source": [
    "## Konfidensintervallet for forskellen på middelværdierne\n",
    "\n",
    "_Obs: der findes her en **eksakt** og **approksimativ** formel. Den eksakte må altid benyttes, hvorimod den approksimative kan bruges, når_ $min(n_1,n_2) \\ge 30$.\n",
    "\n",
    "Eksakt formel:\n",
    "\n",
    "$$\n",
    "95\\% - CI(\\mu_1 - \\mu_2) = \\bar{x}_1 - \\bar{x}_2 \\pm t' \\cdot se(\\bar{x}_1 - \\bar{x}_2)\n",
    "$$\n",
    "\n",
    "hvor $t'$ er det tosidede $5\\%$-punkt i T-fordelingen med $df = n_1 + n_2 - 2$ frihedsgrader.\n",
    "\n",
    "Approksimativ formel:\n",
    "\n",
    "$$\n",
    "95\\% - CI(\\mu_1 - \\mu_2) = \\bar{x}_1 - \\bar{x}_2 \\pm 1.96 \\cdot se(\\bar{x}_1 - \\bar{x}_2)\n",
    "$$\n",
    "\n",
    "I begge formler gælder følgende:\n",
    "\n",
    "$$\n",
    "SD_{fælles} = \\sqrt{\\frac{(n_1-1)\\cdot SD_1^2 + (n_2-1)\\cdot SD_2^2}{n_1 + n_2 - 2}}\n",
    "$$\n",
    "\n",
    "$$\n",
    "se(\\bar{x}_1 - \\bar{x}_2) = \\sqrt{\\frac{1}{n_1} + \\frac{1}{n_2}} \\cdot SD_{fælles}\n",
    "$$\n",
    "\n",
    "### Konklusion:\n",
    "\n",
    "- Ingen forskel på middelværdierne svarer til en differens på $0$\n",
    "- Hvis konfidensintervallet derfor ikke indeholder værdien $0$, er der en signifikant forskel på middelværdierne, og derfor en sammenhæng mellem eksponering og udfald (en difference på $0$ er ikke plausibel på baggrund af studiet)\n",
    "- Hvis konfidensintervallet indeholder værdien $0$, er der ikke en signifikant sammenhæng mellem eksponering og udfald (en difference på $0$ er plausibel på baggrund af studiet)\n",
    "- Mere generelt indeholder konfidensintervallet de værdier (for differencen), der er plausible på baggrund af studiet"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0179735a",
   "metadata": {},
   "source": [
    "# Én binær stikprøve"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6828df8b",
   "metadata": {},
   "source": [
    "## Konfidensinterval for proportionen $\\pi$\n",
    "\n",
    "_Obs: der præsenteres en formel, som er approksimativ. Den kan bruges, når både_ $n\\cdot p \\ge 10$ og $n \\cdot (1-p) \\ge 10$, _hvor_ $n$ _er antal observationer og $p$ angiver andelen af cases._\n",
    "\n",
    "### Beregning:\n",
    "\n",
    "Et (approksimativt) $95\\%$-konfidensinterval for proportionen $\\pi$ er givet ved\n",
    "\n",
    "$$\n",
    "p - 1.96 \\cdot se\\ ;\\ p + 1.96 \\cdot se\n",
    "$$\n",
    "\n",
    "hvor $se = se(p) = \\sqrt{\\frac{p \\cdot (1-p)}{n}}$\n",
    "\n",
    "### Fortolkning:\n",
    "\n",
    "- Hvis vi trak 100 nye stikprøver og beregnede tilsvarede 100 konfidensintervaller for hver af disse, ville vi forvente, at 95 af dem indeholdt den sande proportion i populationen\n",
    "- Med andre ord er der $95\\%$ sandsynlighed for at et konfidensinterval omfavner den sande værddi $\\pi$ for proportionen i hele populationen\n",
    "\n",
    "**Forudsætninger:** Uafhængige observationer fra en binær population."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28b50a25",
   "metadata": {},
   "source": [
    "# To binære stikprøver"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b026f710",
   "metadata": {},
   "source": [
    "## $\\Chi^2$-testet for $H_0$: $\\pi_1 = \\pi_0$\n",
    "\n",
    "Eller (mere generelt) ingen sammenhæng mellem række- og søjleinddeling i en $2 \\times 2$-tabel\n",
    "\n",
    "| **Observeret tabel** | Syge | Raske | Rækketotal |\n",
    "| -                    | -    | -     | -          |\n",
    "| Eksponerede | $d_1$ | $h_1$ | $n_1$ |\n",
    "| Ueksponerede | $d_0$ | $h_0$ | $n_0$ |\n",
    "| Søjletotal | $d$ | $h$ | $n$ |\n",
    "\n",
    "| **Forventet tabel** | Syge | Raske | Rækketotal |\n",
    "| -                    | -    | -     | -          |\n",
    "| Eksponerede | $e_{11}$ | $e_{12}$ | $n_1$ |\n",
    "| Ueksponerede | $e_{21}$ | $e_{22}$ | $n_0$ |\n",
    "| Søjletotal | $d$ | $h$ | $n$ |\n",
    "\n",
    "_Det forventede antal fås ved_ $\\frac{(rækkens\\ total)\\cdot (søjlens\\ total)}{n}$, _fx_ $e_{21} = \\frac{n_0 \\cdot d}{n}$\n",
    "\n",
    "**Nulhypotese:** $H_0$: $\\pi_1 = \\pi_0$, dvs. ingen forskel i risikoen i de to grupper (eller: ingen sammenhæng mellem eksponering og udfald)\n",
    "\n",
    "**Teststørrelse:** - version 1 (approksimativ): $\\Chi^2 = n \\cdot \\frac{(d_1 \\cdot h_0 - d_0 \\cdot h_1)^2}{d \\cdot h \\cdot n_1 \\cdot n_0}$\n",
    "\n",
    "**Teststørrelse:** - version 2 (eksakt): $\\Chi^2 = \\sum_{alle\\ 4\\ celler} \\frac{(observeret\\ antal - forventet\\ antal)^2}{forventet}$\n",
    "\n",
    "**Frihedsgrader:** ($2 \\times 2$-tabel): $df = (2-1) \\cdot (2-1) = 1$\n",
    "\n",
    "**p-værdi:** findes ved opslag af $\\Chi^2$ i tabellen for $\\Chi^2$-fordelingen (Tabel A5) i rækken med det passende antal frihedsgrader.\n",
    "\n",
    "### Konklusion:\n",
    "\n",
    "- Ved en p-værdi under $5\\%$ forkastes nulhypotesen, men finder altså en signifikant sammenhæng mellem eksponering og udfald\n",
    "- Ved en p-værdi over $5\\%$ kan nulhypotesen ikke forkastes. Man kan altså ikke afvise, at der ikke er nogen sammenhæng mellem eksponering og udfald"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "base",
   "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.13.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
