From 7abf326bbb84126856483bb21ad009cfb7fa16d4 Mon Sep 17 00:00:00 2001 From: emkarcinos Date: Tue, 17 May 2022 19:40:13 +0200 Subject: [PATCH 1/4] Rewritten to proper bootstrap --- bootstrap-t.ipynb | 393 +++++++++++++++------------------------------- 1 file changed, 128 insertions(+), 265 deletions(-) diff --git a/bootstrap-t.ipynb b/bootstrap-t.ipynb index a01c1f9..7c56b38 100644 --- a/bootstrap-t.ipynb +++ b/bootstrap-t.ipynb @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 313, "metadata": { "pycharm": { "name": "#%%\n" @@ -35,6 +35,7 @@ "source": [ "import numpy as np\n", "import pandas as pd\n", + "from enum import Enum\n", "from math import sqrt\n", "from scipy import stats\n", "from scipy.stats import sem\n", @@ -46,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 49, + "execution_count": 314, "metadata": {}, "outputs": [], "source": [ @@ -55,29 +56,39 @@ }, { "cell_type": "code", - "execution_count": 50, + "execution_count": 315, "metadata": {}, "outputs": [], "source": [ - "def calculate_p(t_stat, df):\n", - " \"\"\"Funkcja oblicza wartość *p* na podstawie statystyki testowej i stopni swobody\"\"\"\n", - " return (1.0 - t.cdf(abs(t_stat), df)) * 2.0" + "class Alternatives(Enum):\n", + " LESS = 'less'\n", + " GREATER = 'greater'" ] }, { "cell_type": "code", - "execution_count": 51, + "execution_count": 316, "metadata": {}, "outputs": [], "source": [ - "def calculate_cv(df, alpha=0.05):\n", - " \"\"\"Funkcja oblicza wartość krytyczną (critical value)\"\"\"\n", - " return t.ppf(1.0 - alpha, df)" + "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", + " if alternative is Alternatives.LESS and t_stat_boot < t_stat_sample:\n", + " stats_different_count += 1 \n", + " elif alternative is Alternatives.GREATER and t_stat_boot > t_stat_sample:\n", + " stats_different_count += 1\n", + " return stats_different_count / all_stats" ] }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 317, "metadata": { "pycharm": { "name": "#%%\n" @@ -85,53 +96,77 @@ }, "outputs": [], "source": [ - "def t_test(sample_1, sample_2=None, df_fn=df_single, t_stat_fn=t_stat_single, population_mean=None, alpha=0.05):\n", + "def t_test_1_samp(sample_1, population_mean=None, alternative=Alternatives.LESS):\n", " \"\"\"\n", - " Funkcja przeprowadza test T-studenta dla dwóch zmiennych.\n", - " liczba kolumn wynosi 1, test jest przeprowadzany dla jednej zmiennej.\n", - " @param df_fn - funkcja obliczająca stopnie swobody\n", - " @param t_stat_fn - funkcja obliczająca statystykę T\n", + " Funkcja przeprowadza test T-studenta dla jednej zmiennej.\n", " \"\"\"\n", - " t_stat_list = get_t_stats(sample_1, sample_2, t_stat_fn, population_mean=population_mean)\n", - " t_stat_sum = sum(t_stat_list)\n", + " 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", - " data_size = sample_1.shape[0]\n", + " p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n", "\n", - " t_stat = t_stat_sum / data_size\n", - " # TODO: dolna i górna opcja dają inne wyniki z jakiegoś powodu (???)\n", - " t_stat = mean(t_stat_list)\n", - "\n", - " if sample_2 is None:\n", - " df = df_fn(sample_1)\n", - " else:\n", - " df = df_fn(sample_1, sample_2)\n", - " cv = calculate_cv(df, alpha)\n", - " p = calculate_p(t_stat, df)\n", - " return t_stat, df, cv, p, t_stat_list" + " return p, t_stat_list" ] }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 318, "metadata": {}, "outputs": [], "source": [ - "def get_t_stats(sample_1, sample_2=None, t_stat_fn=t_stat_single, population_mean=None):\n", + "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", + "\n", + " p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n", + "\n", + " return p, t_stat_list" + ] + }, + { + "cell_type": "code", + "execution_count": 319, + "metadata": {}, + "outputs": [], + "source": [ + "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", + " return p, t_stat_list" + ] + }, + { + "cell_type": "code", + "execution_count": 320, + "metadata": {}, + "outputs": [], + "source": [ + "def get_t_stats(sample_1, sample_2=None, t_stat_fn=ttest_1samp, alternative=Alternatives.LESS, population_mean=None):\n", " \"\"\"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", - " if t_stat_fn==t_stat_single:\n", + " if t_stat_fn is ttest_1samp and sample_2 is None:\n", " if not population_mean:\n", " raise Exception(\"population_mean not provided\")\n", " for bootstrap in generate_bootstraps(sample_1):\n", - " stat = t_stat_fn(bootstrap, population_mean)\n", + " stat, _ = t_stat_fn(bootstrap, population_mean, alternative=alternative.value)\n", " t_stat_list.append(stat)\n", " return t_stat_list\n", "\n", " # Two sample test\n", - " for bootstrap_1, bootstrap_2 in zip(generate_bootstraps(sample_1), generate_bootstraps(sample_2)):\n", - " stat = t_stat_fn(bootstrap_1, bootstrap_2)\n", + " for bootstrap_sample in generate_bootstraps(pd.concat((sample_1, sample_2))):\n", + " bootstrap_1, bootstrap_2 = bootstrap_sample.iloc[: round(len(bootstrap_sample) * 0.5)], bootstrap_sample.iloc[: round(-len(bootstrap_sample) * 0.5)]\n", + " stat, _ = t_stat_fn(bootstrap_1, bootstrap_2, alternative=alternative.value)\n", " t_stat_list.append(stat)\n", " return t_stat_list" ] @@ -145,34 +180,6 @@ "Wszystkie rodzaje testów są testami parametrycznymi, a co za tym idzie nasze mierzone zmienne ilościowe powinny mieć rozkład normalny." ] }, - { - "cell_type": "code", - "execution_count": 69, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0.9606528878211975\n", - "2.666284970587185e-10\n", - "Dane nie mają rozkładu normalnego.\n" - ] - } - ], - "source": [ - "# TODO: Test Shapiro Wilka sprawdzający czy nasze dane mają rozkład normalny\n", - "x = dataset['Height'].to_numpy()\n", - "shapiro_test = stats.shapiro(x)\n", - "print(shapiro_test.statistic)\n", - "print(shapiro_test.pvalue)\n", - "\n", - "if shapiro_test.pvalue > shapiro_test.statistic:\n", - " print(\"Dane mają rozkład normalny.\")\n", - "else:\n", - " print(\"Dane nie mają rozkładu normalnego.\")" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -186,7 +193,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 321, "metadata": { "pycharm": { "name": "#%%\n" @@ -214,7 +221,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 322, "metadata": { "collapsed": false, "pycharm": { @@ -223,44 +230,11 @@ }, "outputs": [], "source": [ - "def t_stat_single(sample, population_mean):\n", - " \"\"\"Funkcja oblicza wartość statystyki testowej dla jednej próbki\"\"\"\n", - " if sample.empty:\n", - " raise Exception(\"Empty sample\")\n", - " sample = sample['Height'].values.tolist()\n", - " sample_size = len(sample)\n", - " return (mean(sample) - population_mean) / (stdev(sample) / sqrt(sample_size))" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [], - "source": [ - "def df_single(sample_1):\n", - " \"\"\"Funkcja oblicza stopnie swobody dla jednej próbki\"\"\"\n", - " # TODO: I have no clue what to return from here\n", - " return len(sample_1)" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "def bootstrap_one_sample(sample, population_mean):\n", - " return t_test(\n", + "def bootstrap_one_sample(sample, population_mean, alternative=Alternatives.LESS):\n", + " return t_test_1_samp(\n", " sample_1=sample,\n", - " df_fn=df_single,\n", - " t_stat_fn=t_stat_single,\n", - " population_mean=population_mean\n", + " population_mean=population_mean,\n", + " alternative=alternative,\n", " )" ] }, @@ -273,7 +247,18 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 323, + "metadata": {}, + "outputs": [], + "source": [ + "dummy = pd.DataFrame([1, 2, 3, 4, 5])\n", + "dummy2 = pd.DataFrame([4, 5, 6, 7, 8])\n", + "dummy3 = pd.DataFrame([1, 3 , 3, 4, 6])" + ] + }, + { + "cell_type": "code", + "execution_count": 324, "metadata": { "collapsed": false, "pycharm": { @@ -282,19 +267,18 @@ }, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "t: 6.854929920812628, df: 500, cv: 1.6479068539295045, p: 2.1091128843409024e-11\n", - "\n" + "p: 0.73\n" ] } ], "source": [ "#TODO: poprawić kod aby można było podawać kolumny\n", "\n", - "t_stat, df, cv, p, _ = bootstrap_one_sample(dataset, 165)\n", - "pretty_print_full_stats(t_stat, df, cv, p)" + "p, _ = bootstrap_one_sample(dummy, 165)\n", + "print(f'p: {p}')" ] }, { @@ -318,7 +302,7 @@ }, { "cell_type": "code", - "execution_count": 159, + "execution_count": 325, "metadata": { "collapsed": false, "pycharm": { @@ -327,44 +311,11 @@ }, "outputs": [], "source": [ - "def t_stat_ind(sample_1, sample_2):\n", - " \"\"\"Funkcja oblicza wartość statystyki testowej dla dwóch próbek niezależnych\"\"\"\n", - " if sample_1.empty or sample_2.empty:\n", - " raise Exception(\"Empty sample\")\n", - " sample_1 = sample_1[0].values.tolist()\n", - " sample_2 = sample_2[0].values.tolist()\n", - " sed = sqrt(sem(sample_1)**2 + sem(sample_2)**2)\n", - " return (mean(sample_1) - mean(sample_2)) / sed" - ] - }, - { - "cell_type": "code", - "execution_count": 162, - "metadata": {}, - "outputs": [], - "source": [ - "def df_ind(sample_1, sample_2):\n", - " \"\"\"Funkcja oblicza stopnie swobody dla dwóch próbek niezależnych\"\"\"\n", - " return len(sample_1) + len(sample_2) - 2" - ] - }, - { - "cell_type": "code", - "execution_count": 167, - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "def bootstrap_independent(sample_1, sample_2):\n", - " return t_test(\n", + "def bootstrap_independent(sample_1, sample_2, alternative=Alternatives.LESS):\n", + " return t_test_ind(\n", " sample_1=sample_1,\n", " sample_2=sample_2,\n", - " df_fn=df_ind,\n", - " t_stat_fn=t_stat_ind\n", + " alternative=alternative,\n", " )" ] }, @@ -397,7 +348,7 @@ }, { "cell_type": "code", - "execution_count": 160, + "execution_count": 326, "metadata": { "collapsed": false, "pycharm": { @@ -406,48 +357,11 @@ }, "outputs": [], "source": [ - "def t_stat_dep(sample_1, sample_2, mu=0):\n", - " \"\"\"Funkcja oblicza wartość statystyki testowej dla dwóch próbek zależnych\"\"\"\n", - " if sample_1.empty or sample_2.empty:\n", - " raise Exception(\"Empty sample\")\n", - " sample_1 = sample_1[0].values.tolist()\n", - " sample_2 = sample_2[0].values.tolist()\n", - " differences = [x_1 - x_2 for x_1, x_2 in zip(sample_1, sample_2)]\n", - " sample_size = len(sample_1)\n", - " return (mean(differences) - mu) / (stdev(differences) / sqrt(sample_size))" - ] - }, - { - "cell_type": "code", - "execution_count": 161, - "metadata": {}, - "outputs": [], - "source": [ - "def df_dep(sample_1, sample_2):\n", - " \"\"\"Funkcja oblicza stopnie swobody dla dwóch próbek zależnych\"\"\"\n", - " l1, l2 = len(sample_1), len(sample_2)\n", - " if l1 != l2:\n", - " raise Exception(\"Samples aren't of equal length\")\n", - " return l1" - ] - }, - { - "cell_type": "code", - "execution_count": 168, - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [], - "source": [ - "def bootstrap_dependent(sample_1, sample_2):\n", - " return t_test(\n", + "def bootstrap_dependent(sample_1, sample_2, alternative=Alternatives.LESS):\n", + " return t_test_dep(\n", " sample_1=sample_1,\n", " sample_2=sample_2,\n", - " df_fn=df_dep,\n", - " t_stat_fn=t_stat_dep\n", + " alternative=alternative,\n", " )" ] }, @@ -476,7 +390,7 @@ }, { "cell_type": "code", - "execution_count": 171, + "execution_count": 327, "metadata": { "collapsed": false, "pycharm": { @@ -505,100 +419,45 @@ }, { "cell_type": "code", - "execution_count": 31, - "metadata": { - "collapsed": false, - "pycharm": { - "name": "#%%\n" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Statystyka testowa dla jednej próby:\n", - "1.414213562373095 - z naszej funkcji\n", - "[1.41421356] - z gotowej biblioteki\n", - "\n", - "Statystyka testowa dla dwóch prób niezależnych:\n", - "-3.0 - z naszej funkcji\n", - "[-3.] - z gotowej biblioteki\n", - "\n", - "Statystyka testowa dla dwóch prób zależnych:\n", - "-1.6329931618554525 - z naszej funkcji\n", - "[-1.63299316] - z gotowej biblioteki\n", - "\n" - ] - } - ], - "source": [ - "# Testy dla samych statystyk testowych\n", - "def pretty_print_stats(t_stat_selfmade, t_stat_lib, suffix):\n", - " print(f'Statystyka testowa dla {suffix}:')\n", - " print(t_stat_selfmade, '- z naszej funkcji')\n", - " print(t_stat_lib, '- z gotowej biblioteki')\n", - " print()\n", - " \n", - "dummy = pd.DataFrame([1, 2, 3, 4, 5])\n", - "dummy2 = pd.DataFrame([4, 5, 6, 7, 8])\n", - "dummy3 = pd.DataFrame([1, 3 , 3, 4, 6])\n", - "\n", - "t_stat_selfmade = t_stat_single(dummy, 2)\n", - "t_stat_lib, _ = ttest_1samp(dummy, 2)\n", - "pretty_print_stats(t_stat_selfmade, t_stat_lib, 'jednej próby')\n", - "\n", - "t_stat_selfmade = t_stat_ind(dummy, dummy2)\n", - "t_stat_lib, _ = ttest_ind(dummy, dummy2)\n", - "pretty_print_stats(t_stat_selfmade, t_stat_lib, 'dwóch prób niezależnych')\n", - "\n", - "t_stat_selfmade = t_stat_dep(dummy, dummy3)\n", - "t_stat_lib, _ = ttest_rel(dummy, dummy3)\n", - "pretty_print_stats(t_stat_selfmade, t_stat_lib, 'dwóch prób zależnych')" - ] - }, - { - "cell_type": "code", - "execution_count": 39, + "execution_count": 328, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "\n", "Statystyki dla jednej próby:\n", - "t: 1.8073147056683616, df: 5, cv: 2.015048372669157, p: 0.13052275003443325\n", - "\n", + "0.44\n", "Statystyki dla dwóch prób zależnych:\n", - "t: 3.0790273716290404, df: 5, cv: 2.015048372669157, p: 0.027500015466573435\n", - "\n", + "0.0\n", "Statystyki dla dwóch prób niezależnych:\n", - "t: 2.8109511013364576, df: 8, cv: 1.8595480375228421, p: 0.02280961069987497\n", - "\n" + "1.0\n" ] } ], "source": [ "# Testy z bootstrappowaniem\n", "\n", - "def pretty_print_full_stats(t_stat, df, cv, p):\n", - " print(f't: {t_stat}, df: {df}, cv: {cv}, p: {p}\\n')\n", - "\n", - "print(type(dummy))\n", "\n", "print('Statystyki dla jednej próby:')\n", - "t_stat, df, cv, p, _ = bootstrap_one_sample(dummy, 2)\n", - "pretty_print_full_stats(t_stat, df, cv, p)\n", + "p, _ = bootstrap_one_sample(dummy, 2)\n", + "print(f'p {p}')\n", "\n", "print('Statystyki dla dwóch prób zależnych:')\n", - "t_stat, df, cv, p, _ = bootstrap_dependent(dummy2, dummy3)\n", - "pretty_print_full_stats(t_stat, df, cv, p)\n", + "p, _ = bootstrap_dependent(dummy2, dummy3)\n", + "print(f'p {p}')\n", "\n", "print('Statystyki dla dwóch prób niezależnych:')\n", - "t_stat, df, cv, p, _ = bootstrap_independent(dummy2, dummy3)\n", - "pretty_print_full_stats(t_stat, df, cv, p)" + "p, _ = bootstrap_independent(dummy2, dummy3)\n", + "print(f'p {p}')" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] } ], "metadata": { @@ -606,9 +465,13 @@ "hash": "11938c6bc6919ae2720b4d5011047913343b08a43b18698fd82dedb0d4417594" }, "kernelspec": { - "display_name": "Python 3.9.1 64-bit", - "language": "python", - "name": "python3" + "name": "python3", + "display_name": "Python 3.8.10 64-bit", + "metadata": { + "interpreter": { + "hash": "767d51c1340bd893661ea55ea3124f6de3c7a262a8b4abca0554b478b1e2ff90" + } + } }, "language_info": { "codemirror_mode": { @@ -620,7 +483,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.1" + "version": "3.8.10-final" }, "orig_nbformat": 4 }, -- 2.20.1 From fdb95361cba6f0eaf6701c56058813b6bd8fd9db Mon Sep 17 00:00:00 2001 From: Marcin Kostrzewski Date: Tue, 17 May 2022 20:56:02 +0200 Subject: [PATCH 2/4] Return sample t-stat --- bootstrap-t.ipynb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/bootstrap-t.ipynb b/bootstrap-t.ipynb index 7c56b38..6631a26 100644 --- a/bootstrap-t.ipynb +++ b/bootstrap-t.ipynb @@ -105,7 +105,7 @@ "\n", " p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n", "\n", - " return p, t_stat_list" + " return p, t_stat_from_sample, t_stat_list" ] }, { @@ -123,7 +123,7 @@ "\n", " p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n", "\n", - " return p, t_stat_list" + " return p, t_stat_from_sample, t_stat_list" ] }, { @@ -141,7 +141,7 @@ "\n", " p = calculate_t_difference(t_stat_from_sample, t_stat_list, alternative)\n", "\n", - " return p, t_stat_list" + " return p, t_stat_from_sample, t_stat_list" ] }, { @@ -267,8 +267,8 @@ }, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "p: 0.73\n" ] @@ -423,8 +423,8 @@ "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ "Statystyki dla jednej próby:\n", "0.44\n", @@ -465,13 +465,13 @@ "hash": "11938c6bc6919ae2720b4d5011047913343b08a43b18698fd82dedb0d4417594" }, "kernelspec": { - "name": "python3", "display_name": "Python 3.8.10 64-bit", "metadata": { "interpreter": { "hash": "767d51c1340bd893661ea55ea3124f6de3c7a262a8b4abca0554b478b1e2ff90" } - } + }, + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -489,4 +489,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} -- 2.20.1 From 39c9a260e1113b388aead3dec0cc14e09a3fc2be Mon Sep 17 00:00:00 2001 From: Marcin Kostrzewski Date: Tue, 17 May 2022 21:08:54 +0200 Subject: [PATCH 3/4] Add pretty prints --- bootstrap-t.ipynb | 138 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 103 insertions(+), 35 deletions(-) diff --git a/bootstrap-t.ipynb b/bootstrap-t.ipynb index 6631a26..53b4b3c 100644 --- a/bootstrap-t.ipynb +++ b/bootstrap-t.ipynb @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 313, + "execution_count": 61, "metadata": { "pycharm": { "name": "#%%\n" @@ -47,7 +47,7 @@ }, { "cell_type": "code", - "execution_count": 314, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ @@ -56,7 +56,7 @@ }, { "cell_type": "code", - "execution_count": 315, + "execution_count": 63, "metadata": {}, "outputs": [], "source": [ @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 316, + "execution_count": 64, "metadata": {}, "outputs": [], "source": [ @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 317, + "execution_count": 65, "metadata": { "pycharm": { "name": "#%%\n" @@ -110,7 +110,7 @@ }, { "cell_type": "code", - "execution_count": 318, + "execution_count": 66, "metadata": {}, "outputs": [], "source": [ @@ -128,7 +128,7 @@ }, { "cell_type": "code", - "execution_count": 319, + "execution_count": 67, "metadata": {}, "outputs": [], "source": [ @@ -146,7 +146,7 @@ }, { "cell_type": "code", - "execution_count": 320, + "execution_count": 68, "metadata": {}, "outputs": [], "source": [ @@ -171,6 +171,36 @@ " return t_stat_list" ] }, + { + "cell_type": "code", + "execution_count": 69, + "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()" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -193,7 +223,7 @@ }, { "cell_type": "code", - "execution_count": 321, + "execution_count": 70, "metadata": { "pycharm": { "name": "#%%\n" @@ -221,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 322, + "execution_count": 71, "metadata": { "collapsed": false, "pycharm": { @@ -231,11 +261,15 @@ "outputs": [], "source": [ "def bootstrap_one_sample(sample, population_mean, alternative=Alternatives.LESS):\n", - " return t_test_1_samp(\n", + " p, t, ts = t_test_1_samp(\n", " sample_1=sample,\n", " population_mean=population_mean,\n", " alternative=alternative,\n", - " )" + " )\n", + " \n", + " pretty_print_test(p, t, ts, f'średnia jest równa {population_mean}', alternative)\n", + " print()\n", + " return p, t, ts" ] }, { @@ -247,7 +281,7 @@ }, { "cell_type": "code", - "execution_count": 323, + "execution_count": 72, "metadata": {}, "outputs": [], "source": [ @@ -258,7 +292,7 @@ }, { "cell_type": "code", - "execution_count": 324, + "execution_count": 73, "metadata": { "collapsed": false, "pycharm": { @@ -270,15 +304,22 @@ "name": "stdout", "output_type": "stream", "text": [ - "p: 0.73\n" + "Wyniki bootstrapowej wersji testu T-studenta\n", + "\n", + "Hipoteza: średnia jest równa 165\n", + "Hipoteza alternatywna: średnia jest mniejsza\n", + "\n", + "p: 0.58\n", + "Wartość statystyki testowej z próby: [-229.1025971]\n", + "Wartości statystyk z prób boostrapowych:\n", + "[-316.92367438], [-406.5], [-201.5], [-243.92267776], [-330.27286699], ... (i 95 pozostałych)\n" ] } ], "source": [ "#TODO: poprawić kod aby można było podawać kolumny\n", "\n", - "p, _ = bootstrap_one_sample(dummy, 165)\n", - "print(f'p: {p}')" + "p, t, ts = bootstrap_one_sample(dummy, 165)" ] }, { @@ -302,7 +343,7 @@ }, { "cell_type": "code", - "execution_count": 325, + "execution_count": 74, "metadata": { "collapsed": false, "pycharm": { @@ -312,11 +353,14 @@ "outputs": [], "source": [ "def bootstrap_independent(sample_1, sample_2, alternative=Alternatives.LESS):\n", - " return t_test_ind(\n", + " p, t, ts = t_test_ind(\n", " sample_1=sample_1,\n", " sample_2=sample_2,\n", " alternative=alternative,\n", - " )" + " )\n", + " \n", + " pretty_print_test(p, t, ts, 'średnie są takie same', alternative)\n", + " return p, t, ts" ] }, { @@ -348,7 +392,7 @@ }, { "cell_type": "code", - "execution_count": 326, + "execution_count": 75, "metadata": { "collapsed": false, "pycharm": { @@ -358,11 +402,14 @@ "outputs": [], "source": [ "def bootstrap_dependent(sample_1, sample_2, alternative=Alternatives.LESS):\n", - " return t_test_dep(\n", + " p, t, ts = t_test_dep(\n", " sample_1=sample_1,\n", " sample_2=sample_2,\n", " alternative=alternative,\n", - " )" + " )\n", + " \n", + " pretty_print_test(p, t, ts, 'średnie są takie same', alternative)\n", + " return p, t, ts" ] }, { @@ -390,7 +437,7 @@ }, { "cell_type": "code", - "execution_count": 327, + "execution_count": 76, "metadata": { "collapsed": false, "pycharm": { @@ -419,7 +466,7 @@ }, { "cell_type": "code", - "execution_count": 328, + "execution_count": 77, "metadata": {}, "outputs": [ { @@ -427,11 +474,35 @@ "output_type": "stream", "text": [ "Statystyki dla jednej próby:\n", - "0.44\n", + "Wyniki bootstrapowej wersji testu T-studenta\n", + "\n", + "Hipoteza: średnia jest równa 2\n", + "Hipoteza alternatywna: średnia jest mniejsza\n", + "\n", + "p: 0.52\n", + "Wartość statystyki testowej z próby: [1.41421356]\n", + "Wartości statystyk z prób boostrapowych:\n", + "[-0.53452248], [0.], [-1.63299316], [1.5], [2.3590713], ... (i 95 pozostałych)\n", "Statystyki dla dwóch prób zależnych:\n", - "0.0\n", + "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: [10.61445555]\n", + "Wartości statystyk z prób boostrapowych:\n", + "[nan], [nan], [nan], [nan], [nan], ... (i 95 pozostałych)\n", "Statystyki dla dwóch prób niezależnych:\n", - "1.0\n" + "Wyniki bootstrapowej wersji testu T-studenta\n", + "\n", + "Hipoteza: średnie są takie same\n", + "Hipoteza alternatywna: średnia jest mniejsza\n", + "\n", + "p: 1.0\n", + "Wartość statystyki testowej z próby: [2.4140394]\n", + "Wartości statystyk z prób boostrapowych:\n", + "[0.], [0.], [0.], [0.], [0.], ... (i 95 pozostałych)\n" ] } ], @@ -440,16 +511,13 @@ "\n", "\n", "print('Statystyki dla jednej próby:')\n", - "p, _ = bootstrap_one_sample(dummy, 2)\n", - "print(f'p {p}')\n", + "p, t, ts = bootstrap_one_sample(dummy, 2)\n", "\n", "print('Statystyki dla dwóch prób zależnych:')\n", - "p, _ = bootstrap_dependent(dummy2, dummy3)\n", - "print(f'p {p}')\n", + "p, t, ts = bootstrap_dependent(dummy2, dummy3)\n", "\n", "print('Statystyki dla dwóch prób niezależnych:')\n", - "p, _ = bootstrap_independent(dummy2, dummy3)\n", - "print(f'p {p}')" + "p, t, ts = bootstrap_independent(dummy2, dummy3)" ] }, { @@ -483,7 +551,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.10-final" + "version": "3.9.1" }, "orig_nbformat": 4 }, -- 2.20.1 From 708406726e8560c79a66456f2bbdd95e24cd9ba4 Mon Sep 17 00:00:00 2001 From: Marcin Kostrzewski Date: Tue, 17 May 2022 21:38:59 +0200 Subject: [PATCH 4/4] Fix bootstrapping two values --- bootstrap-t.ipynb | 4742 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 4684 insertions(+), 58 deletions(-) diff --git a/bootstrap-t.ipynb b/bootstrap-t.ipynb index 53b4b3c..95356d8 100644 --- a/bootstrap-t.ipynb +++ b/bootstrap-t.ipynb @@ -25,7 +25,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 297, "metadata": { "pycharm": { "name": "#%%\n" @@ -35,19 +35,14 @@ "source": [ "import numpy as np\n", "import pandas as pd\n", - "from enum import Enum\n", - "from math import sqrt\n", - "from scipy import stats\n", - "from scipy.stats import sem\n", - "from scipy.stats import t\n", "import matplotlib.pyplot as plt\n", - "from statistics import mean, stdev\n", + "from enum import Enum\n", "from scipy.stats import ttest_ind, ttest_1samp, ttest_rel" ] }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 298, "metadata": {}, "outputs": [], "source": [ @@ -56,7 +51,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 299, "metadata": {}, "outputs": [], "source": [ @@ -67,7 +62,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 300, "metadata": {}, "outputs": [], "source": [ @@ -88,7 +83,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 301, "metadata": { "pycharm": { "name": "#%%\n" @@ -110,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 302, "metadata": {}, "outputs": [], "source": [ @@ -128,7 +123,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 303, "metadata": {}, "outputs": [], "source": [ @@ -146,7 +141,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 304, "metadata": {}, "outputs": [], "source": [ @@ -164,8 +159,9 @@ " return t_stat_list\n", "\n", " # Two sample test\n", - " for bootstrap_sample in generate_bootstraps(pd.concat((sample_1, sample_2))):\n", - " bootstrap_1, bootstrap_2 = bootstrap_sample.iloc[: round(len(bootstrap_sample) * 0.5)], bootstrap_sample.iloc[: round(-len(bootstrap_sample) * 0.5)]\n", + " 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", " stat, _ = t_stat_fn(bootstrap_1, bootstrap_2, alternative=alternative.value)\n", " t_stat_list.append(stat)\n", " return t_stat_list" @@ -173,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 305, "metadata": {}, "outputs": [], "source": [ @@ -223,7 +219,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 306, "metadata": { "pycharm": { "name": "#%%\n" @@ -251,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 307, "metadata": { "collapsed": false, "pycharm": { @@ -281,7 +277,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 308, "metadata": {}, "outputs": [], "source": [ @@ -292,7 +288,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 309, "metadata": { "collapsed": false, "pycharm": { @@ -309,10 +305,13 @@ "Hipoteza: średnia jest równa 165\n", "Hipoteza alternatywna: średnia jest mniejsza\n", "\n", - "p: 0.58\n", + "p: 0.66\n", "Wartość statystyki testowej z próby: [-229.1025971]\n", "Wartości statystyk z prób boostrapowych:\n", - "[-316.92367438], [-406.5], [-201.5], [-243.92267776], [-330.27286699], ... (i 95 pozostałych)\n" + "[-238.26620115], [-433.49773438], [-229.1025971], [-237.97131723], [-202.75], ... (i 95 pozostałych)\n", + "\n", + "\n", + "\n" ] } ], @@ -343,7 +342,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 310, "metadata": { "collapsed": false, "pycharm": { @@ -392,7 +391,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 311, "metadata": { "collapsed": false, "pycharm": { @@ -437,7 +436,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 312, "metadata": { "collapsed": false, "pycharm": { @@ -466,7 +465,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 313, "metadata": {}, "outputs": [ { @@ -479,53 +478,4680 @@ "Hipoteza: średnia jest równa 2\n", "Hipoteza alternatywna: średnia jest mniejsza\n", "\n", - "p: 0.52\n", + "p: 0.57\n", "Wartość statystyki testowej z próby: [1.41421356]\n", "Wartości statystyk z prób boostrapowych:\n", - "[-0.53452248], [0.], [-1.63299316], [1.5], [2.3590713], ... (i 95 pozostałych)\n", - "Statystyki dla dwóch prób zależnych:\n", - "Wyniki bootstrapowej wersji testu T-studenta\n", + "[2.75], [4.], [2.3590713], [3.67423461], [1.08866211], ... (i 95 pozostałych)\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: [10.61445555]\n", - "Wartości statystyk z prób boostrapowych:\n", - "[nan], [nan], [nan], [nan], [nan], ... (i 95 pozostałych)\n", - "Statystyki dla dwóch prób niezależnych:\n", - "Wyniki bootstrapowej wersji testu T-studenta\n", - "\n", - "Hipoteza: średnie są takie same\n", - "Hipoteza alternatywna: średnia jest mniejsza\n", - "\n", - "p: 1.0\n", - "Wartość statystyki testowej z próby: [2.4140394]\n", - "Wartości statystyk z prób boostrapowych:\n", - "[0.], [0.], [0.], [0.], [0.], ... (i 95 pozostałych)\n" + "\n" ] } ], "source": [ "# Testy z bootstrappowaniem\n", "\n", - "\n", "print('Statystyki dla jednej próby:')\n", - "p, t, ts = bootstrap_one_sample(dummy, 2)\n", - "\n", - "print('Statystyki dla dwóch prób zależnych:')\n", - "p, t, ts = bootstrap_dependent(dummy2, dummy3)\n", - "\n", - "print('Statystyki dla dwóch prób niezależnych:')\n", - "p, t, ts = bootstrap_independent(dummy2, dummy3)" + "p, t, ts = bootstrap_one_sample(dummy, 2)" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 314, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Statystyki dla dwóch prób zależnych:\n", + " 0\n", + "8 4\n", + "9 6\n", + "4 8\n", + "4 8\n", + "4 8\n", + "0 4\n", + "5 1\n", + "4 8\n", + "6 3\n", + "0 4\n", + " 0\n", + "8 4\n", + "9 6\n", + "4 8\n", + "4 8\n", + "4 8\n", + " 0\n", + "0 4\n", + "5 1\n", + "4 8\n", + "6 3\n", + "0 4\n", + " 0\n", + "6 3\n", + "9 6\n", + "1 5\n", + "7 3\n", + "6 3\n", + "4 8\n", + "6 3\n", + "5 1\n", + "8 4\n", + "9 6\n", + " 0\n", + "6 3\n", + "9 6\n", + "1 5\n", + "7 3\n", + "6 3\n", + " 0\n", + "4 8\n", + "6 3\n", + "5 1\n", + "8 4\n", + "9 6\n", + " 0\n", + "1 5\n", + "8 4\n", + "4 8\n", + "1 5\n", + "3 7\n", + "0 4\n", + "5 1\n", + "0 4\n", + "3 7\n", + "3 7\n", + " 0\n", + "1 5\n", + "8 4\n", + "4 8\n", + "1 5\n", + "3 7\n", + " 0\n", + "0 4\n", + "5 1\n", + "0 4\n", + "3 7\n", + "3 7\n", + " 0\n", + "5 1\n", + "1 5\n", + "7 3\n", + "8 4\n", + "2 6\n", + "6 3\n", + "6 3\n", + "5 1\n", + "5 1\n", + "2 6\n", + " 0\n", + "5 1\n", + "1 5\n", + "7 3\n", + "8 4\n", + "2 6\n", + " 0\n", + "6 3\n", + "6 3\n", + "5 1\n", + "5 1\n", + "2 6\n", + " 0\n", + "7 3\n", + "2 6\n", + "2 6\n", + "7 3\n", + "5 1\n", + "2 6\n", + "9 6\n", + "6 3\n", + "6 3\n", + "1 5\n", + " 0\n", + "7 3\n", + "2 6\n", + "2 6\n", + "7 3\n", + "5 1\n", + " 0\n", + "2 6\n", + "9 6\n", + "6 3\n", + "6 3\n", + "1 5\n", + " 0\n", + "8 4\n", + "0 4\n", + "6 3\n", + "0 4\n", + "8 4\n", + "2 6\n", + "1 5\n", + "0 4\n", + "9 6\n", + "3 7\n", + " 0\n", + "8 4\n", + "0 4\n", + "6 3\n", + "0 4\n", + "8 4\n", + " 0\n", + "2 6\n", + "1 5\n", + "0 4\n", + "9 6\n", + "3 7\n", + " 0\n", + "1 5\n", + "4 8\n", + "1 5\n", + "5 1\n", + "1 5\n", + "7 3\n", + "8 4\n", + "3 7\n", + "2 6\n", + "6 3\n", + " 0\n", + "1 5\n", + "4 8\n", + "1 5\n", + "5 1\n", + "1 5\n", + " 0\n", + "7 3\n", + "8 4\n", + "3 7\n", + "2 6\n", + "6 3\n", + " 0\n", + "5 1\n", + "9 6\n", + "6 3\n", + "8 4\n", + "2 6\n", + "2 6\n", + "3 7\n", + "9 6\n", + "3 7\n", + "3 7\n", + " 0\n", + "5 1\n", + "9 6\n", + "6 3\n", + "8 4\n", + "2 6\n", + " 0\n", + "2 6\n", + "3 7\n", + "9 6\n", + "3 7\n", + "3 7\n", + " 0\n", + "3 7\n", + "9 6\n", + "6 3\n", + "7 3\n", + "6 3\n", + "2 6\n", + "2 6\n", + "8 4\n", + "6 3\n", + "0 4\n", + " 0\n", + "3 7\n", + "9 6\n", + "6 3\n", + "7 3\n", + "6 3\n", + " 0\n", + "2 6\n", + "2 6\n", + "8 4\n", + "6 3\n", + "0 4\n", + " 0\n", + "0 4\n", + "7 3\n", + "2 6\n", + "8 4\n", + "3 7\n", + "6 3\n", + "7 3\n", + "5 1\n", + "6 3\n", + "3 7\n", + " 0\n", + "0 4\n", + "7 3\n", + "2 6\n", + "8 4\n", + "3 7\n", + " 0\n", + "6 3\n", + "7 3\n", + "5 1\n", + "6 3\n", + "3 7\n", + " 0\n", + "6 3\n", + "0 4\n", + "2 6\n", + "1 5\n", + "9 6\n", + "4 8\n", + "1 5\n", + "5 1\n", + "6 3\n", + "5 1\n", + " 0\n", + "6 3\n", + "0 4\n", + "2 6\n", + "1 5\n", + "9 6\n", + " 0\n", + "4 8\n", + "1 5\n", + "5 1\n", + "6 3\n", + "5 1\n", + " 0\n", + "8 4\n", + "0 4\n", + "4 8\n", + "0 4\n", + "3 7\n", + "3 7\n", + "6 3\n", + "9 6\n", + "7 3\n", + "9 6\n", + " 0\n", + "8 4\n", + "0 4\n", + "4 8\n", + "0 4\n", + "3 7\n", + " 0\n", + "3 7\n", + "6 3\n", + "9 6\n", + "7 3\n", + "9 6\n", + " 0\n", + "6 3\n", + "2 6\n", + "8 4\n", + "0 4\n", + "3 7\n", + "6 3\n", + "3 7\n", + "0 4\n", + "3 7\n", + "9 6\n", + " 0\n", + "6 3\n", + "2 6\n", + "8 4\n", + "0 4\n", + "3 7\n", + " 0\n", + "6 3\n", + "3 7\n", + "0 4\n", + "3 7\n", + "9 6\n", + " 0\n", + "2 6\n", + "5 1\n", + "4 8\n", + "2 6\n", + "5 1\n", + "0 4\n", + "2 6\n", + "1 5\n", + "2 6\n", + "1 5\n", + " 0\n", + "2 6\n", + "5 1\n", + "4 8\n", + "2 6\n", + "5 1\n", + " 0\n", + "0 4\n", + "2 6\n", + "1 5\n", + "2 6\n", + "1 5\n", + " 0\n", + "3 7\n", + "2 6\n", + "8 4\n", + "6 3\n", + "9 6\n", + "7 3\n", + "3 7\n", + "9 6\n", + "0 4\n", + "0 4\n", + " 0\n", + "3 7\n", + "2 6\n", + "8 4\n", + "6 3\n", + "9 6\n", + " 0\n", + "7 3\n", + "3 7\n", + "9 6\n", + "0 4\n", + "0 4\n", + " 0\n", + "2 6\n", + "4 8\n", + "5 1\n", + "9 6\n", + "1 5\n", + "1 5\n", + "4 8\n", + "0 4\n", + "8 4\n", + "2 6\n", + " 0\n", + "2 6\n", + "4 8\n", + "5 1\n", + "9 6\n", + "1 5\n", + " 0\n", + "1 5\n", + "4 8\n", + "0 4\n", + "8 4\n", + "2 6\n", + " 0\n", + "9 6\n", + "9 6\n", + "1 5\n", + "0 4\n", + "9 6\n", + "5 1\n", + "2 6\n", + "3 7\n", + "1 5\n", + "6 3\n", + " 0\n", + "9 6\n", + "9 6\n", + "1 5\n", + "0 4\n", + "9 6\n", + " 0\n", + "5 1\n", + "2 6\n", + "3 7\n", + "1 5\n", + "6 3\n", + " 0\n", + "6 3\n", + "8 4\n", + "4 8\n", + "8 4\n", + "8 4\n", + "0 4\n", + "9 6\n", + "8 4\n", + "8 4\n", + "9 6\n", + " 0\n", + "6 3\n", + "8 4\n", + "4 8\n", + "8 4\n", + "8 4\n", + " 0\n", + "0 4\n", + "9 6\n", + "8 4\n", + "8 4\n", + "9 6\n", + " 0\n", + "9 6\n", + "0 4\n", + "2 6\n", + "5 1\n", + "8 4\n", + "7 3\n", + "5 1\n", + "4 8\n", + "3 7\n", + "1 5\n", + " 0\n", + "9 6\n", + "0 4\n", + "2 6\n", + "5 1\n", + "8 4\n", + " 0\n", + "7 3\n", + "5 1\n", + "4 8\n", + "3 7\n", + "1 5\n", + " 0\n", + "0 4\n", + "0 4\n", + "6 3\n", + "9 6\n", + "4 8\n", + "8 4\n", + "7 3\n", + "0 4\n", + "3 7\n", + "2 6\n", + " 0\n", + "0 4\n", + "0 4\n", + "6 3\n", + "9 6\n", + "4 8\n", + " 0\n", + "8 4\n", + "7 3\n", + "0 4\n", + "3 7\n", + "2 6\n", + " 0\n", + "5 1\n", + "1 5\n", + "8 4\n", + "1 5\n", + "1 5\n", + "0 4\n", + "6 3\n", + "4 8\n", + "4 8\n", + "2 6\n", + " 0\n", + "5 1\n", + "1 5\n", + "8 4\n", + "1 5\n", + "1 5\n", + " 0\n", + "0 4\n", + "6 3\n", + "4 8\n", + "4 8\n", + "2 6\n", + " 0\n", + "8 4\n", + "0 4\n", + "1 5\n", + "6 3\n", + "1 5\n", + "9 6\n", + "3 7\n", + "3 7\n", + "5 1\n", + "8 4\n", + " 0\n", + "8 4\n", + "0 4\n", + "1 5\n", + "6 3\n", + "1 5\n", + " 0\n", + "9 6\n", + "3 7\n", + "3 7\n", + "5 1\n", + "8 4\n", + " 0\n", + "2 6\n", + "2 6\n", + "7 3\n", + "5 1\n", + "7 3\n", + "1 5\n", + "7 3\n", + "3 7\n", + "9 6\n", + "9 6\n", + " 0\n", + "2 6\n", + "2 6\n", + "7 3\n", + "5 1\n", + "7 3\n", + " 0\n", + "1 5\n", + "7 3\n", + "3 7\n", + "9 6\n", + "9 6\n", + " 0\n", + "7 3\n", + "5 1\n", + "1 5\n", + "9 6\n", + "5 1\n", + "7 3\n", + "6 3\n", + "6 3\n", + "3 7\n", + "0 4\n", + " 0\n", + "7 3\n", + "5 1\n", + "1 5\n", + "9 6\n", + "5 1\n", + " 0\n", + "7 3\n", + "6 3\n", + "6 3\n", + "3 7\n", + "0 4\n", + " 0\n", + "7 3\n", + "0 4\n", + "1 5\n", + "5 1\n", + "0 4\n", + "8 4\n", + "9 6\n", + "4 8\n", + "3 7\n", + "3 7\n", + " 0\n", + "7 3\n", + "0 4\n", + "1 5\n", + "5 1\n", + "0 4\n", + " 0\n", + "8 4\n", + "9 6\n", + "4 8\n", + "3 7\n", + "3 7\n", + " 0\n", + "4 8\n", + "9 6\n", + "7 3\n", + "3 7\n", + "1 5\n", + "3 7\n", + "9 6\n", + "4 8\n", + "4 8\n", + "7 3\n", + " 0\n", + "4 8\n", + "9 6\n", + "7 3\n", + "3 7\n", + "1 5\n", + " 0\n", + "3 7\n", + "9 6\n", + "4 8\n", + "4 8\n", + "7 3\n", + " 0\n", + "8 4\n", + "3 7\n", + "8 4\n", + "8 4\n", + "5 1\n", + "6 3\n", + "3 7\n", + "7 3\n", + "3 7\n", + "9 6\n", + " 0\n", + "8 4\n", + "3 7\n", + "8 4\n", + "8 4\n", + "5 1\n", + " 0\n", + "6 3\n", + "3 7\n", + "7 3\n", + "3 7\n", + "9 6\n", + " 0\n", + "6 3\n", + "7 3\n", + "0 4\n", + "8 4\n", + "4 8\n", + "6 3\n", + "0 4\n", + "3 7\n", + "5 1\n", + "4 8\n", + " 0\n", + "6 3\n", + "7 3\n", + "0 4\n", + "8 4\n", + "4 8\n", + " 0\n", + "6 3\n", + "0 4\n", + "3 7\n", + "5 1\n", + "4 8\n", + " 0\n", + "0 4\n", + "3 7\n", + "4 8\n", + "4 8\n", + "2 6\n", + "9 6\n", + "5 1\n", + "0 4\n", + "7 3\n", + "5 1\n", + " 0\n", + "0 4\n", + "3 7\n", + "4 8\n", + "4 8\n", + "2 6\n", + " 0\n", + "9 6\n", + "5 1\n", + "0 4\n", + "7 3\n", + "5 1\n", + " 0\n", + "4 8\n", + "4 8\n", + "0 4\n", + "4 8\n", + "1 5\n", + "6 3\n", + "8 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + " 0\n", + "4 8\n", + "4 8\n", + "0 4\n", + "4 8\n", + "1 5\n", + " 0\n", + "6 3\n", + "8 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + " 0\n", + "3 7\n", + "4 8\n", + "4 8\n", + "3 7\n", + "0 4\n", + "2 6\n", + "9 6\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "3 7\n", + "4 8\n", + "4 8\n", + "3 7\n", + "0 4\n", + " 0\n", + "2 6\n", + "9 6\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "8 4\n", + "1 5\n", + "9 6\n", + "1 5\n", + "0 4\n", + "7 3\n", + "6 3\n", + "8 4\n", + "9 6\n", + "9 6\n", + " 0\n", + "8 4\n", + "1 5\n", + "9 6\n", + "1 5\n", + "0 4\n", + " 0\n", + "7 3\n", + "6 3\n", + "8 4\n", + "9 6\n", + "9 6\n", + " 0\n", + "9 6\n", + "2 6\n", + "8 4\n", + "1 5\n", + "9 6\n", + "7 3\n", + "6 3\n", + "3 7\n", + "8 4\n", + "5 1\n", + " 0\n", + "9 6\n", + "2 6\n", + "8 4\n", + "1 5\n", + "9 6\n", + " 0\n", + "7 3\n", + "6 3\n", + "3 7\n", + "8 4\n", + "5 1\n", + " 0\n", + "1 5\n", + "9 6\n", + "0 4\n", + "5 1\n", + "8 4\n", + "8 4\n", + "2 6\n", + "5 1\n", + "3 7\n", + "4 8\n", + " 0\n", + "1 5\n", + "9 6\n", + "0 4\n", + "5 1\n", + "8 4\n", + " 0\n", + "8 4\n", + "2 6\n", + "5 1\n", + "3 7\n", + "4 8\n", + " 0\n", + "2 6\n", + "4 8\n", + "3 7\n", + "6 3\n", + "8 4\n", + "2 6\n", + "9 6\n", + "5 1\n", + "8 4\n", + "0 4\n", + " 0\n", + "2 6\n", + "4 8\n", + "3 7\n", + "6 3\n", + "8 4\n", + " 0\n", + "2 6\n", + "9 6\n", + "5 1\n", + "8 4\n", + "0 4\n", + " 0\n", + "3 7\n", + "2 6\n", + "3 7\n", + "0 4\n", + "1 5\n", + "8 4\n", + "5 1\n", + "8 4\n", + "5 1\n", + "9 6\n", + " 0\n", + "3 7\n", + "2 6\n", + "3 7\n", + "0 4\n", + "1 5\n", + " 0\n", + "8 4\n", + "5 1\n", + "8 4\n", + "5 1\n", + "9 6\n", + " 0\n", + "6 3\n", + "9 6\n", + "4 8\n", + "6 3\n", + "4 8\n", + "0 4\n", + "4 8\n", + "0 4\n", + "8 4\n", + "6 3\n", + " 0\n", + "6 3\n", + "9 6\n", + "4 8\n", + "6 3\n", + "4 8\n", + " 0\n", + "0 4\n", + "4 8\n", + "0 4\n", + "8 4\n", + "6 3\n", + " 0\n", + "8 4\n", + "8 4\n", + "8 4\n", + "9 6\n", + "5 1\n", + "7 3\n", + "1 5\n", + "9 6\n", + "3 7\n", + "3 7\n", + " 0\n", + "8 4\n", + "8 4\n", + "8 4\n", + "9 6\n", + "5 1\n", + " 0\n", + "7 3\n", + "1 5\n", + "9 6\n", + "3 7\n", + "3 7\n", + " 0\n", + "5 1\n", + "2 6\n", + "0 4\n", + "9 6\n", + "5 1\n", + "9 6\n", + "6 3\n", + "0 4\n", + "5 1\n", + "8 4\n", + " 0\n", + "5 1\n", + "2 6\n", + "0 4\n", + "9 6\n", + "5 1\n", + " 0\n", + "9 6\n", + "6 3\n", + "0 4\n", + "5 1\n", + "8 4\n", + " 0\n", + "7 3\n", + "3 7\n", + "7 3\n", + "4 8\n", + "6 3\n", + "8 4\n", + "0 4\n", + "9 6\n", + "7 3\n", + "6 3\n", + " 0\n", + "7 3\n", + "3 7\n", + "7 3\n", + "4 8\n", + "6 3\n", + " 0\n", + "8 4\n", + "0 4\n", + "9 6\n", + "7 3\n", + "6 3\n", + " 0\n", + "7 3\n", + "7 3\n", + "9 6\n", + "6 3\n", + "3 7\n", + "7 3\n", + "2 6\n", + "8 4\n", + "2 6\n", + "3 7\n", + " 0\n", + "7 3\n", + "7 3\n", + "9 6\n", + "6 3\n", + "3 7\n", + " 0\n", + "7 3\n", + "2 6\n", + "8 4\n", + "2 6\n", + "3 7\n", + " 0\n", + "2 6\n", + "6 3\n", + "2 6\n", + "4 8\n", + "1 5\n", + "7 3\n", + "0 4\n", + "6 3\n", + "1 5\n", + "6 3\n", + " 0\n", + "2 6\n", + "6 3\n", + "2 6\n", + "4 8\n", + "1 5\n", + " 0\n", + "7 3\n", + "0 4\n", + "6 3\n", + "1 5\n", + "6 3\n", + " 0\n", + "5 1\n", + "5 1\n", + "3 7\n", + "9 6\n", + "9 6\n", + "0 4\n", + "0 4\n", + "4 8\n", + "7 3\n", + "5 1\n", + " 0\n", + "5 1\n", + "5 1\n", + "3 7\n", + "9 6\n", + "9 6\n", + " 0\n", + "0 4\n", + "0 4\n", + "4 8\n", + "7 3\n", + "5 1\n", + " 0\n", + "5 1\n", + "7 3\n", + "3 7\n", + "4 8\n", + "7 3\n", + "2 6\n", + "9 6\n", + "9 6\n", + "8 4\n", + "8 4\n", + " 0\n", + "5 1\n", + "7 3\n", + "3 7\n", + "4 8\n", + "7 3\n", + " 0\n", + "2 6\n", + "9 6\n", + "9 6\n", + "8 4\n", + "8 4\n", + " 0\n", + "7 3\n", + "0 4\n", + "2 6\n", + "8 4\n", + "3 7\n", + "5 1\n", + "2 6\n", + "5 1\n", + "0 4\n", + "2 6\n", + " 0\n", + "7 3\n", + "0 4\n", + "2 6\n", + "8 4\n", + "3 7\n", + " 0\n", + "5 1\n", + "2 6\n", + "5 1\n", + "0 4\n", + "2 6\n", + " 0\n", + "3 7\n", + "7 3\n", + "2 6\n", + "0 4\n", + "1 5\n", + "0 4\n", + "5 1\n", + "3 7\n", + "3 7\n", + "0 4\n", + " 0\n", + "3 7\n", + "7 3\n", + "2 6\n", + "0 4\n", + "1 5\n", + " 0\n", + "0 4\n", + "5 1\n", + "3 7\n", + "3 7\n", + "0 4\n", + " 0\n", + "6 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + "6 3\n", + "0 4\n", + "2 6\n", + "3 7\n", + "5 1\n", + "3 7\n", + " 0\n", + "6 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + "6 3\n", + " 0\n", + "0 4\n", + "2 6\n", + "3 7\n", + "5 1\n", + "3 7\n", + " 0\n", + "5 1\n", + "0 4\n", + "6 3\n", + "3 7\n", + "4 8\n", + "9 6\n", + "1 5\n", + "4 8\n", + "4 8\n", + "0 4\n", + " 0\n", + "5 1\n", + "0 4\n", + "6 3\n", + "3 7\n", + "4 8\n", + " 0\n", + "9 6\n", + "1 5\n", + "4 8\n", + "4 8\n", + "0 4\n", + " 0\n", + "9 6\n", + "9 6\n", + "7 3\n", + "6 3\n", + "9 6\n", + "8 4\n", + "6 3\n", + "5 1\n", + "8 4\n", + "1 5\n", + " 0\n", + "9 6\n", + "9 6\n", + "7 3\n", + "6 3\n", + "9 6\n", + " 0\n", + "8 4\n", + "6 3\n", + "5 1\n", + "8 4\n", + "1 5\n", + " 0\n", + "2 6\n", + "5 1\n", + "3 7\n", + "2 6\n", + "0 4\n", + "1 5\n", + "8 4\n", + "2 6\n", + "6 3\n", + "5 1\n", + " 0\n", + "2 6\n", + "5 1\n", + "3 7\n", + "2 6\n", + "0 4\n", + " 0\n", + "1 5\n", + "8 4\n", + "2 6\n", + "6 3\n", + "5 1\n", + " 0\n", + "7 3\n", + "6 3\n", + "1 5\n", + "2 6\n", + "1 5\n", + "1 5\n", + "2 6\n", + "5 1\n", + "0 4\n", + "9 6\n", + " 0\n", + "7 3\n", + "6 3\n", + "1 5\n", + "2 6\n", + "1 5\n", + " 0\n", + "1 5\n", + "2 6\n", + "5 1\n", + "0 4\n", + "9 6\n", + " 0\n", + "5 1\n", + "7 3\n", + "7 3\n", + "6 3\n", + "0 4\n", + "7 3\n", + "3 7\n", + "1 5\n", + "8 4\n", + "0 4\n", + " 0\n", + "5 1\n", + "7 3\n", + "7 3\n", + "6 3\n", + "0 4\n", + " 0\n", + "7 3\n", + "3 7\n", + "1 5\n", + "8 4\n", + "0 4\n", + " 0\n", + "9 6\n", + "1 5\n", + "2 6\n", + "1 5\n", + "0 4\n", + "5 1\n", + "0 4\n", + "3 7\n", + "3 7\n", + "0 4\n", + " 0\n", + "9 6\n", + "1 5\n", + "2 6\n", + "1 5\n", + "0 4\n", + " 0\n", + "5 1\n", + "0 4\n", + "3 7\n", + "3 7\n", + "0 4\n", + " 0\n", + "8 4\n", + "1 5\n", + "6 3\n", + "0 4\n", + "0 4\n", + "9 6\n", + "9 6\n", + "2 6\n", + "2 6\n", + "8 4\n", + " 0\n", + "8 4\n", + "1 5\n", + "6 3\n", + "0 4\n", + "0 4\n", + " 0\n", + "9 6\n", + "9 6\n", + "2 6\n", + "2 6\n", + "8 4\n", + " 0\n", + "6 3\n", + "3 7\n", + "8 4\n", + "1 5\n", + "3 7\n", + "9 6\n", + "4 8\n", + "1 5\n", + "6 3\n", + "3 7\n", + " 0\n", + "6 3\n", + "3 7\n", + "8 4\n", + "1 5\n", + "3 7\n", + " 0\n", + "9 6\n", + "4 8\n", + "1 5\n", + "6 3\n", + "3 7\n", + " 0\n", + "0 4\n", + "9 6\n", + "5 1\n", + "1 5\n", + "6 3\n", + "7 3\n", + "1 5\n", + "8 4\n", + "9 6\n", + "6 3\n", + " 0\n", + "0 4\n", + "9 6\n", + "5 1\n", + "1 5\n", + "6 3\n", + " 0\n", + "7 3\n", + "1 5\n", + "8 4\n", + "9 6\n", + "6 3\n", + " 0\n", + "6 3\n", + "9 6\n", + "4 8\n", + "1 5\n", + "3 7\n", + "9 6\n", + "3 7\n", + "5 1\n", + "5 1\n", + "9 6\n", + " 0\n", + "6 3\n", + "9 6\n", + "4 8\n", + "1 5\n", + "3 7\n", + " 0\n", + "9 6\n", + "3 7\n", + "5 1\n", + "5 1\n", + "9 6\n", + " 0\n", + "2 6\n", + "3 7\n", + "1 5\n", + "2 6\n", + "0 4\n", + "8 4\n", + "7 3\n", + "2 6\n", + "8 4\n", + "5 1\n", + " 0\n", + "2 6\n", + "3 7\n", + "1 5\n", + "2 6\n", + "0 4\n", + " 0\n", + "8 4\n", + "7 3\n", + "2 6\n", + "8 4\n", + "5 1\n", + " 0\n", + "9 6\n", + "1 5\n", + "8 4\n", + "1 5\n", + "6 3\n", + "8 4\n", + "1 5\n", + "2 6\n", + "8 4\n", + "2 6\n", + " 0\n", + "9 6\n", + "1 5\n", + "8 4\n", + "1 5\n", + "6 3\n", + " 0\n", + "8 4\n", + "1 5\n", + "2 6\n", + "8 4\n", + "2 6\n", + " 0\n", + "9 6\n", + "2 6\n", + "1 5\n", + "0 4\n", + "4 8\n", + "4 8\n", + "8 4\n", + "1 5\n", + "7 3\n", + "9 6\n", + " 0\n", + "9 6\n", + "2 6\n", + "1 5\n", + "0 4\n", + "4 8\n", + " 0\n", + "4 8\n", + "8 4\n", + "1 5\n", + "7 3\n", + "9 6\n", + " 0\n", + "2 6\n", + "1 5\n", + "8 4\n", + "8 4\n", + "6 3\n", + "8 4\n", + "9 6\n", + "6 3\n", + "0 4\n", + "4 8\n", + " 0\n", + "2 6\n", + "1 5\n", + "8 4\n", + "8 4\n", + "6 3\n", + " 0\n", + "8 4\n", + "9 6\n", + "6 3\n", + "0 4\n", + "4 8\n", + " 0\n", + "0 4\n", + "8 4\n", + "1 5\n", + "6 3\n", + "4 8\n", + "0 4\n", + "9 6\n", + "2 6\n", + "5 1\n", + "5 1\n", + " 0\n", + "0 4\n", + "8 4\n", + "1 5\n", + "6 3\n", + "4 8\n", + " 0\n", + "0 4\n", + "9 6\n", + "2 6\n", + "5 1\n", + "5 1\n", + " 0\n", + "2 6\n", + "0 4\n", + "6 3\n", + "3 7\n", + "2 6\n", + "4 8\n", + "7 3\n", + "1 5\n", + "5 1\n", + "7 3\n", + " 0\n", + "2 6\n", + "0 4\n", + "6 3\n", + "3 7\n", + "2 6\n", + " 0\n", + "4 8\n", + "7 3\n", + "1 5\n", + "5 1\n", + "7 3\n", + " 0\n", + "3 7\n", + "0 4\n", + "4 8\n", + "1 5\n", + "4 8\n", + "3 7\n", + "8 4\n", + "1 5\n", + "8 4\n", + "2 6\n", + " 0\n", + "3 7\n", + "0 4\n", + "4 8\n", + "1 5\n", + "4 8\n", + " 0\n", + "3 7\n", + "8 4\n", + "1 5\n", + "8 4\n", + "2 6\n", + " 0\n", + "0 4\n", + "4 8\n", + "6 3\n", + "3 7\n", + "2 6\n", + "0 4\n", + "8 4\n", + "0 4\n", + "5 1\n", + "3 7\n", + " 0\n", + "0 4\n", + "4 8\n", + "6 3\n", + "3 7\n", + "2 6\n", + " 0\n", + "0 4\n", + "8 4\n", + "0 4\n", + "5 1\n", + "3 7\n", + " 0\n", + "5 1\n", + "0 4\n", + "2 6\n", + "1 5\n", + "2 6\n", + "7 3\n", + "6 3\n", + "0 4\n", + "9 6\n", + "3 7\n", + " 0\n", + "5 1\n", + "0 4\n", + "2 6\n", + "1 5\n", + "2 6\n", + " 0\n", + "7 3\n", + "6 3\n", + "0 4\n", + "9 6\n", + "3 7\n", + " 0\n", + "0 4\n", + "6 3\n", + "0 4\n", + "6 3\n", + "5 1\n", + "8 4\n", + "5 1\n", + "3 7\n", + "2 6\n", + "5 1\n", + " 0\n", + "0 4\n", + "6 3\n", + "0 4\n", + "6 3\n", + "5 1\n", + " 0\n", + "8 4\n", + "5 1\n", + "3 7\n", + "2 6\n", + "5 1\n", + " 0\n", + "2 6\n", + "5 1\n", + "1 5\n", + "6 3\n", + "2 6\n", + "9 6\n", + "2 6\n", + "4 8\n", + "5 1\n", + "4 8\n", + " 0\n", + "2 6\n", + "5 1\n", + "1 5\n", + "6 3\n", + "2 6\n", + " 0\n", + "9 6\n", + "2 6\n", + "4 8\n", + "5 1\n", + "4 8\n", + " 0\n", + "8 4\n", + "7 3\n", + "9 6\n", + "7 3\n", + "3 7\n", + "7 3\n", + "4 8\n", + "4 8\n", + "9 6\n", + "1 5\n", + " 0\n", + "8 4\n", + "7 3\n", + "9 6\n", + "7 3\n", + "3 7\n", + " 0\n", + "7 3\n", + "4 8\n", + "4 8\n", + "9 6\n", + "1 5\n", + " 0\n", + "0 4\n", + "2 6\n", + "8 4\n", + "7 3\n", + "1 5\n", + "6 3\n", + "9 6\n", + "9 6\n", + "4 8\n", + "7 3\n", + " 0\n", + "0 4\n", + "2 6\n", + "8 4\n", + "7 3\n", + "1 5\n", + " 0\n", + "6 3\n", + "9 6\n", + "9 6\n", + "4 8\n", + "7 3\n", + " 0\n", + "0 4\n", + "3 7\n", + "0 4\n", + "8 4\n", + "6 3\n", + "9 6\n", + "0 4\n", + "0 4\n", + "0 4\n", + "2 6\n", + " 0\n", + "0 4\n", + "3 7\n", + "0 4\n", + "8 4\n", + "6 3\n", + " 0\n", + "9 6\n", + "0 4\n", + "0 4\n", + "0 4\n", + "2 6\n", + " 0\n", + "7 3\n", + "8 4\n", + "5 1\n", + "7 3\n", + "2 6\n", + "9 6\n", + "1 5\n", + "9 6\n", + "5 1\n", + "2 6\n", + " 0\n", + "7 3\n", + "8 4\n", + "5 1\n", + "7 3\n", + "2 6\n", + " 0\n", + "9 6\n", + "1 5\n", + "9 6\n", + "5 1\n", + "2 6\n", + " 0\n", + "2 6\n", + "3 7\n", + "5 1\n", + "9 6\n", + "3 7\n", + "2 6\n", + "2 6\n", + "0 4\n", + "4 8\n", + "9 6\n", + " 0\n", + "2 6\n", + "3 7\n", + "5 1\n", + "9 6\n", + "3 7\n", + " 0\n", + "2 6\n", + "2 6\n", + "0 4\n", + "4 8\n", + "9 6\n", + " 0\n", + "4 8\n", + "9 6\n", + "1 5\n", + "5 1\n", + "1 5\n", + "3 7\n", + "0 4\n", + "1 5\n", + "1 5\n", + "9 6\n", + " 0\n", + "4 8\n", + "9 6\n", + "1 5\n", + "5 1\n", + "1 5\n", + " 0\n", + "3 7\n", + "0 4\n", + "1 5\n", + "1 5\n", + "9 6\n", + " 0\n", + "4 8\n", + "9 6\n", + "0 4\n", + "4 8\n", + "2 6\n", + "7 3\n", + "8 4\n", + "2 6\n", + "2 6\n", + "6 3\n", + " 0\n", + "4 8\n", + "9 6\n", + "0 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "7 3\n", + "8 4\n", + "2 6\n", + "2 6\n", + "6 3\n", + " 0\n", + "6 3\n", + "7 3\n", + "9 6\n", + "2 6\n", + "7 3\n", + "0 4\n", + "0 4\n", + "6 3\n", + "7 3\n", + "5 1\n", + " 0\n", + "6 3\n", + "7 3\n", + "9 6\n", + "2 6\n", + "7 3\n", + " 0\n", + "0 4\n", + "0 4\n", + "6 3\n", + "7 3\n", + "5 1\n", + " 0\n", + "9 6\n", + "4 8\n", + "2 6\n", + "6 3\n", + "3 7\n", + "7 3\n", + "7 3\n", + "2 6\n", + "4 8\n", + "5 1\n", + " 0\n", + "9 6\n", + "4 8\n", + "2 6\n", + "6 3\n", + "3 7\n", + " 0\n", + "7 3\n", + "7 3\n", + "2 6\n", + "4 8\n", + "5 1\n", + " 0\n", + "7 3\n", + "5 1\n", + "7 3\n", + "5 1\n", + "9 6\n", + "4 8\n", + "5 1\n", + "9 6\n", + "7 3\n", + "4 8\n", + " 0\n", + "7 3\n", + "5 1\n", + "7 3\n", + "5 1\n", + "9 6\n", + " 0\n", + "4 8\n", + "5 1\n", + "9 6\n", + "7 3\n", + "4 8\n", + " 0\n", + "6 3\n", + "2 6\n", + "0 4\n", + "3 7\n", + "7 3\n", + "4 8\n", + "6 3\n", + "3 7\n", + "3 7\n", + "3 7\n", + " 0\n", + "6 3\n", + "2 6\n", + "0 4\n", + "3 7\n", + "7 3\n", + " 0\n", + "4 8\n", + "6 3\n", + "3 7\n", + "3 7\n", + "3 7\n", + " 0\n", + "2 6\n", + "0 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + "9 6\n", + "5 1\n", + "4 8\n", + "9 6\n", + "1 5\n", + " 0\n", + "2 6\n", + "0 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + " 0\n", + "9 6\n", + "5 1\n", + "4 8\n", + "9 6\n", + "1 5\n", + " 0\n", + "3 7\n", + "8 4\n", + "6 3\n", + "7 3\n", + "9 6\n", + "2 6\n", + "2 6\n", + "9 6\n", + "3 7\n", + "9 6\n", + " 0\n", + "3 7\n", + "8 4\n", + "6 3\n", + "7 3\n", + "9 6\n", + " 0\n", + "2 6\n", + "2 6\n", + "9 6\n", + "3 7\n", + "9 6\n", + " 0\n", + "5 1\n", + "7 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + "3 7\n", + "1 5\n", + "4 8\n", + "3 7\n", + "5 1\n", + " 0\n", + "5 1\n", + "7 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + " 0\n", + "3 7\n", + "1 5\n", + "4 8\n", + "3 7\n", + "5 1\n", + " 0\n", + "4 8\n", + "1 5\n", + "5 1\n", + "7 3\n", + "3 7\n", + "6 3\n", + "3 7\n", + "3 7\n", + "2 6\n", + "3 7\n", + " 0\n", + "4 8\n", + "1 5\n", + "5 1\n", + "7 3\n", + "3 7\n", + " 0\n", + "6 3\n", + "3 7\n", + "3 7\n", + "2 6\n", + "3 7\n", + " 0\n", + "1 5\n", + "7 3\n", + "9 6\n", + "2 6\n", + "0 4\n", + "2 6\n", + "8 4\n", + "5 1\n", + "3 7\n", + "9 6\n", + " 0\n", + "1 5\n", + "7 3\n", + "9 6\n", + "2 6\n", + "0 4\n", + " 0\n", + "2 6\n", + "8 4\n", + "5 1\n", + "3 7\n", + "9 6\n", + " 0\n", + "6 3\n", + "0 4\n", + "8 4\n", + "4 8\n", + "2 6\n", + "0 4\n", + "4 8\n", + "4 8\n", + "7 3\n", + "7 3\n", + " 0\n", + "6 3\n", + "0 4\n", + "8 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "0 4\n", + "4 8\n", + "4 8\n", + "7 3\n", + "7 3\n", + " 0\n", + "0 4\n", + "5 1\n", + "6 3\n", + "4 8\n", + "0 4\n", + "5 1\n", + "4 8\n", + "4 8\n", + "0 4\n", + "9 6\n", + " 0\n", + "0 4\n", + "5 1\n", + "6 3\n", + "4 8\n", + "0 4\n", + " 0\n", + "5 1\n", + "4 8\n", + "4 8\n", + "0 4\n", + "9 6\n", + " 0\n", + "1 5\n", + "0 4\n", + "2 6\n", + "0 4\n", + "5 1\n", + "8 4\n", + "1 5\n", + "7 3\n", + "1 5\n", + "3 7\n", + " 0\n", + "1 5\n", + "0 4\n", + "2 6\n", + "0 4\n", + "5 1\n", + " 0\n", + "8 4\n", + "1 5\n", + "7 3\n", + "1 5\n", + "3 7\n", + " 0\n", + "2 6\n", + "4 8\n", + "1 5\n", + "3 7\n", + "9 6\n", + "3 7\n", + "8 4\n", + "6 3\n", + "0 4\n", + "5 1\n", + " 0\n", + "2 6\n", + "4 8\n", + "1 5\n", + "3 7\n", + "9 6\n", + " 0\n", + "3 7\n", + "8 4\n", + "6 3\n", + "0 4\n", + "5 1\n", + " 0\n", + "3 7\n", + "9 6\n", + "5 1\n", + "4 8\n", + "5 1\n", + "8 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + "4 8\n", + " 0\n", + "3 7\n", + "9 6\n", + "5 1\n", + "4 8\n", + "5 1\n", + " 0\n", + "8 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + "4 8\n", + " 0\n", + "8 4\n", + "1 5\n", + "2 6\n", + "6 3\n", + "8 4\n", + "8 4\n", + "1 5\n", + "1 5\n", + "0 4\n", + "5 1\n", + " 0\n", + "8 4\n", + "1 5\n", + "2 6\n", + "6 3\n", + "8 4\n", + " 0\n", + "8 4\n", + "1 5\n", + "1 5\n", + "0 4\n", + "5 1\n", + " 0\n", + "8 4\n", + "4 8\n", + "7 3\n", + "3 7\n", + "3 7\n", + "1 5\n", + "0 4\n", + "7 3\n", + "0 4\n", + "3 7\n", + " 0\n", + "8 4\n", + "4 8\n", + "7 3\n", + "3 7\n", + "3 7\n", + " 0\n", + "1 5\n", + "0 4\n", + "7 3\n", + "0 4\n", + "3 7\n", + " 0\n", + "3 7\n", + "8 4\n", + "2 6\n", + "5 1\n", + "5 1\n", + "9 6\n", + "0 4\n", + "0 4\n", + "7 3\n", + "4 8\n", + " 0\n", + "3 7\n", + "8 4\n", + "2 6\n", + "5 1\n", + "5 1\n", + " 0\n", + "9 6\n", + "0 4\n", + "0 4\n", + "7 3\n", + "4 8\n", + " 0\n", + "2 6\n", + "6 3\n", + "9 6\n", + "1 5\n", + "7 3\n", + "7 3\n", + "2 6\n", + "1 5\n", + "1 5\n", + "6 3\n", + " 0\n", + "2 6\n", + "6 3\n", + "9 6\n", + "1 5\n", + "7 3\n", + " 0\n", + "7 3\n", + "2 6\n", + "1 5\n", + "1 5\n", + "6 3\n", + " 0\n", + "5 1\n", + "1 5\n", + "8 4\n", + "6 3\n", + "1 5\n", + "5 1\n", + "9 6\n", + "3 7\n", + "3 7\n", + "7 3\n", + " 0\n", + "5 1\n", + "1 5\n", + "8 4\n", + "6 3\n", + "1 5\n", + " 0\n", + "5 1\n", + "9 6\n", + "3 7\n", + "3 7\n", + "7 3\n", + " 0\n", + "4 8\n", + "6 3\n", + "4 8\n", + "9 6\n", + "0 4\n", + "3 7\n", + "6 3\n", + "9 6\n", + "7 3\n", + "7 3\n", + " 0\n", + "4 8\n", + "6 3\n", + "4 8\n", + "9 6\n", + "0 4\n", + " 0\n", + "3 7\n", + "6 3\n", + "9 6\n", + "7 3\n", + "7 3\n", + " 0\n", + "0 4\n", + "6 3\n", + "2 6\n", + "3 7\n", + "3 7\n", + "5 1\n", + "2 6\n", + "8 4\n", + "7 3\n", + "9 6\n", + " 0\n", + "0 4\n", + "6 3\n", + "2 6\n", + "3 7\n", + "3 7\n", + " 0\n", + "5 1\n", + "2 6\n", + "8 4\n", + "7 3\n", + "9 6\n", + " 0\n", + "9 6\n", + "9 6\n", + "3 7\n", + "4 8\n", + "3 7\n", + "6 3\n", + "7 3\n", + "2 6\n", + "1 5\n", + "2 6\n", + " 0\n", + "9 6\n", + "9 6\n", + "3 7\n", + "4 8\n", + "3 7\n", + " 0\n", + "6 3\n", + "7 3\n", + "2 6\n", + "1 5\n", + "2 6\n", + " 0\n", + "8 4\n", + "5 1\n", + "3 7\n", + "1 5\n", + "4 8\n", + "4 8\n", + "8 4\n", + "1 5\n", + "1 5\n", + "5 1\n", + " 0\n", + "8 4\n", + "5 1\n", + "3 7\n", + "1 5\n", + "4 8\n", + " 0\n", + "4 8\n", + "8 4\n", + "1 5\n", + "1 5\n", + "5 1\n", + " 0\n", + "0 4\n", + "9 6\n", + "9 6\n", + "5 1\n", + "5 1\n", + "6 3\n", + "1 5\n", + "4 8\n", + "3 7\n", + "3 7\n", + " 0\n", + "0 4\n", + "9 6\n", + "9 6\n", + "5 1\n", + "5 1\n", + " 0\n", + "6 3\n", + "1 5\n", + "4 8\n", + "3 7\n", + "3 7\n", + " 0\n", + "4 8\n", + "4 8\n", + "1 5\n", + "5 1\n", + "2 6\n", + "8 4\n", + "5 1\n", + "6 3\n", + "6 3\n", + "6 3\n", + " 0\n", + "4 8\n", + "4 8\n", + "1 5\n", + "5 1\n", + "2 6\n", + " 0\n", + "8 4\n", + "5 1\n", + "6 3\n", + "6 3\n", + "6 3\n", + "Wyniki bootstrapowej wersji testu T-studenta\n", + "\n", + "Hipoteza: średnie są takie same\n", + "Hipoteza alternatywna: średnia jest mniejsza\n", + "\n", + "p: 1.0\n", + "Wartość statystyki testowej z próby: [10.61445555]\n", + "Wartości statystyk z prób boostrapowych:\n", + "[2.41883159], [-0.23249528], [1.12390297], [1.11803399], [-0.64465837], ... (i 95 pozostałych)\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print('Statystyki dla dwóch prób zależnych:')\n", + "p, t, ts = bootstrap_dependent(dummy2, dummy3)" + ] + }, + { + "cell_type": "code", + "execution_count": 315, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Statystyki dla dwóch prób niezależnych:\n", + " 0\n", + "5 1\n", + "8 4\n", + "7 3\n", + "3 7\n", + "3 7\n", + "8 4\n", + "4 8\n", + "6 3\n", + "9 6\n", + "0 4\n", + " 0\n", + "5 1\n", + "8 4\n", + "7 3\n", + "3 7\n", + "3 7\n", + " 0\n", + "8 4\n", + "4 8\n", + "6 3\n", + "9 6\n", + "0 4\n", + " 0\n", + "4 8\n", + "3 7\n", + "7 3\n", + "4 8\n", + "2 6\n", + "2 6\n", + "1 5\n", + "1 5\n", + "6 3\n", + "6 3\n", + " 0\n", + "4 8\n", + "3 7\n", + "7 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "2 6\n", + "1 5\n", + "1 5\n", + "6 3\n", + "6 3\n", + " 0\n", + "7 3\n", + "2 6\n", + "1 5\n", + "7 3\n", + "8 4\n", + "7 3\n", + "3 7\n", + "6 3\n", + "7 3\n", + "4 8\n", + " 0\n", + "7 3\n", + "2 6\n", + "1 5\n", + "7 3\n", + "8 4\n", + " 0\n", + "7 3\n", + "3 7\n", + "6 3\n", + "7 3\n", + "4 8\n", + " 0\n", + "2 6\n", + "0 4\n", + "4 8\n", + "6 3\n", + "0 4\n", + "4 8\n", + "5 1\n", + "3 7\n", + "1 5\n", + "6 3\n", + " 0\n", + "2 6\n", + "0 4\n", + "4 8\n", + "6 3\n", + "0 4\n", + " 0\n", + "4 8\n", + "5 1\n", + "3 7\n", + "1 5\n", + "6 3\n", + " 0\n", + "5 1\n", + "9 6\n", + "9 6\n", + "0 4\n", + "1 5\n", + "4 8\n", + "0 4\n", + "7 3\n", + "0 4\n", + "9 6\n", + " 0\n", + "5 1\n", + "9 6\n", + "9 6\n", + "0 4\n", + "1 5\n", + " 0\n", + "4 8\n", + "0 4\n", + "7 3\n", + "0 4\n", + "9 6\n", + " 0\n", + "2 6\n", + "6 3\n", + "7 3\n", + "3 7\n", + "3 7\n", + "3 7\n", + "0 4\n", + "7 3\n", + "5 1\n", + "5 1\n", + " 0\n", + "2 6\n", + "6 3\n", + "7 3\n", + "3 7\n", + "3 7\n", + " 0\n", + "3 7\n", + "0 4\n", + "7 3\n", + "5 1\n", + "5 1\n", + " 0\n", + "8 4\n", + "0 4\n", + "3 7\n", + "9 6\n", + "1 5\n", + "6 3\n", + "0 4\n", + "7 3\n", + "4 8\n", + "9 6\n", + " 0\n", + "8 4\n", + "0 4\n", + "3 7\n", + "9 6\n", + "1 5\n", + " 0\n", + "6 3\n", + "0 4\n", + "7 3\n", + "4 8\n", + "9 6\n", + " 0\n", + "9 6\n", + "7 3\n", + "2 6\n", + "9 6\n", + "1 5\n", + "2 6\n", + "3 7\n", + "9 6\n", + "9 6\n", + "2 6\n", + " 0\n", + "9 6\n", + "7 3\n", + "2 6\n", + "9 6\n", + "1 5\n", + " 0\n", + "2 6\n", + "3 7\n", + "9 6\n", + "9 6\n", + "2 6\n", + " 0\n", + "3 7\n", + "5 1\n", + "4 8\n", + "4 8\n", + "4 8\n", + "1 5\n", + "9 6\n", + "9 6\n", + "3 7\n", + "6 3\n", + " 0\n", + "3 7\n", + "5 1\n", + "4 8\n", + "4 8\n", + "4 8\n", + " 0\n", + "1 5\n", + "9 6\n", + "9 6\n", + "3 7\n", + "6 3\n", + " 0\n", + "6 3\n", + "9 6\n", + "1 5\n", + "3 7\n", + "3 7\n", + "9 6\n", + "7 3\n", + "8 4\n", + "7 3\n", + "9 6\n", + " 0\n", + "6 3\n", + "9 6\n", + "1 5\n", + "3 7\n", + "3 7\n", + " 0\n", + "9 6\n", + "7 3\n", + "8 4\n", + "7 3\n", + "9 6\n", + " 0\n", + "2 6\n", + "0 4\n", + "4 8\n", + "0 4\n", + "7 3\n", + "2 6\n", + "0 4\n", + "7 3\n", + "2 6\n", + "2 6\n", + " 0\n", + "2 6\n", + "0 4\n", + "4 8\n", + "0 4\n", + "7 3\n", + " 0\n", + "2 6\n", + "0 4\n", + "7 3\n", + "2 6\n", + "2 6\n", + " 0\n", + "7 3\n", + "0 4\n", + "5 1\n", + "4 8\n", + "2 6\n", + "7 3\n", + "4 8\n", + "8 4\n", + "9 6\n", + "0 4\n", + " 0\n", + "7 3\n", + "0 4\n", + "5 1\n", + "4 8\n", + "2 6\n", + " 0\n", + "7 3\n", + "4 8\n", + "8 4\n", + "9 6\n", + "0 4\n", + " 0\n", + "1 5\n", + "8 4\n", + "6 3\n", + "4 8\n", + "2 6\n", + "6 3\n", + "3 7\n", + "6 3\n", + "6 3\n", + "8 4\n", + " 0\n", + "1 5\n", + "8 4\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "6 3\n", + "3 7\n", + "6 3\n", + "6 3\n", + "8 4\n", + " 0\n", + "6 3\n", + "8 4\n", + "5 1\n", + "7 3\n", + "7 3\n", + "7 3\n", + "0 4\n", + "1 5\n", + "4 8\n", + "6 3\n", + " 0\n", + "6 3\n", + "8 4\n", + "5 1\n", + "7 3\n", + "7 3\n", + " 0\n", + "7 3\n", + "0 4\n", + "1 5\n", + "4 8\n", + "6 3\n", + " 0\n", + "6 3\n", + "8 4\n", + "3 7\n", + "9 6\n", + "9 6\n", + "8 4\n", + "2 6\n", + "7 3\n", + "6 3\n", + "1 5\n", + " 0\n", + "6 3\n", + "8 4\n", + "3 7\n", + "9 6\n", + "9 6\n", + " 0\n", + "8 4\n", + "2 6\n", + "7 3\n", + "6 3\n", + "1 5\n", + " 0\n", + "8 4\n", + "6 3\n", + "6 3\n", + "4 8\n", + "9 6\n", + "2 6\n", + "6 3\n", + "7 3\n", + "3 7\n", + "0 4\n", + " 0\n", + "8 4\n", + "6 3\n", + "6 3\n", + "4 8\n", + "9 6\n", + " 0\n", + "2 6\n", + "6 3\n", + "7 3\n", + "3 7\n", + "0 4\n", + " 0\n", + "8 4\n", + "7 3\n", + "7 3\n", + "8 4\n", + "4 8\n", + "0 4\n", + "2 6\n", + "0 4\n", + "5 1\n", + "0 4\n", + " 0\n", + "8 4\n", + "7 3\n", + "7 3\n", + "8 4\n", + "4 8\n", + " 0\n", + "0 4\n", + "2 6\n", + "0 4\n", + "5 1\n", + "0 4\n", + " 0\n", + "5 1\n", + "5 1\n", + "7 3\n", + "6 3\n", + "7 3\n", + "0 4\n", + "9 6\n", + "3 7\n", + "4 8\n", + "8 4\n", + " 0\n", + "5 1\n", + "5 1\n", + "7 3\n", + "6 3\n", + "7 3\n", + " 0\n", + "0 4\n", + "9 6\n", + "3 7\n", + "4 8\n", + "8 4\n", + " 0\n", + "9 6\n", + "1 5\n", + "2 6\n", + "0 4\n", + "3 7\n", + "3 7\n", + "2 6\n", + "0 4\n", + "7 3\n", + "1 5\n", + " 0\n", + "9 6\n", + "1 5\n", + "2 6\n", + "0 4\n", + "3 7\n", + " 0\n", + "3 7\n", + "2 6\n", + "0 4\n", + "7 3\n", + "1 5\n", + " 0\n", + "0 4\n", + "7 3\n", + "5 1\n", + "0 4\n", + "5 1\n", + "6 3\n", + "4 8\n", + "0 4\n", + "2 6\n", + "8 4\n", + " 0\n", + "0 4\n", + "7 3\n", + "5 1\n", + "0 4\n", + "5 1\n", + " 0\n", + "6 3\n", + "4 8\n", + "0 4\n", + "2 6\n", + "8 4\n", + " 0\n", + "3 7\n", + "6 3\n", + "2 6\n", + "1 5\n", + "6 3\n", + "8 4\n", + "9 6\n", + "3 7\n", + "9 6\n", + "1 5\n", + " 0\n", + "3 7\n", + "6 3\n", + "2 6\n", + "1 5\n", + "6 3\n", + " 0\n", + "8 4\n", + "9 6\n", + "3 7\n", + "9 6\n", + "1 5\n", + " 0\n", + "1 5\n", + "4 8\n", + "0 4\n", + "3 7\n", + "9 6\n", + "4 8\n", + "6 3\n", + "1 5\n", + "8 4\n", + "4 8\n", + " 0\n", + "1 5\n", + "4 8\n", + "0 4\n", + "3 7\n", + "9 6\n", + " 0\n", + "4 8\n", + "6 3\n", + "1 5\n", + "8 4\n", + "4 8\n", + " 0\n", + "4 8\n", + "9 6\n", + "5 1\n", + "7 3\n", + "4 8\n", + "9 6\n", + "7 3\n", + "0 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "4 8\n", + "9 6\n", + "5 1\n", + "7 3\n", + "4 8\n", + " 0\n", + "9 6\n", + "7 3\n", + "0 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "1 5\n", + "7 3\n", + "5 1\n", + "8 4\n", + "2 6\n", + "1 5\n", + "9 6\n", + "0 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "1 5\n", + "7 3\n", + "5 1\n", + "8 4\n", + "2 6\n", + " 0\n", + "1 5\n", + "9 6\n", + "0 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "8 4\n", + "4 8\n", + "0 4\n", + "0 4\n", + "1 5\n", + "2 6\n", + "3 7\n", + "1 5\n", + "8 4\n", + "9 6\n", + " 0\n", + "8 4\n", + "4 8\n", + "0 4\n", + "0 4\n", + "1 5\n", + " 0\n", + "2 6\n", + "3 7\n", + "1 5\n", + "8 4\n", + "9 6\n", + " 0\n", + "6 3\n", + "4 8\n", + "9 6\n", + "5 1\n", + "1 5\n", + "0 4\n", + "0 4\n", + "4 8\n", + "0 4\n", + "1 5\n", + " 0\n", + "6 3\n", + "4 8\n", + "9 6\n", + "5 1\n", + "1 5\n", + " 0\n", + "0 4\n", + "0 4\n", + "4 8\n", + "0 4\n", + "1 5\n", + " 0\n", + "8 4\n", + "9 6\n", + "1 5\n", + "0 4\n", + "3 7\n", + "1 5\n", + "2 6\n", + "5 1\n", + "7 3\n", + "5 1\n", + " 0\n", + "8 4\n", + "9 6\n", + "1 5\n", + "0 4\n", + "3 7\n", + " 0\n", + "1 5\n", + "2 6\n", + "5 1\n", + "7 3\n", + "5 1\n", + " 0\n", + "7 3\n", + "8 4\n", + "0 4\n", + "4 8\n", + "6 3\n", + "7 3\n", + "3 7\n", + "9 6\n", + "7 3\n", + "2 6\n", + " 0\n", + "7 3\n", + "8 4\n", + "0 4\n", + "4 8\n", + "6 3\n", + " 0\n", + "7 3\n", + "3 7\n", + "9 6\n", + "7 3\n", + "2 6\n", + " 0\n", + "2 6\n", + "4 8\n", + "9 6\n", + "3 7\n", + "2 6\n", + "4 8\n", + "6 3\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "2 6\n", + "4 8\n", + "9 6\n", + "3 7\n", + "2 6\n", + " 0\n", + "4 8\n", + "6 3\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "1 5\n", + "3 7\n", + "1 5\n", + "4 8\n", + "2 6\n", + "5 1\n", + "1 5\n", + "6 3\n", + "8 4\n", + "3 7\n", + " 0\n", + "1 5\n", + "3 7\n", + "1 5\n", + "4 8\n", + "2 6\n", + " 0\n", + "5 1\n", + "1 5\n", + "6 3\n", + "8 4\n", + "3 7\n", + " 0\n", + "0 4\n", + "6 3\n", + "8 4\n", + "1 5\n", + "1 5\n", + "4 8\n", + "3 7\n", + "7 3\n", + "4 8\n", + "3 7\n", + " 0\n", + "0 4\n", + "6 3\n", + "8 4\n", + "1 5\n", + "1 5\n", + " 0\n", + "4 8\n", + "3 7\n", + "7 3\n", + "4 8\n", + "3 7\n", + " 0\n", + "5 1\n", + "6 3\n", + "0 4\n", + "2 6\n", + "5 1\n", + "3 7\n", + "7 3\n", + "0 4\n", + "2 6\n", + "3 7\n", + " 0\n", + "5 1\n", + "6 3\n", + "0 4\n", + "2 6\n", + "5 1\n", + " 0\n", + "3 7\n", + "7 3\n", + "0 4\n", + "2 6\n", + "3 7\n", + " 0\n", + "3 7\n", + "8 4\n", + "4 8\n", + "6 3\n", + "3 7\n", + "7 3\n", + "9 6\n", + "6 3\n", + "1 5\n", + "3 7\n", + " 0\n", + "3 7\n", + "8 4\n", + "4 8\n", + "6 3\n", + "3 7\n", + " 0\n", + "7 3\n", + "9 6\n", + "6 3\n", + "1 5\n", + "3 7\n", + " 0\n", + "4 8\n", + "5 1\n", + "7 3\n", + "7 3\n", + "7 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + "7 3\n", + "3 7\n", + " 0\n", + "4 8\n", + "5 1\n", + "7 3\n", + "7 3\n", + "7 3\n", + " 0\n", + "5 1\n", + "5 1\n", + "8 4\n", + "7 3\n", + "3 7\n", + " 0\n", + "0 4\n", + "6 3\n", + "9 6\n", + "4 8\n", + "9 6\n", + "3 7\n", + "5 1\n", + "0 4\n", + "9 6\n", + "2 6\n", + " 0\n", + "0 4\n", + "6 3\n", + "9 6\n", + "4 8\n", + "9 6\n", + " 0\n", + "3 7\n", + "5 1\n", + "0 4\n", + "9 6\n", + "2 6\n", + " 0\n", + "3 7\n", + "7 3\n", + "8 4\n", + "2 6\n", + "7 3\n", + "3 7\n", + "4 8\n", + "6 3\n", + "4 8\n", + "9 6\n", + " 0\n", + "3 7\n", + "7 3\n", + "8 4\n", + "2 6\n", + "7 3\n", + " 0\n", + "3 7\n", + "4 8\n", + "6 3\n", + "4 8\n", + "9 6\n", + " 0\n", + "3 7\n", + "0 4\n", + "1 5\n", + "4 8\n", + "9 6\n", + "9 6\n", + "0 4\n", + "7 3\n", + "7 3\n", + "7 3\n", + " 0\n", + "3 7\n", + "0 4\n", + "1 5\n", + "4 8\n", + "9 6\n", + " 0\n", + "9 6\n", + "0 4\n", + "7 3\n", + "7 3\n", + "7 3\n", + " 0\n", + "6 3\n", + "1 5\n", + "4 8\n", + "6 3\n", + "7 3\n", + "4 8\n", + "3 7\n", + "9 6\n", + "4 8\n", + "8 4\n", + " 0\n", + "6 3\n", + "1 5\n", + "4 8\n", + "6 3\n", + "7 3\n", + " 0\n", + "4 8\n", + "3 7\n", + "9 6\n", + "4 8\n", + "8 4\n", + " 0\n", + "5 1\n", + "8 4\n", + "0 4\n", + "8 4\n", + "5 1\n", + "8 4\n", + "1 5\n", + "5 1\n", + "2 6\n", + "3 7\n", + " 0\n", + "5 1\n", + "8 4\n", + "0 4\n", + "8 4\n", + "5 1\n", + " 0\n", + "8 4\n", + "1 5\n", + "5 1\n", + "2 6\n", + "3 7\n", + " 0\n", + "6 3\n", + "2 6\n", + "0 4\n", + "1 5\n", + "4 8\n", + "4 8\n", + "2 6\n", + "0 4\n", + "5 1\n", + "8 4\n", + " 0\n", + "6 3\n", + "2 6\n", + "0 4\n", + "1 5\n", + "4 8\n", + " 0\n", + "4 8\n", + "2 6\n", + "0 4\n", + "5 1\n", + "8 4\n", + " 0\n", + "9 6\n", + "7 3\n", + "0 4\n", + "1 5\n", + "3 7\n", + "7 3\n", + "2 6\n", + "2 6\n", + "5 1\n", + "9 6\n", + " 0\n", + "9 6\n", + "7 3\n", + "0 4\n", + "1 5\n", + "3 7\n", + " 0\n", + "7 3\n", + "2 6\n", + "2 6\n", + "5 1\n", + "9 6\n", + " 0\n", + "9 6\n", + "6 3\n", + "3 7\n", + "5 1\n", + "5 1\n", + "2 6\n", + "9 6\n", + "3 7\n", + "8 4\n", + "6 3\n", + " 0\n", + "9 6\n", + "6 3\n", + "3 7\n", + "5 1\n", + "5 1\n", + " 0\n", + "2 6\n", + "9 6\n", + "3 7\n", + "8 4\n", + "6 3\n", + " 0\n", + "7 3\n", + "7 3\n", + "5 1\n", + "6 3\n", + "1 5\n", + "5 1\n", + "7 3\n", + "5 1\n", + "5 1\n", + "9 6\n", + " 0\n", + "7 3\n", + "7 3\n", + "5 1\n", + "6 3\n", + "1 5\n", + " 0\n", + "5 1\n", + "7 3\n", + "5 1\n", + "5 1\n", + "9 6\n", + " 0\n", + "8 4\n", + "2 6\n", + "5 1\n", + "7 3\n", + "5 1\n", + "8 4\n", + "2 6\n", + "3 7\n", + "1 5\n", + "9 6\n", + " 0\n", + "8 4\n", + "2 6\n", + "5 1\n", + "7 3\n", + "5 1\n", + " 0\n", + "8 4\n", + "2 6\n", + "3 7\n", + "1 5\n", + "9 6\n", + " 0\n", + "8 4\n", + "6 3\n", + "2 6\n", + "6 3\n", + "5 1\n", + "1 5\n", + "6 3\n", + "7 3\n", + "3 7\n", + "8 4\n", + " 0\n", + "8 4\n", + "6 3\n", + "2 6\n", + "6 3\n", + "5 1\n", + " 0\n", + "1 5\n", + "6 3\n", + "7 3\n", + "3 7\n", + "8 4\n", + " 0\n", + "9 6\n", + "5 1\n", + "0 4\n", + "4 8\n", + "7 3\n", + "7 3\n", + "9 6\n", + "0 4\n", + "6 3\n", + "3 7\n", + " 0\n", + "9 6\n", + "5 1\n", + "0 4\n", + "4 8\n", + "7 3\n", + " 0\n", + "7 3\n", + "9 6\n", + "0 4\n", + "6 3\n", + "3 7\n", + " 0\n", + "2 6\n", + "2 6\n", + "5 1\n", + "5 1\n", + "3 7\n", + "9 6\n", + "9 6\n", + "4 8\n", + "6 3\n", + "9 6\n", + " 0\n", + "2 6\n", + "2 6\n", + "5 1\n", + "5 1\n", + "3 7\n", + " 0\n", + "9 6\n", + "9 6\n", + "4 8\n", + "6 3\n", + "9 6\n", + " 0\n", + "8 4\n", + "2 6\n", + "3 7\n", + "8 4\n", + "0 4\n", + "4 8\n", + "0 4\n", + "5 1\n", + "6 3\n", + "3 7\n", + " 0\n", + "8 4\n", + "2 6\n", + "3 7\n", + "8 4\n", + "0 4\n", + " 0\n", + "4 8\n", + "0 4\n", + "5 1\n", + "6 3\n", + "3 7\n", + " 0\n", + "4 8\n", + "1 5\n", + "7 3\n", + "7 3\n", + "4 8\n", + "5 1\n", + "6 3\n", + "7 3\n", + "6 3\n", + "6 3\n", + " 0\n", + "4 8\n", + "1 5\n", + "7 3\n", + "7 3\n", + "4 8\n", + " 0\n", + "5 1\n", + "6 3\n", + "7 3\n", + "6 3\n", + "6 3\n", + " 0\n", + "4 8\n", + "9 6\n", + "7 3\n", + "5 1\n", + "7 3\n", + "3 7\n", + "7 3\n", + "6 3\n", + "7 3\n", + "4 8\n", + " 0\n", + "4 8\n", + "9 6\n", + "7 3\n", + "5 1\n", + "7 3\n", + " 0\n", + "3 7\n", + "7 3\n", + "6 3\n", + "7 3\n", + "4 8\n", + " 0\n", + "4 8\n", + "2 6\n", + "3 7\n", + "0 4\n", + "5 1\n", + "5 1\n", + "6 3\n", + "3 7\n", + "2 6\n", + "6 3\n", + " 0\n", + "4 8\n", + "2 6\n", + "3 7\n", + "0 4\n", + "5 1\n", + " 0\n", + "5 1\n", + "6 3\n", + "3 7\n", + "2 6\n", + "6 3\n", + " 0\n", + "2 6\n", + "5 1\n", + "7 3\n", + "2 6\n", + "2 6\n", + "5 1\n", + "9 6\n", + "0 4\n", + "2 6\n", + "3 7\n", + " 0\n", + "2 6\n", + "5 1\n", + "7 3\n", + "2 6\n", + "2 6\n", + " 0\n", + "5 1\n", + "9 6\n", + "0 4\n", + "2 6\n", + "3 7\n", + " 0\n", + "5 1\n", + "9 6\n", + "5 1\n", + "7 3\n", + "9 6\n", + "8 4\n", + "5 1\n", + "8 4\n", + "9 6\n", + "7 3\n", + " 0\n", + "5 1\n", + "9 6\n", + "5 1\n", + "7 3\n", + "9 6\n", + " 0\n", + "8 4\n", + "5 1\n", + "8 4\n", + "9 6\n", + "7 3\n", + " 0\n", + "3 7\n", + "3 7\n", + "3 7\n", + "3 7\n", + "3 7\n", + "4 8\n", + "7 3\n", + "0 4\n", + "9 6\n", + "5 1\n", + " 0\n", + "3 7\n", + "3 7\n", + "3 7\n", + "3 7\n", + "3 7\n", + " 0\n", + "4 8\n", + "7 3\n", + "0 4\n", + "9 6\n", + "5 1\n", + " 0\n", + "0 4\n", + "0 4\n", + "8 4\n", + "6 3\n", + "8 4\n", + "2 6\n", + "2 6\n", + "2 6\n", + "8 4\n", + "9 6\n", + " 0\n", + "0 4\n", + "0 4\n", + "8 4\n", + "6 3\n", + "8 4\n", + " 0\n", + "2 6\n", + "2 6\n", + "2 6\n", + "8 4\n", + "9 6\n", + " 0\n", + "5 1\n", + "5 1\n", + "3 7\n", + "6 3\n", + "2 6\n", + "1 5\n", + "3 7\n", + "0 4\n", + "4 8\n", + "9 6\n", + " 0\n", + "5 1\n", + "5 1\n", + "3 7\n", + "6 3\n", + "2 6\n", + " 0\n", + "1 5\n", + "3 7\n", + "0 4\n", + "4 8\n", + "9 6\n", + " 0\n", + "9 6\n", + "4 8\n", + "0 4\n", + "1 5\n", + "4 8\n", + "6 3\n", + "2 6\n", + "8 4\n", + "5 1\n", + "1 5\n", + " 0\n", + "9 6\n", + "4 8\n", + "0 4\n", + "1 5\n", + "4 8\n", + " 0\n", + "6 3\n", + "2 6\n", + "8 4\n", + "5 1\n", + "1 5\n", + " 0\n", + "7 3\n", + "8 4\n", + "0 4\n", + "7 3\n", + "2 6\n", + "9 6\n", + "6 3\n", + "5 1\n", + "8 4\n", + "7 3\n", + " 0\n", + "7 3\n", + "8 4\n", + "0 4\n", + "7 3\n", + "2 6\n", + " 0\n", + "9 6\n", + "6 3\n", + "5 1\n", + "8 4\n", + "7 3\n", + " 0\n", + "5 1\n", + "3 7\n", + "6 3\n", + "1 5\n", + "4 8\n", + "7 3\n", + "6 3\n", + "6 3\n", + "2 6\n", + "8 4\n", + " 0\n", + "5 1\n", + "3 7\n", + "6 3\n", + "1 5\n", + "4 8\n", + " 0\n", + "7 3\n", + "6 3\n", + "6 3\n", + "2 6\n", + "8 4\n", + " 0\n", + "8 4\n", + "5 1\n", + "1 5\n", + "7 3\n", + "1 5\n", + "5 1\n", + "5 1\n", + "3 7\n", + "3 7\n", + "4 8\n", + " 0\n", + "8 4\n", + "5 1\n", + "1 5\n", + "7 3\n", + "1 5\n", + " 0\n", + "5 1\n", + "5 1\n", + "3 7\n", + "3 7\n", + "4 8\n", + " 0\n", + "3 7\n", + "5 1\n", + "9 6\n", + "3 7\n", + "3 7\n", + "2 6\n", + "2 6\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "3 7\n", + "5 1\n", + "9 6\n", + "3 7\n", + "3 7\n", + " 0\n", + "2 6\n", + "2 6\n", + "6 3\n", + "4 8\n", + "2 6\n", + " 0\n", + "5 1\n", + "7 3\n", + "0 4\n", + "7 3\n", + "2 6\n", + "3 7\n", + "7 3\n", + "0 4\n", + "0 4\n", + "4 8\n", + " 0\n", + "5 1\n", + "7 3\n", + "0 4\n", + "7 3\n", + "2 6\n", + " 0\n", + "3 7\n", + "7 3\n", + "0 4\n", + "0 4\n", + "4 8\n", + " 0\n", + "8 4\n", + "1 5\n", + "7 3\n", + "5 1\n", + "1 5\n", + "1 5\n", + "1 5\n", + "3 7\n", + "1 5\n", + "8 4\n", + " 0\n", + "8 4\n", + "1 5\n", + "7 3\n", + "5 1\n", + "1 5\n", + " 0\n", + "1 5\n", + "1 5\n", + "3 7\n", + "1 5\n", + "8 4\n", + " 0\n", + "9 6\n", + "0 4\n", + "3 7\n", + "8 4\n", + "2 6\n", + "2 6\n", + "0 4\n", + "8 4\n", + "2 6\n", + "8 4\n", + " 0\n", + "9 6\n", + "0 4\n", + "3 7\n", + "8 4\n", + "2 6\n", + " 0\n", + "2 6\n", + "0 4\n", + "8 4\n", + "2 6\n", + "8 4\n", + " 0\n", + "9 6\n", + "5 1\n", + "8 4\n", + "4 8\n", + "2 6\n", + "3 7\n", + "5 1\n", + "1 5\n", + "6 3\n", + "7 3\n", + " 0\n", + "9 6\n", + "5 1\n", + "8 4\n", + "4 8\n", + "2 6\n", + " 0\n", + "3 7\n", + "5 1\n", + "1 5\n", + "6 3\n", + "7 3\n", + " 0\n", + "3 7\n", + "8 4\n", + "9 6\n", + "0 4\n", + "4 8\n", + "6 3\n", + "5 1\n", + "8 4\n", + "0 4\n", + "1 5\n", + " 0\n", + "3 7\n", + "8 4\n", + "9 6\n", + "0 4\n", + "4 8\n", + " 0\n", + "6 3\n", + "5 1\n", + "8 4\n", + "0 4\n", + "1 5\n", + " 0\n", + "4 8\n", + "4 8\n", + "5 1\n", + "1 5\n", + "6 3\n", + "3 7\n", + "2 6\n", + "9 6\n", + "1 5\n", + "2 6\n", + " 0\n", + "4 8\n", + "4 8\n", + "5 1\n", + "1 5\n", + "6 3\n", + " 0\n", + "3 7\n", + "2 6\n", + "9 6\n", + "1 5\n", + "2 6\n", + " 0\n", + "1 5\n", + "5 1\n", + "9 6\n", + "4 8\n", + "4 8\n", + "0 4\n", + "5 1\n", + "6 3\n", + "0 4\n", + "7 3\n", + " 0\n", + "1 5\n", + "5 1\n", + "9 6\n", + "4 8\n", + "4 8\n", + " 0\n", + "0 4\n", + "5 1\n", + "6 3\n", + "0 4\n", + "7 3\n", + " 0\n", + "2 6\n", + "8 4\n", + "7 3\n", + "4 8\n", + "3 7\n", + "9 6\n", + "5 1\n", + "9 6\n", + "2 6\n", + "2 6\n", + " 0\n", + "2 6\n", + "8 4\n", + "7 3\n", + "4 8\n", + "3 7\n", + " 0\n", + "9 6\n", + "5 1\n", + "9 6\n", + "2 6\n", + "2 6\n", + " 0\n", + "7 3\n", + "1 5\n", + "3 7\n", + "6 3\n", + "1 5\n", + "2 6\n", + "6 3\n", + "3 7\n", + "9 6\n", + "7 3\n", + " 0\n", + "7 3\n", + "1 5\n", + "3 7\n", + "6 3\n", + "1 5\n", + " 0\n", + "2 6\n", + "6 3\n", + "3 7\n", + "9 6\n", + "7 3\n", + " 0\n", + "1 5\n", + "5 1\n", + "0 4\n", + "0 4\n", + "5 1\n", + "1 5\n", + "0 4\n", + "3 7\n", + "3 7\n", + "9 6\n", + " 0\n", + "1 5\n", + "5 1\n", + "0 4\n", + "0 4\n", + "5 1\n", + " 0\n", + "1 5\n", + "0 4\n", + "3 7\n", + "3 7\n", + "9 6\n", + " 0\n", + "2 6\n", + "3 7\n", + "6 3\n", + "5 1\n", + "4 8\n", + "6 3\n", + "1 5\n", + "4 8\n", + "6 3\n", + "6 3\n", + " 0\n", + "2 6\n", + "3 7\n", + "6 3\n", + "5 1\n", + "4 8\n", + " 0\n", + "6 3\n", + "1 5\n", + "4 8\n", + "6 3\n", + "6 3\n", + " 0\n", + "1 5\n", + "1 5\n", + "6 3\n", + "9 6\n", + "9 6\n", + "9 6\n", + "2 6\n", + "1 5\n", + "8 4\n", + "9 6\n", + " 0\n", + "1 5\n", + "1 5\n", + "6 3\n", + "9 6\n", + "9 6\n", + " 0\n", + "9 6\n", + "2 6\n", + "1 5\n", + "8 4\n", + "9 6\n", + " 0\n", + "7 3\n", + "5 1\n", + "5 1\n", + "7 3\n", + "6 3\n", + "5 1\n", + "3 7\n", + "7 3\n", + "7 3\n", + "5 1\n", + " 0\n", + "7 3\n", + "5 1\n", + "5 1\n", + "7 3\n", + "6 3\n", + " 0\n", + "5 1\n", + "3 7\n", + "7 3\n", + "7 3\n", + "5 1\n", + " 0\n", + "0 4\n", + "6 3\n", + "4 8\n", + "2 6\n", + "6 3\n", + "2 6\n", + "0 4\n", + "3 7\n", + "1 5\n", + "6 3\n", + " 0\n", + "0 4\n", + "6 3\n", + "4 8\n", + "2 6\n", + "6 3\n", + " 0\n", + "2 6\n", + "0 4\n", + "3 7\n", + "1 5\n", + "6 3\n", + " 0\n", + "2 6\n", + "7 3\n", + "3 7\n", + "0 4\n", + "6 3\n", + "9 6\n", + "6 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + " 0\n", + "2 6\n", + "7 3\n", + "3 7\n", + "0 4\n", + "6 3\n", + " 0\n", + "9 6\n", + "6 3\n", + "5 1\n", + "5 1\n", + "8 4\n", + " 0\n", + "2 6\n", + "7 3\n", + "1 5\n", + "9 6\n", + "6 3\n", + "3 7\n", + "2 6\n", + "3 7\n", + "2 6\n", + "4 8\n", + " 0\n", + "2 6\n", + "7 3\n", + "1 5\n", + "9 6\n", + "6 3\n", + " 0\n", + "3 7\n", + "2 6\n", + "3 7\n", + "2 6\n", + "4 8\n", + " 0\n", + "1 5\n", + "6 3\n", + "0 4\n", + "3 7\n", + "9 6\n", + "1 5\n", + "5 1\n", + "0 4\n", + "9 6\n", + "9 6\n", + " 0\n", + "1 5\n", + "6 3\n", + "0 4\n", + "3 7\n", + "9 6\n", + " 0\n", + "1 5\n", + "5 1\n", + "0 4\n", + "9 6\n", + "9 6\n", + " 0\n", + "6 3\n", + "8 4\n", + "8 4\n", + "1 5\n", + "5 1\n", + "2 6\n", + "9 6\n", + "9 6\n", + "0 4\n", + "2 6\n", + " 0\n", + "6 3\n", + "8 4\n", + "8 4\n", + "1 5\n", + "5 1\n", + " 0\n", + "2 6\n", + "9 6\n", + "9 6\n", + "0 4\n", + "2 6\n", + " 0\n", + "3 7\n", + "3 7\n", + "5 1\n", + "1 5\n", + "4 8\n", + "6 3\n", + "4 8\n", + "2 6\n", + "1 5\n", + "4 8\n", + " 0\n", + "3 7\n", + "3 7\n", + "5 1\n", + "1 5\n", + "4 8\n", + " 0\n", + "6 3\n", + "4 8\n", + "2 6\n", + "1 5\n", + "4 8\n", + " 0\n", + "5 1\n", + "7 3\n", + "0 4\n", + "5 1\n", + "6 3\n", + "7 3\n", + "6 3\n", + "2 6\n", + "9 6\n", + "1 5\n", + " 0\n", + "5 1\n", + "7 3\n", + "0 4\n", + "5 1\n", + "6 3\n", + " 0\n", + "7 3\n", + "6 3\n", + "2 6\n", + "9 6\n", + "1 5\n", + " 0\n", + "1 5\n", + "3 7\n", + "2 6\n", + "7 3\n", + "9 6\n", + "0 4\n", + "1 5\n", + "3 7\n", + "2 6\n", + "1 5\n", + " 0\n", + "1 5\n", + "3 7\n", + "2 6\n", + "7 3\n", + "9 6\n", + " 0\n", + "0 4\n", + "1 5\n", + "3 7\n", + "2 6\n", + "1 5\n", + " 0\n", + "6 3\n", + "2 6\n", + "5 1\n", + "1 5\n", + "2 6\n", + "0 4\n", + "8 4\n", + "7 3\n", + "4 8\n", + "7 3\n", + " 0\n", + "6 3\n", + "2 6\n", + "5 1\n", + "1 5\n", + "2 6\n", + " 0\n", + "0 4\n", + "8 4\n", + "7 3\n", + "4 8\n", + "7 3\n", + " 0\n", + "5 1\n", + "3 7\n", + "4 8\n", + "9 6\n", + "3 7\n", + "9 6\n", + "0 4\n", + "6 3\n", + "9 6\n", + "0 4\n", + " 0\n", + "5 1\n", + "3 7\n", + "4 8\n", + "9 6\n", + "3 7\n", + " 0\n", + "9 6\n", + "0 4\n", + "6 3\n", + "9 6\n", + "0 4\n", + " 0\n", + "1 5\n", + "1 5\n", + "4 8\n", + "7 3\n", + "8 4\n", + "7 3\n", + "7 3\n", + "6 3\n", + "3 7\n", + "2 6\n", + " 0\n", + "1 5\n", + "1 5\n", + "4 8\n", + "7 3\n", + "8 4\n", + " 0\n", + "7 3\n", + "7 3\n", + "6 3\n", + "3 7\n", + "2 6\n", + " 0\n", + "8 4\n", + "2 6\n", + "9 6\n", + "8 4\n", + "3 7\n", + "1 5\n", + "0 4\n", + "3 7\n", + "4 8\n", + "8 4\n", + " 0\n", + "8 4\n", + "2 6\n", + "9 6\n", + "8 4\n", + "3 7\n", + " 0\n", + "1 5\n", + "0 4\n", + "3 7\n", + "4 8\n", + "8 4\n", + " 0\n", + "6 3\n", + "1 5\n", + "6 3\n", + "6 3\n", + "1 5\n", + "4 8\n", + "0 4\n", + "8 4\n", + "5 1\n", + "3 7\n", + " 0\n", + "6 3\n", + "1 5\n", + "6 3\n", + "6 3\n", + "1 5\n", + " 0\n", + "4 8\n", + "0 4\n", + "8 4\n", + "5 1\n", + "3 7\n", + " 0\n", + "2 6\n", + "1 5\n", + "5 1\n", + "0 4\n", + "2 6\n", + "1 5\n", + "7 3\n", + "3 7\n", + "7 3\n", + "9 6\n", + " 0\n", + "2 6\n", + "1 5\n", + "5 1\n", + "0 4\n", + "2 6\n", + " 0\n", + "1 5\n", + "7 3\n", + "3 7\n", + "7 3\n", + "9 6\n", + " 0\n", + "9 6\n", + "2 6\n", + "6 3\n", + "2 6\n", + "3 7\n", + "9 6\n", + "9 6\n", + "8 4\n", + "9 6\n", + "4 8\n", + " 0\n", + "9 6\n", + "2 6\n", + "6 3\n", + "2 6\n", + "3 7\n", + " 0\n", + "9 6\n", + "9 6\n", + "8 4\n", + "9 6\n", + "4 8\n", + " 0\n", + "5 1\n", + "2 6\n", + "5 1\n", + "3 7\n", + "4 8\n", + "4 8\n", + "2 6\n", + "8 4\n", + "3 7\n", + "5 1\n", + " 0\n", + "5 1\n", + "2 6\n", + "5 1\n", + "3 7\n", + "4 8\n", + " 0\n", + "4 8\n", + "2 6\n", + "8 4\n", + "3 7\n", + "5 1\n", + " 0\n", + "8 4\n", + "6 3\n", + "1 5\n", + "9 6\n", + "7 3\n", + "7 3\n", + "1 5\n", + "9 6\n", + "1 5\n", + "9 6\n", + " 0\n", + "8 4\n", + "6 3\n", + "1 5\n", + "9 6\n", + "7 3\n", + " 0\n", + "7 3\n", + "1 5\n", + "9 6\n", + "1 5\n", + "9 6\n", + " 0\n", + "1 5\n", + "8 4\n", + "8 4\n", + "3 7\n", + "3 7\n", + "0 4\n", + "4 8\n", + "1 5\n", + "2 6\n", + "0 4\n", + " 0\n", + "1 5\n", + "8 4\n", + "8 4\n", + "3 7\n", + "3 7\n", + " 0\n", + "0 4\n", + "4 8\n", + "1 5\n", + "2 6\n", + "0 4\n", + " 0\n", + "3 7\n", + "7 3\n", + "1 5\n", + "5 1\n", + "1 5\n", + "0 4\n", + "6 3\n", + "4 8\n", + "4 8\n", + "8 4\n", + " 0\n", + "3 7\n", + "7 3\n", + "1 5\n", + "5 1\n", + "1 5\n", + " 0\n", + "0 4\n", + "6 3\n", + "4 8\n", + "4 8\n", + "8 4\n", + " 0\n", + "3 7\n", + "9 6\n", + "2 6\n", + "9 6\n", + "4 8\n", + "0 4\n", + "6 3\n", + "9 6\n", + "0 4\n", + "9 6\n", + " 0\n", + "3 7\n", + "9 6\n", + "2 6\n", + "9 6\n", + "4 8\n", + " 0\n", + "0 4\n", + "6 3\n", + "9 6\n", + "0 4\n", + "9 6\n", + " 0\n", + "4 8\n", + "4 8\n", + "8 4\n", + "3 7\n", + "1 5\n", + "6 3\n", + "8 4\n", + "6 3\n", + "1 5\n", + "8 4\n", + " 0\n", + "4 8\n", + "4 8\n", + "8 4\n", + "3 7\n", + "1 5\n", + " 0\n", + "6 3\n", + "8 4\n", + "6 3\n", + "1 5\n", + "8 4\n", + " 0\n", + "3 7\n", + "1 5\n", + "4 8\n", + "2 6\n", + "2 6\n", + "7 3\n", + "8 4\n", + "0 4\n", + "2 6\n", + "0 4\n", + " 0\n", + "3 7\n", + "1 5\n", + "4 8\n", + "2 6\n", + "2 6\n", + " 0\n", + "7 3\n", + "8 4\n", + "0 4\n", + "2 6\n", + "0 4\n", + " 0\n", + "9 6\n", + "2 6\n", + "4 8\n", + "3 7\n", + "0 4\n", + "1 5\n", + "8 4\n", + "5 1\n", + "3 7\n", + "0 4\n", + " 0\n", + "9 6\n", + "2 6\n", + "4 8\n", + "3 7\n", + "0 4\n", + " 0\n", + "1 5\n", + "8 4\n", + "5 1\n", + "3 7\n", + "0 4\n", + " 0\n", + "0 4\n", + "5 1\n", + "4 8\n", + "8 4\n", + "1 5\n", + "3 7\n", + "1 5\n", + "9 6\n", + "2 6\n", + "3 7\n", + " 0\n", + "0 4\n", + "5 1\n", + "4 8\n", + "8 4\n", + "1 5\n", + " 0\n", + "3 7\n", + "1 5\n", + "9 6\n", + "2 6\n", + "3 7\n", + " 0\n", + "9 6\n", + "5 1\n", + "4 8\n", + "2 6\n", + "6 3\n", + "0 4\n", + "5 1\n", + "6 3\n", + "3 7\n", + "6 3\n", + " 0\n", + "9 6\n", + "5 1\n", + "4 8\n", + "2 6\n", + "6 3\n", + " 0\n", + "0 4\n", + "5 1\n", + "6 3\n", + "3 7\n", + "6 3\n", + " 0\n", + "9 6\n", + "1 5\n", + "4 8\n", + "3 7\n", + "4 8\n", + "9 6\n", + "7 3\n", + "2 6\n", + "3 7\n", + "4 8\n", + " 0\n", + "9 6\n", + "1 5\n", + "4 8\n", + "3 7\n", + "4 8\n", + " 0\n", + "9 6\n", + "7 3\n", + "2 6\n", + "3 7\n", + "4 8\n", + "Wyniki bootstrapowej wersji testu T-studenta\n", + "\n", + "Hipoteza: średnie są takie same\n", + "Hipoteza alternatywna: średnia jest mniejsza\n", + "\n", + "p: 0.97\n", + "Wartość statystyki testowej z próby: [2.4140394]\n", + "Wartości statystyk z prób boostrapowych:\n", + "[-0.40824829], [1.81071492], [-0.47733437], [0.12803688], [-0.46569032], ... (i 95 pozostałych)\n", + "\n", + "\n" + ] + } + ], + "source": [ + "print('Statystyki dla dwóch prób niezależnych:')\n", + "p, t, ts = bootstrap_independent(dummy2, dummy3)" + ] } ], "metadata": { -- 2.20.1