{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f0d18716",
   "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": "72bdb3bd",
   "metadata": {},
   "source": [
    "# Prædiktionsinterval\n",
    "\n",
    "$$\n",
    "95\\% - PI = \\bar{x} \\pm 1.96 \\cdot SD\n",
    "$$\n",
    "\n",
    "- $\\bar{x}$: middelværdi\n",
    "- $SD$: Stikprøvespredning"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "798fdae9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "95%-PI\n",
       "\n",
       "$= \\left[\\bar{x} \\pm 1.96 \\cdot SD\\right]$\n",
       "\n",
       "$= 3987 \\pm 1.96 \\cdot 506$\n",
       "\n",
       "$=\\left[ 2995.2\\ ;\\ 4978.8 \\right]$\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "middelværdi = 3987\n",
    "stikprøvespredning = 506\n",
    "\n",
    "\n",
    "################################\n",
    "display(Markdown(\n",
    "    rf\"\"\"\n",
    "95%-PI\n",
    "\n",
    "$= \\left[\\bar{{x}} \\pm 1.96 \\cdot SD\\right]$\n",
    "\n",
    "$= {middelværdi} \\pm 1.96 \\cdot {stikprøvespredning}$\n",
    "\n",
    "$=\\left[ {middelværdi - 1.96 * stikprøvespredning:.1f}\\ ;\\ {middelværdi + 1.96 * stikprøvespredning:.1f} \\right]$\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "72541db9",
   "metadata": {},
   "source": [
    "# Konfidensinterval\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}$: middelværdi\n",
    "- $se$: _standard error_, $= \\frac{SD}{\\sqrt{n}}$\n",
    "\n",
    "Hvis $se$ er ukendt:\n",
    "\n",
    "- $SD$: stikprøvespredning\n",
    "- $n$: stikprøvestørrelse (antal observationer)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "1e61db8b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Hvis se (standard error) er kendt:\n",
    "\n",
    "standard_error = 8.04\n",
    "n = 3978"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "d3916fb4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "$standard\\ error = se = \\frac{SD}{\\sqrt{n}}$\n",
       "\n",
       "$= \\frac{507}{3978}$\n",
       "\n",
       "$=8.04$\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Hvis se (standard error) er ukendt:\n",
    "\n",
    "stikprøvespredning = 507\n",
    "n = 3978\n",
    "standard_error = stikprøvespredning / (n**0.5)\n",
    "\n",
    "\n",
    "#########################################\n",
    "display(Markdown(\n",
    "    rf\"\"\"\n",
    "$standard\\ error = se = \\frac{{SD}}{{\\sqrt{{n}}}}$\n",
    "\n",
    "$= \\frac{{{stikprøvespredning}}}{{{n}}}$\n",
    "\n",
    "$={standard_error:.2f}$\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e7d81100",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/markdown": [
       "\n",
       "95%-CI med eksakt formel:\n",
       "\n",
       "$=\\left[\\bar{x} \\pm t' \\cdot se\\right]$\n",
       "\n",
       "$=\\left[3437 \\pm 1.96 \\cdot 8.04\\right]$\n",
       "\n",
       "$=\\left[3437 \\pm 15.76\\right]$\n",
       "\n",
       "$= \\left[3421.24 \\ ;\\  3452.76\\right]$\n"
      ],
      "text/plain": [
       "<IPython.core.display.Markdown object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "middelværdi = 3437\n",
    "\n",
    "\n",
    "##########################################\n",
    "t_se = t_value(0.025, n-1) * standard_error\n",
    "display(Markdown(\n",
    "    rf\"\"\"\n",
    "95%-CI med eksakt formel:\n",
    "\n",
    "$=\\left[\\bar{{x}} \\pm t' \\cdot se\\right]$\n",
    "\n",
    "$=\\left[{middelværdi} \\pm {t_value(0.025, n-1):.2f} \\cdot {standard_error:.2f}\\right]$\n",
    "\n",
    "$=\\left[{middelværdi} \\pm {t_se:.2f}\\right]$\n",
    "\n",
    "$= \\left[{middelværdi - t_se:.2f} \\ ;\\  {middelværdi + t_se:.2f}\\right]$\n",
    "\"\"\"\n",
    "))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "05fec350",
   "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
}
