V1 of help-sheets
This commit is contained in:
parent
18fd8ce6e3
commit
c906cb3310
|
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "acd1babd",
|
||||
"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"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "base",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python",
|
||||
"version": "3.13.9"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
|
|
@ -0,0 +1,266 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 1,
|
||||
"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": 23,
|
||||
"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": 37,
|
||||
"id": "e7d81100",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"95%-CI\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\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
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1,261 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 2,
|
||||
"id": "42259d82",
|
||||
"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": "82a22acc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Hyppigheds- og associationsmål"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "9920c0f3",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Odds risiko\n",
|
||||
"# Relativ risiko\n",
|
||||
"# Risiko differens"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 20,
|
||||
"id": "d8e8f8ea",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"Prævalens (Høj skærmtid) $= \\frac{210}{460} = 0.4565 \\approx 45.65%$ \\%\n",
|
||||
"\n",
|
||||
"Prævalens (Lav skærmtid) $= \\frac{90}{360} = 0.2500 \\approx 25.00%$ \\%\n",
|
||||
"\n",
|
||||
"PPR $= \\frac{0.4565}{0.2500} = 1.8261$\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"kategorier = ['Høj skærmtid', 'Lav skærmtid']\n",
|
||||
"data = [[210, 460],\n",
|
||||
" [90, 360]]\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"####################################\n",
|
||||
"prævalens1 = data[0][0] / data[0][1]\n",
|
||||
"prævalens2 = data[1][0] / data[1][1]\n",
|
||||
"\n",
|
||||
"display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"Prævalens ({kategorier[0]}) $= \\frac{{{data[0][0]}}}{{{data[0][1]}}} = {prævalens1:.4f} \\approx {prævalens1:.2%}$ \\%\n",
|
||||
"\n",
|
||||
"Prævalens ({kategorier[1]}) $= \\frac{{{data[1][0]}}}{{{data[1][1]}}} = {prævalens2:.4f} \\approx {prævalens2:.2%}$ \\%\n",
|
||||
"\n",
|
||||
"PPR $= \\frac{{{prævalens1:.4f}}}{{{prævalens2:.4f}}} = {prævalens1 / prævalens2:.4f}$\n",
|
||||
"\"\"\"\n",
|
||||
"))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "3ef266dc",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# $\\Chi^2$-test"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 4,
|
||||
"id": "7c426592",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"### Observeret:"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"| | Hovedpine | Ingen hovedpine | Total |\n",
|
||||
"|-|-|-|- |\n",
|
||||
"| Høj skærmtid | 210.0 | 250.0 | 460 |\n",
|
||||
"| Lav skærmtid | 90.0 | 270.0 | 360 |\n",
|
||||
"| **Total** | **300** | **520** | **820** |\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"### Forventet:"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"| | Hovedpine | Ingen hovedpine | Total |\n",
|
||||
"|-|-|-|- |\n",
|
||||
"| Høj skærmtid | 168.3 | 291.7 | 460 |\n",
|
||||
"| Lav skærmtid | 131.7 | 228.3 | 360 |\n",
|
||||
"| **Total** | **300** | **520** | **820** |\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"$\\Chi^2$-værdi: 36.24\n",
|
||||
"\n",
|
||||
"$p$-værdi: 1.7e-09\n",
|
||||
"\n",
|
||||
"Frihedsgrader: 1\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"rækker = ['Høj skærmtid', 'Lav skærmtid']\n",
|
||||
"kolonner = ['Hovedpine', 'Ingen hovedpine']\n",
|
||||
"data = [[210, 250], \n",
|
||||
" [90, 270]]\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"############################################\n",
|
||||
"stat, p, dof, expected = chi2_contingency(data)\n",
|
||||
"\n",
|
||||
"display(Markdown('### Observeret:'))\n",
|
||||
"_display_table(data, rækker, kolonner)\n",
|
||||
"display(Markdown('### Forventet:'))\n",
|
||||
"_display_table(expected, rækker, kolonner)\n",
|
||||
"\n",
|
||||
"display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"$\\Chi^2$-værdi: {stat:.2f}\n",
|
||||
"\n",
|
||||
"$p$-værdi: {p:.2}\n",
|
||||
"\n",
|
||||
"Frihedsgrader: {dof}\n",
|
||||
"\"\"\"\n",
|
||||
"))\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "896b2de0",
|
||||
"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
|
||||
}
|
||||
|
|
@ -0,0 +1,311 @@
|
|||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "0ba6d314",
|
||||
"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",
|
||||
"import math\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": "e0a72880",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Uparret t-test\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",
|
||||
"$$\n",
|
||||
"df = n_1 + n_2 - 2\n",
|
||||
"$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 61,
|
||||
"id": "7e734740",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"$H_0: \\mu_1 = \\mu_2 \\Rightarrow \\mu_1 - \\mu_2 = 0$\n",
|
||||
"\n",
|
||||
"Test: uparret t-test med $df = 150 + 300 - 2 = 448$ frihedsgrader\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 } } = \\sqrt{ \\frac{ (150 - 1)\\cdot 1.7^2 + (300-1) \\cdot 1.8^2 }{ 150 + 300 - 2 } } = 1.7674$\n",
|
||||
"\n",
|
||||
"$se(\\bar{x_1} - \\bar{x_2}) = \\sqrt{\\frac{1}{n_1} + \\frac{1}{n_2}} \\cdot SD_{fælles} = \\sqrt{\\frac{1}{150} + \\frac{1}{300}} \\cdot 1.7674 = 0.1767$\n",
|
||||
"\n",
|
||||
"$t(x) = \\frac{\\bar{x_1} - \\bar{x_2}}{se(\\bar{x_1} - \\bar{x_2})} = \\frac{21.9 - 21.6}{0.1767} = 1.6974$\n",
|
||||
"\n",
|
||||
"For en t-test med 448 frihedsgrader og et signifikansniveau på $\\alpha = 0.05$ er den kritiske værdi for $t(x) = 1.9653$.\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"Da teststørrelsen $t(x)$ er mindre end den kritiske værdi, kan nulhypotesen $H_0: \\mu_1 - \\mu_2 = 0$ ikke forkastes.\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"middel1 = 21.9\n",
|
||||
"n1 = 150\n",
|
||||
"sd1 = 1.7\n",
|
||||
"\n",
|
||||
"middel2 = 21.6\n",
|
||||
"n2 = 300\n",
|
||||
"sd2 = 1.8\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"###############################\n",
|
||||
"dof = n1 + n2 - 2\n",
|
||||
"sd_fælles = math.sqrt(((n1-1)*sd1**2 + (n2-1)*sd2**2) / (n1 + n2 - 2))\n",
|
||||
"se_fælles = math.sqrt(1/n1 + 1/n2) * sd_fælles\n",
|
||||
"t_x = (middel1 - middel2)/(se_fælles)\n",
|
||||
"crit_t = t_test.ppf(1-0.05/2, dof)\n",
|
||||
"\n",
|
||||
"display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"$H_0: \\mu_1 = \\mu_2 \\Rightarrow \\mu_1 - \\mu_2 = 0$\n",
|
||||
"\n",
|
||||
"Test: uparret t-test med $df = {n1} + {n2} - 2 = {dof}$ frihedsgrader\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 }} }} = \\sqrt{{ \\frac{{ ({n1} - 1)\\cdot {sd1}^2 + ({n2}-1) \\cdot {sd2}^2 }}{{ {n1} + {n2} - 2 }} }} = {sd_fælles:.4f}$\n",
|
||||
"\n",
|
||||
"$se(\\bar{{x_1}} - \\bar{{x_2}}) = \\sqrt{{\\frac{{1}}{{n_1}} + \\frac{{1}}{{n_2}}}} \\cdot SD_{{fælles}} = \\sqrt{{\\frac{{1}}{{{n1}}} + \\frac{{1}}{{{n2}}}}} \\cdot {sd_fælles:.4f} = {se_fælles:.4f}$\n",
|
||||
"\n",
|
||||
"$t(x) = \\frac{{\\bar{{x_1}} - \\bar{{x_2}}}}{{se(\\bar{{x_1}} - \\bar{{x_2}})}} = \\frac{{{middel1} - {middel2}}}{{{se_fælles:.4f}}} = {t_x:.4f}$\n",
|
||||
"\n",
|
||||
"For en t-test med {dof} frihedsgrader og et signifikansniveau på $\\alpha = 0.05$ er den kritiske værdi for $t(x) = {crit_t:.4f}$.\n",
|
||||
"\"\"\"\n",
|
||||
"))\n",
|
||||
"\n",
|
||||
"if t_x > crit_t:\n",
|
||||
" display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"Da teststørrelsen $t(x)$ er større end den kritiske værdi, kan nulhypotesen $H_0: \\mu_1 - \\mu_2 = 0$ forkastes.\n",
|
||||
"\"\"\"\n",
|
||||
" ))\n",
|
||||
"else:\n",
|
||||
" display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"Da teststørrelsen $t(x)$ er mindre end den kritiske værdi, kan nulhypotesen $H_0: \\mu_1 - \\mu_2 = 0$ ikke forkastes.\n",
|
||||
"\"\"\"\n",
|
||||
" ))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "2ad5beff",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Konfidensintervallet for forskellen på middelværdierne\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",
|
||||
"$$"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 67,
|
||||
"id": "c4d47453",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"middel1 = 21.9\n",
|
||||
"n1 = 150\n",
|
||||
"sd1 = 1.7\n",
|
||||
"\n",
|
||||
"middel2 = 21.6\n",
|
||||
"n2 = 300\n",
|
||||
"sd2 = 1.8\n",
|
||||
"\n",
|
||||
"dof = n1 + n2 - 2\n",
|
||||
"sd_fælles = math.sqrt(((n1-1)*sd1**2 + (n2-1)*sd2**2) / (n1 + n2 - 2))\n",
|
||||
"se_fælles = math.sqrt(1/n1 + 1/n2) * sd_fælles"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": 75,
|
||||
"id": "bdc8cd82",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"$\\bar{x}_1 = 21.9$\n",
|
||||
"\n",
|
||||
"$\\bar{x}_2 = 21.6$\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 } } = \\sqrt{ \\frac{ (150 - 1)\\cdot 1.7^2 + (300-1) \\cdot 1.8^2 }{ 150 + 300 - 2 } } = 1.7674$\n",
|
||||
"\n",
|
||||
"$se(\\bar{x_1} - \\bar{x_2}) = \\sqrt{\\frac{1}{n_1} + \\frac{1}{n_2}} \\cdot SD_{fælles} = \\sqrt{\\frac{1}{150} + \\frac{1}{300}} \\cdot 1.7674 = 0.1767$\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",
|
||||
"$= 21.9 - 21.6 \\pm 1.965 \\cdot 0.177$\n",
|
||||
"\n",
|
||||
"$= 0.300 \\pm 0.347 = \\left[-0.047\\ ;\\ 0.647\\right]$\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
},
|
||||
{
|
||||
"data": {
|
||||
"text/markdown": [
|
||||
"\n",
|
||||
"Da $0$ er inkluderet i $95\\%CI$, kan der ikke siges at være signifikant forskel på middelværdierne.\n"
|
||||
],
|
||||
"text/plain": [
|
||||
"<IPython.core.display.Markdown object>"
|
||||
]
|
||||
},
|
||||
"metadata": {},
|
||||
"output_type": "display_data"
|
||||
}
|
||||
],
|
||||
"source": [
|
||||
"####################################\n",
|
||||
"t_værdi = t_value(0.025, dof)\n",
|
||||
"t_se = t_værdi * se_fælles\n",
|
||||
"middel_dif = middel1 - middel2\n",
|
||||
"interval_lav = middel_dif - t_se\n",
|
||||
"interval_høj = middel_dif + t_se\n",
|
||||
"\n",
|
||||
"display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"$\\bar{{x}}_1 = {middel1}$\n",
|
||||
"\n",
|
||||
"$\\bar{{x}}_2 = {middel2}$\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 }} }} = \\sqrt{{ \\frac{{ ({n1} - 1)\\cdot {sd1}^2 + ({n2}-1) \\cdot {sd2}^2 }}{{ {n1} + {n2} - 2 }} }} = {sd_fælles:.4f}$\n",
|
||||
"\n",
|
||||
"$se(\\bar{{x_1}} - \\bar{{x_2}}) = \\sqrt{{\\frac{{1}}{{n_1}} + \\frac{{1}}{{n_2}}}} \\cdot SD_{{fælles}} = \\sqrt{{\\frac{{1}}{{{n1}}} + \\frac{{1}}{{{n2}}}}} \\cdot {sd_fælles:.4f} = {se_fælles:.4f}$\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",
|
||||
"$= {middel1} - {middel2} \\pm {t_værdi:.3f} \\cdot {se_fælles:.3f}$\n",
|
||||
"\n",
|
||||
"$= {middel_dif:.3f} \\pm {t_se:.3f} = \\left[{middel_dif - t_se:.3f}\\ ;\\ {middel_dif + t_se:.3f}\\right]$\n",
|
||||
"\"\"\"\n",
|
||||
"))\n",
|
||||
"\n",
|
||||
"if np.sign(interval_lav) != np.sign(interval_høj):\n",
|
||||
" display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"Da $0$ er inkluderet i $95\\%CI$, kan der ikke siges at være signifikant forskel på middelværdierne.\n",
|
||||
"\"\"\"\n",
|
||||
" ))\n",
|
||||
"else:\n",
|
||||
" display(Markdown(\n",
|
||||
" rf\"\"\"\n",
|
||||
"Da $0$ ikke er inkluderet i $95\\%CI$, kan der siges at være signifikant forskel på middelværdierne.\n",
|
||||
"\"\"\"\n",
|
||||
" ))"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "984d104a",
|
||||
"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
|
||||
}
|
||||
Loading…
Reference in New Issue