Bootstrap-t-student/bootstrap-t.ipynb

738 lines
34 KiB
Plaintext
Raw Normal View History

2022-05-11 15:02:15 +02:00
{
"cells": [
2022-05-13 22:06:56 +02:00
{
"cell_type": "markdown",
2022-05-17 17:27:59 +02:00
"metadata": {},
2022-05-13 22:06:56 +02:00
"source": [
2022-05-17 17:27:59 +02:00
"# Projekt - Test t studenta\n",
"\n",
"- Marcin Kostrzewski\n",
"- Krystian Wasilewski\n",
"- Mateusz Tylka\n",
"\n",
"## Test t studenta\n",
"\n",
"Metoda statystyczna służącą do porównania dwóch średnich między sobą gdy znamy liczbę badanych próbek, średnią arytmetyczną oraz wartość odchylenia standardowego lub wariancji.\n",
"Jest to jeden z mniej skomplikowanych i bardzo często wykorzystywanych testów statystycznych używanych do weryfikacji hipotez. Dzięki niemu możemy dowiedzieć się czy dwie różne średnie są różne niechcący (w wyniku przypadku) czy są różne istotnie statystycznie (np. z uwagi na naszą manipulację eksperymentalna).\n",
"Wyróżniamy 3 wersję testu t:\n",
"\n",
"1. test t Studenta dla jednej próby\n",
2022-05-18 11:20:39 +02:00
"2. test t Studenta dla prób niezależnych \n",
"3. test t Studenta dla prób zależnych"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test Shapiro Wilka\n",
2022-05-17 17:27:59 +02:00
"\n",
2022-05-18 11:20:39 +02:00
"Wszystkie rodzaje testów są testami parametrycznymi, a co za tym idzie nasze mierzone zmienne ilościowe powinny mieć rozkład normalny. \n",
"Dzięki testowi Shapiro Wilka możemy sprawdzić to założenie."
2022-05-16 23:34:31 +02:00
]
2022-05-13 22:06:56 +02:00
},
2022-05-18 06:51:04 +02:00
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-18 06:51:04 +02:00
"source": [
"## Testowanie hipotez metodą bootstrap\n",
"\n",
"**Bootstrap**  metoda szacowania (estymacji) wyników poprzez wielokrotne losowanie ze zwracaniem z próby. Polega ona na utworzeniu nowego rozkładu wyników, na podstawie posiadanych danych, poprzez wielokrotne losowanie wartości z posiadanej próby. Metoda ze zwracaniem polega na tym, że po wylosowaniu danej wartości, “wraca” ona z powrotem do zbioru.\n",
"\n",
"Metoda bootstrapowa znajduje zastosowanie w sytuacji, w której nie znamy rozkładu z populacji z której pochodzi próbka lub w przypadku rozkładów małych lub asymetrycznych. W takim wypadku, dzięki tej metodzie, wyniki testów parametrycznych i analiz opartych o modele liniowe są bardziej precyzyjne. Zazwyczaj losuje się wiele próbek, np. 2000 czy 5000."
2022-05-18 11:20:39 +02:00
]
2022-05-18 06:51:04 +02:00
},
2022-05-18 01:08:58 +02:00
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"# Definicje funkcji"
]
2022-05-18 01:08:58 +02:00
},
2022-05-13 22:06:56 +02:00
{
2022-05-17 17:27:59 +02:00
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 134,
2022-05-16 23:34:31 +02:00
"metadata": {
2022-05-17 17:27:59 +02:00
"pycharm": {
"name": "#%%\n"
}
2022-05-16 23:34:31 +02:00
},
2022-05-17 17:27:59 +02:00
"outputs": [],
2022-05-13 22:06:56 +02:00
"source": [
2022-05-17 17:27:59 +02:00
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
2022-05-17 21:38:59 +02:00
"from enum import Enum\n",
2022-05-17 21:49:11 +02:00
"from scipy.stats import ttest_ind, ttest_1samp, ttest_rel, shapiro"
2022-05-16 23:34:31 +02:00
]
2022-05-13 22:06:56 +02:00
},
2022-05-11 15:02:15 +02:00
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 135,
2022-05-17 17:27:59 +02:00
"metadata": {},
2022-05-17 13:58:25 +02:00
"outputs": [],
"source": [
2022-05-18 01:08:58 +02:00
"dataset = pd.read_csv('experiment_data.csv') # TODO: del?"
2022-05-17 17:27:59 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 136,
2022-05-17 17:27:59 +02:00
"metadata": {},
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"class Alternatives(Enum):\n",
" LESS = 'less'\n",
" GREATER = 'greater'"
2022-05-17 17:27:59 +02:00
]
2022-05-17 13:58:25 +02:00
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 137,
2022-05-17 17:27:59 +02:00
"metadata": {},
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"def calculate_t_difference(t_stat_sample, t_stat_list, alternative):\n",
" \"\"\"\n",
" Funkcja oblicza procent statystyk testowych powstałych z prób bootstrapowych, \n",
" które róznią się od statystyki testowej powstałej ze zbioru według hipotezy alternatywnej.\n",
" \"\"\"\n",
" all_stats = len(t_stat_list)\n",
" stats_different_count = 0\n",
" for t_stat_boot in t_stat_list:\n",
2022-05-18 11:20:39 +02:00
" if alternative is Alternatives.LESS and t_stat_boot > t_stat_sample:\n",
2022-05-17 19:40:13 +02:00
" stats_different_count += 1 \n",
2022-05-18 11:20:39 +02:00
" elif alternative is Alternatives.GREATER and t_stat_boot < t_stat_sample:\n",
2022-05-17 19:40:13 +02:00
" stats_different_count += 1\n",
" return stats_different_count / all_stats"
2022-05-17 17:27:59 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 138,
2022-05-11 15:02:15 +02:00
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"def t_test_1_samp(sample_1, population_mean=None, alternative=Alternatives.LESS):\n",
2022-05-17 17:27:59 +02:00
" \"\"\"\n",
2022-05-17 19:40:13 +02:00
" Funkcja przeprowadza test T-studenta dla jednej zmiennej.\n",
2022-05-17 17:27:59 +02:00
" \"\"\"\n",
2022-05-17 19:40:13 +02:00
" t_stat_from_sample, _ = ttest_1samp(a=sample_1, popmean=population_mean, alternative=alternative.value)\n",
" t_stat_list = get_t_stats(sample_1, t_stat_fn=ttest_1samp, alternative=alternative, population_mean=population_mean)\n",
"\n",
" p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n",
2022-05-17 17:27:59 +02:00
"\n",
2022-05-17 20:56:02 +02:00
" return p, t_stat_from_sample, t_stat_list"
2022-05-17 19:40:13 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 139,
2022-05-17 19:40:13 +02:00
"metadata": {},
"outputs": [],
"source": [
"def t_test_ind(sample_1, sample_2, alternative=Alternatives.LESS):\n",
" \"\"\"\n",
" Funkcja przeprowadza test T-studenta dla dwóch zmiennych niezależnych.\n",
" \"\"\"\n",
" t_stat_from_sample, _ = ttest_ind(sample_1, sample_2, alternative=alternative.value)\n",
" t_stat_list = get_t_stats(sample_1, sample_2, alternative=alternative, t_stat_fn=ttest_ind)\n",
2022-05-17 17:27:59 +02:00
"\n",
2022-05-17 19:40:13 +02:00
" p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n",
2022-05-17 17:27:59 +02:00
"\n",
2022-05-17 20:56:02 +02:00
" return p, t_stat_from_sample, t_stat_list"
2022-05-17 17:27:59 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 140,
2022-05-17 17:27:59 +02:00
"metadata": {},
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"def t_test_dep(sample_1, sample_2, alternative=Alternatives.LESS):\n",
" \"\"\"\n",
" Funkcja przeprowadza test T-studenta dla dwóch zmiennych zależnych.\n",
" \"\"\"\n",
" t_stat_list = get_t_stats(sample_1, sample_2, alternative=alternative, t_stat_fn=ttest_rel)\n",
" t_stat_from_sample, _ = ttest_rel(sample_1, sample_2, alternative=alternative.value)\n",
"\n",
" p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n",
"\n",
2022-05-17 20:56:02 +02:00
" return p, t_stat_from_sample, t_stat_list"
2022-05-17 19:40:13 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 141,
2022-05-17 19:40:13 +02:00
"metadata": {},
"outputs": [],
"source": [
"def get_t_stats(sample_1, sample_2=None, t_stat_fn=ttest_1samp, alternative=Alternatives.LESS, population_mean=None):\n",
2022-05-17 17:27:59 +02:00
" \"\"\"Funkcja oblicza listę statystyk testowych dla każdej próbki bootstrapowej wybranej na podstawie danych sample_1 i sample_2\"\"\"\n",
" t_stat_list = []\n",
"\n",
" # One sample test\n",
2022-05-17 19:40:13 +02:00
" if t_stat_fn is ttest_1samp and sample_2 is None:\n",
2022-05-17 17:27:59 +02:00
" if not population_mean:\n",
" raise Exception(\"population_mean not provided\")\n",
" for bootstrap in generate_bootstraps(sample_1):\n",
2022-05-17 19:40:13 +02:00
" stat, _ = t_stat_fn(bootstrap, population_mean, alternative=alternative.value)\n",
2022-05-17 17:27:59 +02:00
" t_stat_list.append(stat)\n",
" return t_stat_list\n",
"\n",
" # Two sample test\n",
2022-05-17 21:38:59 +02:00
" for bootstrap_sample in generate_bootstraps(pd.concat((sample_1, sample_2), ignore_index=True)):\n",
" bootstrap_1 = bootstrap_sample.iloc[: len(bootstrap_sample) // 2]\n",
" bootstrap_2 = bootstrap_sample.iloc[len(bootstrap_sample) // 2 :]\n",
2022-05-17 19:40:13 +02:00
" stat, _ = t_stat_fn(bootstrap_1, bootstrap_2, alternative=alternative.value)\n",
2022-05-17 17:27:59 +02:00
" t_stat_list.append(stat)\n",
" return t_stat_list"
]
},
2022-05-17 21:08:54 +02:00
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 142,
2022-05-17 21:08:54 +02:00
"metadata": {},
"outputs": [],
"source": [
"def pretty_print_test(p, t_stat_from_sample, t_stat_list, thesis, alternative, max_print=5):\n",
" print('Wyniki bootstrapowej wersji testu T-studenta')\n",
" print()\n",
" print(f'Hipoteza: {thesis}')\n",
" if alternative is Alternatives.LESS:\n",
" print(f'Hipoteza alternatywna: średnia jest mniejsza')\n",
" else:\n",
" print(f'Hipoteza alternatywna: średnia jest większa')\n",
" print()\n",
" print(f'p: {p}')\n",
" print(f'Wartość statystyki testowej z próby: {t_stat_from_sample}')\n",
" print(f'Wartości statystyk z prób boostrapowych:')\n",
"\n",
" t_stat_list_len = len(t_stat_list)\n",
" for i in range(min(max_print, t_stat_list_len)):\n",
" print(f'{t_stat_list[i]}, ', end='')\n",
" if max_print < t_stat_list_len:\n",
" remaining = t_stat_list_len - max_print\n",
" print(f'... (i {remaining} pozostałych)')\n",
"\n",
" print()\n",
" print()"
]
},
2022-05-11 15:02:15 +02:00
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 143,
2022-05-11 15:02:15 +02:00
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
"outputs": [],
"source": [
"def generate_bootstraps(data, n_bootstraps=100):\n",
" data_size = data.shape[0]\n",
2022-05-13 22:06:56 +02:00
" for _ in range(n_bootstraps):\n",
" indices = np.random.choice(len(data), size=data_size)\n",
" yield data.iloc[indices, :]"
2022-05-11 15:02:15 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 144,
2022-05-16 23:34:31 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
2022-05-14 15:31:47 +02:00
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"def bootstrap_one_sample(sample, population_mean, alternative=Alternatives.LESS):\n",
2022-05-17 21:08:54 +02:00
" p, t, ts = t_test_1_samp(\n",
2022-05-17 19:40:13 +02:00
" sample_1=sample,\n",
" population_mean=population_mean,\n",
" alternative=alternative,\n",
2022-05-17 21:08:54 +02:00
" )\n",
" \n",
" pretty_print_test(p, t, ts, f'średnia jest równa {population_mean}', alternative)\n",
" print()\n",
" return p, t, ts"
2022-05-16 23:34:31 +02:00
]
},
2022-05-17 17:27:59 +02:00
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 145,
2022-05-17 17:27:59 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
2022-05-16 23:34:31 +02:00
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"def bootstrap_independent(sample_1, sample_2, alternative=Alternatives.LESS):\n",
2022-05-17 21:08:54 +02:00
" p, t, ts = t_test_ind(\n",
2022-05-17 17:27:59 +02:00
" sample_1=sample_1,\n",
" sample_2=sample_2,\n",
2022-05-17 19:40:13 +02:00
" alternative=alternative,\n",
2022-05-17 21:08:54 +02:00
" )\n",
" \n",
" pretty_print_test(p, t, ts, 'średnie są takie same', alternative)\n",
" return p, t, ts"
2022-05-16 23:34:31 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 146,
2022-05-14 17:09:29 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
2022-05-16 23:34:31 +02:00
},
"outputs": [],
"source": [
2022-05-17 19:40:13 +02:00
"def bootstrap_dependent(sample_1, sample_2, alternative=Alternatives.LESS):\n",
2022-05-17 21:08:54 +02:00
" p, t, ts = t_test_dep(\n",
2022-05-16 23:34:31 +02:00
" sample_1=sample_1,\n",
" sample_2=sample_2,\n",
2022-05-17 19:40:13 +02:00
" alternative=alternative,\n",
2022-05-17 21:08:54 +02:00
" )\n",
" \n",
" pretty_print_test(p, t, ts, 'średnie są takie same', alternative)\n",
" return p, t, ts"
2022-05-16 23:34:31 +02:00
]
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 147,
2022-05-11 15:02:15 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
2022-05-16 23:34:31 +02:00
},
2022-05-16 18:52:49 +02:00
"outputs": [],
2022-05-13 22:06:56 +02:00
"source": [
2022-05-18 01:08:58 +02:00
"def draw_distribution(stats, comparision_value):\n",
2022-05-16 18:52:49 +02:00
" \"\"\"\n",
" Funkcja rysuje rozkład statystyki testowej\n",
2022-05-17 16:21:32 +02:00
" @param stats: lista statystyk testowych\n",
2022-05-18 01:08:58 +02:00
" @param comparision_value: pierwotna próbka\n",
2022-05-16 18:52:49 +02:00
" \"\"\"\n",
" plt.hist(stats)\n",
2022-05-18 01:08:58 +02:00
" plt.axvline(comparision_value, color='red')\n",
2022-05-16 18:52:49 +02:00
" plt.xlabel('Test statistic value')\n",
" plt.ylabel('Frequency')\n",
" plt.show()"
2022-05-16 23:34:31 +02:00
]
},
2022-05-17 17:27:59 +02:00
{
"cell_type": "markdown",
2022-05-18 01:08:58 +02:00
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"# Wczytanie danych"
]
2022-05-17 17:27:59 +02:00
},
2022-05-16 23:34:31 +02:00
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 148,
2022-05-18 01:08:58 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
2022-05-17 21:38:59 +02:00
}
2022-05-18 11:20:39 +02:00
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 169.5557\n",
"dtype: float64\n",
"0 175.1417\n",
"dtype: float64\n",
"0 79.6342\n",
"dtype: float64\n",
"0 76.5602\n",
"dtype: float64\n"
]
}
],
"source": [
"dataset = pd.read_csv('experiment_data2.csv')\n",
"heights_female = pd.DataFrame(dataset['Female height'].to_numpy()) # xd\n",
"heights_male = pd.DataFrame(dataset['Male height'].to_numpy())\n",
"weights_before = pd.DataFrame(dataset['Weight before'].to_numpy())\n",
"weights_after = pd.DataFrame(dataset['Weight after'].to_numpy())\n",
"print(np.mean(heights_female))\n",
"print(np.mean(heights_male))\n",
"print(np.mean(weights_before))\n",
"print(np.mean(weights_after))\n"
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-18 01:08:58 +02:00
"source": [
"# Jedna próba\n",
"\n",
2022-05-18 11:20:39 +02:00
"**Test t Studenta dla jednej próby** wykorzystujemy gdy chcemy porównać średnią “teoretyczną” ze średnią, którą faktycznie możemy zaobserwować w naszej bazie danych. Średnia teoretyczna to średnia pochodząca z innych badań lub po prostu bez większych uzasadnień pochodząca z naszej głowy.\n",
"\n",
"Wyobraźmy sobie, że mamy dane z takimi zmiennymi jak wzrost pewnej grupy ludzi. Dzięki testowi t Studenta dla jednej próby możemy dowiedzieć się np. czy wzrost naszego młodszego brata wynoszący 155cm odbiega znacząco od średniej wzrostu tej grupy.\n",
"\n",
2022-05-18 01:08:58 +02:00
"### Hipoteza\n",
"\n",
2022-05-18 11:20:39 +02:00
"*H0: Badana próba została wylosowana z populacji, w której wzrost osób wynosi średnio 155cm.* \n",
"*H1: Badana próba nie została wylosowana z populacji gdzie średni wzrost wynosi 155cm.*\n",
"\n",
2022-05-18 06:37:27 +02:00
"### Sprawdzenie założeń\n"
2022-05-18 11:20:39 +02:00
]
2022-05-18 06:37:27 +02:00
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"## Test\n"
]
2022-05-18 06:37:27 +02:00
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": null,
2022-05-18 06:37:27 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
2022-05-18 11:20:39 +02:00
},
"outputs": [],
"source": []
2022-05-18 06:37:27 +02:00
},
{
"cell_type": "markdown",
2022-05-18 01:08:58 +02:00
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"## Wniosek"
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-17 21:38:59 +02:00
"source": [
2022-05-18 01:08:58 +02:00
"# Dwie próby niezależne\n",
2022-05-17 21:38:59 +02:00
"\n",
2022-05-18 11:20:39 +02:00
"**Test t Studenta dla prób niezależnych** jest najczęściej stosowaną metodą statystyczną w celu porównania średnich z dwóch niezależnych od siebie grup. Wykorzystujemy go gdy chcemy porównać dwie grupy pod względem jakiejś zmiennej ilościowej. Na przykład gdy chcemy porównać średni wzrost kobiet i mężczyzn w danej grupie.\n",
"Zazwyczaj dwie średnie z różnych od siebie grup będą się różnić. Test t Studenta powie nam jednak czy owe różnice są istotne statystycznie czy nie są przypadkowe.\n",
"Jeśli wynik testu t Studenta będzie istotny na poziomie p < 0,05 możemy odrzucić hipotezę zerową na rzecz hipotezy alternatywnej.\n",
2022-05-18 01:08:58 +02:00
"\n",
2022-05-18 11:20:39 +02:00
"## Hipoteza\n",
"\n",
"*H0: Średni wzrost w grupie mężczyzn jest taki sam jak średni w grupie kobiet. Hipoteza alternatywna z kolei* \n",
"*H1: Kobiety będą niższe od mężczyzn pod względem wzrostu.*\n",
"\n",
"## Sprawdzenie założeń\n",
"\n",
"Założenie o rozkładzie normalnym danych - sprawdzane testem Shapiro-Wilka"
]
},
{
"cell_type": "code",
"execution_count": 149,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"p = 0.791\n",
"p = 0.7535\n"
]
}
2022-05-18 06:37:27 +02:00
],
2022-05-18 11:20:39 +02:00
"source": [
"shapiro_test = shapiro(heights_female)\n",
"print(f\"p = {round(shapiro_test.pvalue,4)}\")\n",
"\n",
"shapiro_test = shapiro(heights_male)\n",
"print(f\"p = {round(shapiro_test.pvalue,4)}\")"
]
},
{
"cell_type": "markdown",
2022-05-18 06:37:27 +02:00
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"Wartości **p** w teście Shapiro-Wilka powyżej **0.05** -> Dane prawdopodobnie mają rozkład normalny"
]
2022-05-18 06:37:27 +02:00
},
{
"cell_type": "markdown",
2022-05-18 01:08:58 +02:00
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"## Test"
]
2022-05-18 01:08:58 +02:00
},
2022-05-18 06:37:27 +02:00
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 150,
2022-05-18 06:37:27 +02:00
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
2022-05-18 11:20:39 +02:00
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wyniki bootstrapowej wersji testu T-studenta\n",
"\n",
"Hipoteza: średnie są takie same\n",
"Hipoteza alternatywna: średnia jest mniejsza\n",
"\n",
"p: 0.0\n",
"Wartość statystyki testowej z próby: [8.04931557]\n",
"Wartości statystyk z prób boostrapowych:\n",
"[0.36930777], [0.23100612], [-0.6106529], [-0.47586438], [0.86529699], ... (i 95 pozostałych)\n",
"\n",
"\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"p, t, ts = bootstrap_independent(heights_male, heights_female)\n",
"ts = [x[0] for x in ts]\n",
"draw_distribution(ts, t)"
]
2022-05-18 06:37:27 +02:00
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"## Wniosek"
]
2022-05-18 06:37:27 +02:00
},
2022-05-18 01:08:58 +02:00
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-18 01:08:58 +02:00
"source": [
"# Dwie próby zależne\n",
"\n",
"W odróżnieniu od testu dla prób niezależnych, gdzie porównujemy dwie grupy, ten rodzaj testu stosujemy gdy poddajemy analizie tą samą pojedynczą grupę, ale dwukrotnie w czasie.\n",
"\n",
"**Przykład**: Porównane zostały wagi przed dietą i po diecie.\n"
2022-05-18 11:20:39 +02:00
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-18 01:08:58 +02:00
"source": [
"### Hipoteza\n",
"H0 - Średnia waga nie uległa zmianie po zastosowaniu diety\n",
"H1 - Średnia waga po diecie jest znacząco mniejsza od wagi przed dietą\n"
2022-05-18 11:20:39 +02:00
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-18 01:08:58 +02:00
"source": [
"\n",
"### Sprawdzenie założeń\n",
"\n",
"Założenie o rozkładzie normalnym danych - sprawdzane testem Shapiro-Wilka"
2022-05-18 11:20:39 +02:00
]
2022-05-17 21:38:59 +02:00
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 151,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
2022-05-17 21:38:59 +02:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2022-05-18 11:20:39 +02:00
"p = 0.3308\n",
"p = 0.4569\n"
2022-05-17 21:38:59 +02:00
]
}
],
"source": [
2022-05-18 01:08:58 +02:00
"shapiro_test = shapiro(weights_before)\n",
2022-05-18 11:20:39 +02:00
"print(f\"p = {round(shapiro_test.pvalue,4)}\")\n",
"\n",
"shapiro_test = shapiro(weights_after)\n",
2022-05-18 01:08:58 +02:00
"print(f\"p = {round(shapiro_test.pvalue,4)}\")"
2022-05-18 11:20:39 +02:00
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"Wartości **p** w teście Shapiro-Wilka powyżej **0.05** -> Dane prawdopodobnie mają rozkład normalny"
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": false
2022-05-18 11:20:39 +02:00
},
"source": [
"## Test"
]
2022-05-17 21:38:59 +02:00
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": 152,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
},
2022-05-17 21:38:59 +02:00
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
2022-05-17 21:08:54 +02:00
"Wyniki bootstrapowej wersji testu T-studenta\n",
"\n",
"Hipoteza: średnie są takie same\n",
"Hipoteza alternatywna: średnia jest mniejsza\n",
"\n",
2022-05-18 11:20:39 +02:00
"p: 0.0\n",
"Wartość statystyki testowej z próby: [48.30834167]\n",
2022-05-17 21:08:54 +02:00
"Wartości statystyk z prób boostrapowych:\n",
2022-05-18 11:20:39 +02:00
"[0.35583403], [0.29159863], [-1.32145739], [0.13260175], [0.79403136], ... (i 95 pozostałych)\n",
2022-05-17 21:38:59 +02:00
"\n",
"\n"
2022-05-16 18:52:49 +02:00
]
2022-05-18 01:08:58 +02:00
},
{
"data": {
2022-05-18 11:20:39 +02:00
"image/png": "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
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
2022-05-18 01:08:58 +02:00
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
2022-05-11 15:02:15 +02:00
}
],
"source": [
2022-05-18 01:08:58 +02:00
"p, t, ts = bootstrap_dependent(weights_before, weights_after)\n",
"ts = [x[0] for x in ts]\n",
"draw_distribution(ts, t)"
2022-05-18 11:20:39 +02:00
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "markdown",
2022-05-18 11:20:39 +02:00
"metadata": {
"collapsed": false
},
2022-05-18 01:08:58 +02:00
"source": [
"## Wniosek\n",
"\n",
"???"
2022-05-18 11:20:39 +02:00
]
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
2022-05-18 11:20:39 +02:00
},
"outputs": [],
"source": []
2022-05-18 01:08:58 +02:00
},
{
"cell_type": "code",
2022-05-18 11:20:39 +02:00
"execution_count": null,
2022-05-18 01:08:58 +02:00
"metadata": {
"pycharm": {
"name": "#%%\n"
}
},
2022-05-18 11:20:39 +02:00
"outputs": [],
"source": []
2022-05-11 15:02:15 +02:00
}
],
"metadata": {
"interpreter": {
2022-05-18 11:20:39 +02:00
"hash": "1b132c2ed43285dcf39f6d01712959169a14a721cf314fe69015adab49bb1fd1"
2022-05-11 15:02:15 +02:00
},
"kernelspec": {
2022-05-17 19:40:13 +02:00
"display_name": "Python 3.8.10 64-bit",
2022-05-18 11:20:39 +02:00
"language": "python",
2022-05-17 20:56:02 +02:00
"name": "python3"
2022-05-11 15:02:15 +02:00
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
2022-05-18 11:20:39 +02:00
"version": "3.8.10"
2022-05-17 21:49:11 +02:00
}
2022-05-11 15:02:15 +02:00
},
"nbformat": 4,
"nbformat_minor": 2
2022-05-18 11:20:39 +02:00
}