From e12a7c96ae1022ac4eee01ab9ab283174e6acc67 Mon Sep 17 00:00:00 2001 From: DBras Date: Tue, 19 May 2026 21:28:54 +0000 Subject: [PATCH] =?UTF-8?q?Added=20hyppigheds-=20og=20associationsm=C3=A5l?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Case-Kontrol.ipynb | 183 ++++++++++++++++++++++ Kohorte-RCT.ipynb | 380 +++++++++++++++++++++++++++++++++++++++++++++ Tværsnit.ipynb | 169 ++++++++++++++++++++ 3 files changed, 732 insertions(+) create mode 100644 Case-Kontrol.ipynb create mode 100644 Kohorte-RCT.ipynb create mode 100644 Tværsnit.ipynb diff --git a/Case-Kontrol.ipynb b/Case-Kontrol.ipynb new file mode 100644 index 0000000..c8d795f --- /dev/null +++ b/Case-Kontrol.ipynb @@ -0,0 +1,183 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 2, + "id": "4ae75850", + "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": "4f6c9952", + "metadata": {}, + "source": [ + "# Case-kontrol\n", + "\n", + "Dette er et case-kontrol studie, da:\n", + "\n", + "- Deltagerne udvælges på baggrund af udfaldet (sygdommen/lidelsen)\n", + "- Perspektivet er retrospektivt, dvs. man ser tilbage på eksponeringen\n", + "- Både casene (de syge) og kontrollerne (de raske) har været udsat for eksponering og ikke-eksponering (indenfor den hver gruppe, ikke det enkelte individ)\n", + "\n", + "Fordel og ulemper:\n", + "\n", + "- Hurtige og billige\n", + "- Mindre sårbare end tværsnitstudier, men mere sårbare end kohorte studier\n", + "- Ofte selektions- og re-call bias\n", + "- En sygdom kan skyldes mange eksponeringer. Man kan tage højde for diverse eksponeringer, men kan kun undersøge én eksponering pr. studie\n", + "- God til sjældne sygdomme, da studiet tager udgangspunkt i udfaldet og man derfor ikke behøver at rekruttere kæmpe stikprøver" + ] + }, + { + "cell_type": "markdown", + "id": "5a1c374c", + "metadata": {}, + "source": [ + "# Hyppigheds- og associationsmål\n", + "\n", + "Odds:\n", + "\n", + "$$\n", + "Odds = \\frac{proportion}{1-proportion} = \\frac{eksponerede}{ikke\\ eksponerede}\n", + "$$\n", + "\n", + "hvor proportion er en andel ($0 \\le proportion \\le 1$). Odds fortæller hvor mange eksponerede, der er for hver _ikke_ eksponeret.\n", + "\n", + "Oddsratio (OR):\n", + "\n", + "$$\n", + "OR = \\frac{Odds_{cases}}{Odds_{kontroller}}\n", + "$$\n", + "\n", + "Oddsratio giver hvor mange gange større risiko der er for sygdom, hvis man er eksponeret.\n", + "\n", + "- Hvis $OR \\gt 1$: forøget risiko for sygdom, hvis du er eksponeret\n", + "- Hvis $OR \\lt 1$: reduceret risiko for sygdom, hvis du er eksponeret\n", + "\n", + "Nulhypotese: $OR=1$" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9ef67735", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "$odds_{blodprop} = \\frac{26}{32} = 0.8125$\n", + "\n", + "$odds_{kontrol} = \\frac{10}{106} = 0.0943$\n", + "\n", + "$OR = \\frac{odds_{blodprop}}{odds_{kontrol}} = \\frac{0.8125}{0.0943} \\approx 8.6125$\n", + "\n", + "Der er 7.61 gange større risiko for blodprop, hvis man er eksponeret, i forhold til hvis man ikke er eksponeret.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "udfald = 'blodprop' # Fx blodprop\n", + "\n", + "antal_syge_eksponerede = 26\n", + "antal_syge_ikke_eksponerede = 32\n", + "\n", + "antal_raske_eksponerede = 10\n", + "antal_raske_ikke_eksponerede = 106\n", + "\n", + "\n", + "#####################################\n", + "odds_syge = antal_syge_eksponerede / antal_syge_ikke_eksponerede\n", + "odds_kontrol = antal_raske_eksponerede / antal_raske_ikke_eksponerede\n", + "oddsratio = odds_syge / odds_kontrol\n", + "\n", + "display(Markdown(\n", + " rf\"\"\"\n", + "$odds_{{{udfald}}} = \\frac{{{antal_syge_eksponerede}}}{{{antal_syge_ikke_eksponerede}}} = {odds_syge:.4f}$\n", + "\n", + "$odds_{{kontrol}} = \\frac{{{antal_raske_eksponerede}}}{{{antal_raske_ikke_eksponerede}}} = {odds_kontrol:.4f}$\n", + "\n", + "$OR = \\frac{{odds_{{{udfald}}}}}{{odds_{{kontrol}}}} = \\frac{{{odds_syge:.4f}}}{{{odds_kontrol:.4f}}} \\approx {oddsratio:.4f}$\n", + "\n", + "Der er {oddsratio-1:.2f} gange større risiko for {udfald}, hvis man er eksponeret, i forhold til hvis man ikke er eksponeret.\n", + "\"\"\"\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2898b72", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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 +} diff --git a/Kohorte-RCT.ipynb b/Kohorte-RCT.ipynb new file mode 100644 index 0000000..dc78225 --- /dev/null +++ b/Kohorte-RCT.ipynb @@ -0,0 +1,380 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "f3c832c5", + "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": "4392857e", + "metadata": {}, + "source": [ + "# Kohorte / RCT\n", + "\n", + "Dette er et kohortestudie, da:\n", + "\n", + "- det tager udgangspunkt i eksponering\n", + "- kohorten følges over tid, hvorefter man kigger på udfald\n", + "- det finder en årsagssammenhæng\n", + "- det undersøger flere udfald samtidig\n", + "- det er prospektivt - analytisk\n", + "\n", + "Forskel på RCT og kohorte:\n", + "\n", + "- I RCT bestemmer man hvilken eksponering grupperne skal udsættes for, og der kan derfor være blindet\n", + "- randomiseret\n", + "\n", + "Fordele og ulemper ved kohorte:\n", + "\n", + "- langsomt\n", + "- dyrt\n", + "- det mindst sårbare studie\n", + "- loss to follow-up (bias)\n", + "- mange sygdomme (udfald i forhold til eksponering)" + ] + }, + { + "cell_type": "markdown", + "id": "ffac3d14", + "metadata": {}, + "source": [ + "# Hyppigheds- og associationsmål (3 sæt)" + ] + }, + { + "cell_type": "markdown", + "id": "9bf576a5", + "metadata": {}, + "source": [ + "## Incidensrate (IR), incidensrate ratio (IRR), incidensrate differens (IRD)" + ] + }, + { + "cell_type": "markdown", + "id": "cd18552f", + "metadata": {}, + "source": [ + "$$\n", + "IR = \\frac{antal\\ nye\\ tilfælde}{samlet\\ persontid\\ i\\ risiko(risikotid)}\n", + "$$\n", + "\n", + "$$\n", + "IRR = \\frac{IR_{eksponerede}}{IR_{ikke\\ eksponerede}}\n", + "$$\n", + "\n", + "$$\n", + "IRD = IR_{eksponerede} - IR_{ikke\\ eksponerede}\n", + "$$\n", + "\n", + "$H_0$: $IRR=1 \\Leftrightarrow IRD=0$" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "8f9ea711", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "$IR = \\frac{antal\\ nye\\ tilfælde}{observationstid\\ i\\ personår}$\n", + "\n", + "$IR_{eksponerede} = \\frac{130}{6834} \\approx 0.01902 \\approx 1.90%$\\% sv.t. 19 pr. 1000 personår\n", + "\n", + "$IR_{ikke\\ eksponerede} = \\frac{40}{9228} \\approx 0.00433 \\approx 0.43%$\\% sv.t. 4 pr. 1000 personår\n", + "\n", + "$IRR = \\frac{IR_{eksponerede}}{IR_{ikke\\ eksponerede}} = \\frac{0.01902}{0.00433} \\approx 4.388$\n", + "\n", + "$IRD = IR_{eksponerede} - IR_{ikke\\ eksponerede} = 0.01902 - 0.00433 \\approx 0.01469$ sv.t. 15 pr. 1000\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "antal_nye_tilfælde_eksponerede = 130\n", + "observationstid_eksponerede = 6834 # Observationstid målt i personår\n", + "\n", + "antal_nye_tilfælde_ikke_eksponerede = 40\n", + "observationstid_ikke_eksponerede = 9228\n", + "\n", + "\n", + "#####################################\n", + "ir_eksponerede = antal_nye_tilfælde_eksponerede / observationstid_eksponerede\n", + "ir_ikke_eksponerede = antal_nye_tilfælde_ikke_eksponerede / observationstid_ikke_eksponerede\n", + "irr = ir_eksponerede / ir_ikke_eksponerede\n", + "ird = ir_eksponerede - ir_ikke_eksponerede\n", + "\n", + "display(Markdown(\n", + " rf\"\"\"\n", + "$IR = \\frac{{antal\\ nye\\ tilfælde}}{{observationstid\\ i\\ personår}}$\n", + "\n", + "$IR_{{eksponerede}} = \\frac{{{antal_nye_tilfælde_eksponerede}}}{{{observationstid_eksponerede}}} \\approx {ir_eksponerede:.5f} \\approx {ir_eksponerede:.2%}$\\% sv.t. {ir_eksponerede*1000:.0f} pr. 1000 personår\n", + "\n", + "$IR_{{ikke\\ eksponerede}} = \\frac{{{antal_nye_tilfælde_ikke_eksponerede}}}{{{observationstid_ikke_eksponerede}}} \\approx {ir_ikke_eksponerede:.5f} \\approx {ir_ikke_eksponerede:.2%}$\\% sv.t. {ir_ikke_eksponerede*1000:.0f} pr. 1000 personår\n", + "\n", + "$IRR = \\frac{{IR_{{eksponerede}}}}{{IR_{{ikke\\ eksponerede}}}} = \\frac{{{ir_eksponerede:.5f}}}{{{ir_ikke_eksponerede:.5f}}} \\approx {irr:.3f}$\n", + "\n", + "$IRD = IR_{{eksponerede}} - IR_{{ikke\\ eksponerede}} = {ir_eksponerede:.5f} - {ir_ikke_eksponerede:.5f} \\approx {ird:.5f}$ sv.t. {ird*1000:.0f} pr. 1000\n", + "\"\"\"\n", + "))" + ] + }, + { + "cell_type": "markdown", + "id": "a8686b0b", + "metadata": {}, + "source": [ + "## Risiko (KIP), relativ risiko (RR), risiko differens (RD)" + ] + }, + { + "cell_type": "markdown", + "id": "393753d8", + "metadata": {}, + "source": [ + "$$\n", + "KIP = \\frac{antal\\ nye\\ tilfælde\\ i\\ en\\ given\\ periode}{antal\\ personer\\ i\\ risiko\\ ved\\ observationsperiodens\\ start}\n", + "$$\n", + "\n", + "$$\n", + "RR = \\frac{KIP_{eksponerede}}{KIP_{ikke\\ eksponerede}}\n", + "$$\n", + "\n", + "$$\n", + "RD = KIP_{eksponerede} - KIP_{ikke\\ eksponerede}\n", + "$$\n", + "\n", + "$H_0$: $RR=1 \\Leftrightarrow RD=0$" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "96e8cc3a", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "$KIP = \\frac{antal\\ nye\\ tilfælde}{antal\\ personer}$\n", + "\n", + "$KIP_{eksponerede} = \\frac{130}{656} \\approx 0.19817 \\approx 19.82%$\\%\n", + "\n", + "$KIP_{ikke\\ eksponerede} = \\frac{40}{787} \\approx 0.05083 \\approx 5.08%$\\%\n", + "\n", + "$RR = \\frac{KIP_{eksponerede}}{KIP_{ikke\\ eksponerede}} = \\frac{0.19817}{0.05083} \\approx 3.899$\n", + "\n", + "$RD = KIP_{eksponerede} - KIP_{ikke\\ eksponerede} = 0.19817 - 0.05083 \\approx 0.14734$ sv.t. 147 pr. 1000\n", + "\n", + "Dette vil altså betyde 147 ekstra tilfælde pr. 1000\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "antal_nye_tilfælde_eksponerede = 130\n", + "antal_eksponerede = 656\n", + "\n", + "antal_nye_tilfælde_ikke_eksponerede = 40\n", + "antal_ikke_eksponerede = 787\n", + "\n", + "\n", + "#####################################\n", + "kip_eksponerede = antal_nye_tilfælde_eksponerede / antal_eksponerede\n", + "kip_ikke_eksponerede = antal_nye_tilfælde_ikke_eksponerede / antal_ikke_eksponerede\n", + "rr = kip_eksponerede / kip_ikke_eksponerede\n", + "rd = kip_eksponerede - kip_ikke_eksponerede\n", + "\n", + "display(Markdown(\n", + " rf\"\"\"\n", + "$KIP = \\frac{{antal\\ nye\\ tilfælde}}{{antal\\ personer}}$\n", + "\n", + "$KIP_{{eksponerede}} = \\frac{{{antal_nye_tilfælde_eksponerede}}}{{{antal_eksponerede}}} \\approx {kip_eksponerede:.5f} \\approx {kip_eksponerede:.2%}$\\%\n", + "\n", + "$KIP_{{ikke\\ eksponerede}} = \\frac{{{antal_nye_tilfælde_ikke_eksponerede}}}{{{antal_ikke_eksponerede}}} \\approx {kip_ikke_eksponerede:.5f} \\approx {kip_ikke_eksponerede:.2%}$\\%\n", + "\n", + "$RR = \\frac{{KIP_{{eksponerede}}}}{{KIP_{{ikke\\ eksponerede}}}} = \\frac{{{kip_eksponerede:.5f}}}{{{kip_ikke_eksponerede:.5f}}} \\approx {rr:.3f}$\n", + "\n", + "$RD = KIP_{{eksponerede}} - KIP_{{ikke\\ eksponerede}} = {kip_eksponerede:.5f} - {kip_ikke_eksponerede:.5f} \\approx {rd:.5f}$ sv.t. {rd*1000:.0f} pr. 1000\n", + "\n", + "Dette vil altså betyde {rd*1000:.0f} ekstra tilfælde pr. 1000\n", + "\"\"\"\n", + "))" + ] + }, + { + "cell_type": "markdown", + "id": "2f69d5ff", + "metadata": {}, + "source": [ + "## Odds, oddsratio (OR)" + ] + }, + { + "cell_type": "markdown", + "id": "21428554", + "metadata": {}, + "source": [ + "# Hyppigheds- og associationsmål\n", + "\n", + "Odds:\n", + "\n", + "$$\n", + "Odds = \\frac{proportion}{1-proportion} = \\frac{eksponerede}{ikke\\ eksponerede}\n", + "$$\n", + "\n", + "hvor proportion er en andel ($0 \\le proportion \\le 1$). Odds fortæller hvor mange eksponerede, der er for hver _ikke_ eksponeret.\n", + "\n", + "Oddsratio (OR):\n", + "\n", + "$$\n", + "OR = \\frac{Odds_{cases}}{Odds_{kontroller}}\n", + "$$\n", + "\n", + "Oddsratio giver hvor mange gange større risiko der er for sygdom, hvis man er eksponeret.\n", + "\n", + "- Hvis $OR \\gt 1$: forøget risiko for sygdom, hvis du er eksponeret\n", + "- Hvis $OR \\lt 1$: reduceret risiko for sygdom, hvis du er eksponeret\n", + "\n", + "$H_0$: $OR=1$" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "cdda6f48", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "$odds_{blodprop} = \\frac{26}{32} = 0.8125$\n", + "\n", + "$odds_{kontrol} = \\frac{10}{106} = 0.0943$\n", + "\n", + "$OR = \\frac{odds_{blodprop}}{odds_{kontrol}} = \\frac{0.8125}{0.0943} \\approx 8.6125$\n", + "\n", + "Der er 7.61 gange større risiko for blodprop, hvis man er eksponeret, i forhold til hvis man ikke er eksponeret.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "udfald = 'blodprop' # Fx blodprop\n", + "\n", + "antal_syge_eksponerede = 26\n", + "antal_syge_ikke_eksponerede = 32\n", + "\n", + "antal_raske_eksponerede = 10\n", + "antal_raske_ikke_eksponerede = 106\n", + "\n", + "\n", + "#####################################\n", + "odds_syge = antal_syge_eksponerede / antal_syge_ikke_eksponerede\n", + "odds_kontrol = antal_raske_eksponerede / antal_raske_ikke_eksponerede\n", + "oddsratio = odds_syge / odds_kontrol\n", + "\n", + "display(Markdown(\n", + " rf\"\"\"\n", + "$odds_{{{udfald}}} = \\frac{{{antal_syge_eksponerede}}}{{{antal_syge_ikke_eksponerede}}} = {odds_syge:.4f}$\n", + "\n", + "$odds_{{kontrol}} = \\frac{{{antal_raske_eksponerede}}}{{{antal_raske_ikke_eksponerede}}} = {odds_kontrol:.4f}$\n", + "\n", + "$OR = \\frac{{odds_{{{udfald}}}}}{{odds_{{kontrol}}}} = \\frac{{{odds_syge:.4f}}}{{{odds_kontrol:.4f}}} \\approx {oddsratio:.4f}$\n", + "\n", + "Der er {oddsratio-1:.2f} gange større risiko for {udfald}, hvis man er eksponeret, i forhold til hvis man ikke er eksponeret.\n", + "\"\"\"\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "9d077dff", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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 +} diff --git a/Tværsnit.ipynb b/Tværsnit.ipynb new file mode 100644 index 0000000..86e6c4b --- /dev/null +++ b/Tværsnit.ipynb @@ -0,0 +1,169 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "eb67f7a5", + "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": "c0bee775", + "metadata": {}, + "source": [ + "# Tværsnit\n", + "\n", + "Dette er et tværsnitstudie, da:\n", + "\n", + "- det giver et øjebliksbilledet (man ser på nuværende eksponering)\n", + "- eksponering og udfald indhentes samtidig, dvs man kan ikke finde årsagssammenhæng\n", + "- bruges til at beskrive bestanden af en given tilstand/ sygdom til et givent tidspunkt\n", + "\n", + "Fordele og ulemper:\n", + "\n", + "- hurtigt og billigt\n", + "- meget sårbart, da man ikke kender årsagssammenhæng\n", + "- hypotesegenererende\n", + "- deskriptivt (ikke analytisk)" + ] + }, + { + "cell_type": "markdown", + "id": "5a7b9dca", + "metadata": {}, + "source": [ + "## Hyppigheds- og associationsmål\n", + "\n", + "Prævalens / Prævalensproportion (PP)\n", + "\n", + "$$\n", + "PP = \\frac{antal\\ syge\\ på\\ et\\ givet\\ tidspunkt}{antal\\ personer\\ i\\ studiepopulationen\\ på\\ samme\\ tidspunkt}\n", + "$$\n", + "\n", + "$$\n", + "PPR = \\frac{PP_{eksponerede}}{PP_{ikke\\ eksponerede}}\n", + "$$" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "bdd4eb49", + "metadata": {}, + "outputs": [ + { + "data": { + "text/markdown": [ + "\n", + "$PP_{eksponerede} = \\frac{33}{101} \\approx 32.67%$\\%\n", + "\n", + "$PP_{ikke\\ eksponerede} = \\frac{19}{90} \\approx 21.11%$\\%\n", + "\n", + "$PPR = \\frac{PP_{eksponerede}}{PP_{ikke\\ eksponerede}} = \\frac{0.3267}{0.2111} \\approx 154.77%$\\%\n", + "\n", + "Prævalensen er 54.77% højere blandt eksponerede i forhold til ikke-eksponerede.\n" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "syge_eksponerede = 33\n", + "eksponerede_i_alt = 101\n", + "\n", + "syge_ikke_eksponerede = 19\n", + "ikke_eksponerede_i_alt = 90\n", + "\n", + "\n", + "################################\n", + "pp_eksponerede = syge_eksponerede / eksponerede_i_alt\n", + "pp_ikke_eksponerede = syge_ikke_eksponerede / ikke_eksponerede_i_alt\n", + "ppr = pp_eksponerede / pp_ikke_eksponerede\n", + "\n", + "display(Markdown(\n", + " rf\"\"\"\n", + "$PP_{{eksponerede}} = \\frac{{{syge_eksponerede}}}{{{eksponerede_i_alt}}} \\approx {pp_eksponerede:.2%}$\\%\n", + "\n", + "$PP_{{ikke\\ eksponerede}} = \\frac{{{syge_ikke_eksponerede}}}{{{ikke_eksponerede_i_alt}}} \\approx {pp_ikke_eksponerede:.2%}$\\%\n", + "\n", + "$PPR = \\frac{{PP_{{eksponerede}}}}{{PP_{{ikke\\ eksponerede}}}} = \\frac{{{pp_eksponerede:.4f}}}{{{pp_ikke_eksponerede:.4f}}} \\approx {ppr:.2%}$\\%\n", + "\n", + "Prævalensen er {ppr-1:.2%} højere blandt eksponerede i forhold til ikke-eksponerede.\n", + "\"\"\"\n", + "))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5f8b2150", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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 +}