{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Phystech@DataScience " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Небольшое предисловие" ] }, { "attachments": { "photo_2025-03-28_12-31-03.jpg": { "image/jpeg": "/9j/2wCEAAUGBgoHCgoKCgoOCgsKDg4ODQ0ODhANDw4PDRAQEBARERAQEBAPExMTDxARExQUExETFxYXExYVFRYZFhkWFhIBDA8PGhYaGBkZGCMcGhwjJCEaGiEkJh0jHSMdJicbHCAgHBsnIiAfHB8gIiMdJycdIyIlIyUiISkpIf/////////AABEIAOEA4QMBEQACEQEDEQH/xAGiAAABBQEBAQEBAQAAAAAAAAAAAQIDBAUGBwgJCgsQAAIBAwMCBAMFBQQEAAABfQECAwAEEQUSITFBBhNRYQcicRQygZGhCCNCscEVUtHwJDNicoIJChYXGBkaJSYnKCkqNDU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6g4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2drh4uPk5ebn6Onq8fLz9PX29/j5+gEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoLEQACAQIEBAMEBwUEBAABAncAAQIDEQQFITEGEkFRB2FxEyIygQgUQpGhscEJIzNS8BVictEKFiQ04SXxFxgZGiYnKCkqNTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqCg4SFhoeIiYqSk5SVlpeYmZqio6Slpqeoqaqys7S1tre4ubrCw8TFxsfIycrS09TV1tfY2dri4+Tl5ufo6ery8/T19vf4+fr/2gAMAwEAAhEDEQA/AKekfCe6lXdqFzHCrL/q4k89s+8h2rn+9tVv96mI6Ox8DXmiM1zptzZsy5/eXVmFdNvXZJ+/YDj7y7d2aAOv/tbXrRv9J0iG4VfvNa3G1m9wkn7w9/l2/wDfNAEh8bW0S/6baXth/d82A7G47OjUgJdO1vSpr3dBext5kT7dzbPneRCU+dU52pu+b5qQzuleN18xZFaPdt3bhtznGM/dzu+WixBLtoKJAtABtpAUL2xhvYpIJ4/MhmQpIrfxBv5H/a/h+9QB8V+IdAm0G9ktJfmVfmhk/wCesLE7H+vG1l/hYFaoZ6V8I136ld/7Nof/AB6eD/CgD6cC1IEVyzJG3l/6xvlXd6t0rORSOWvrW5t42kjuH3Kobdy33eX+o2/Kq7dzMazkWcO1/s2x3a/8fablkVSobrkAbXx32/L83mDZ89ZDOe1OKO386CRvlmgVo153KWBwcdg0iFdrfN0X+9U8ozzuyufsO5mbzIZPvKy7l+bePnQryF+b+713fwrXQjM9BsdMmu51luY925mVlZdvkhUO98bkX5VO75WZdy/eb5WZhynvFpPaQqqxyI275l+YKG3Fv/r/ADf8C/3lzDNa2uYXZlRl3M33d3zZXjp97tVXBxNSquQR4piHUwIWdaAGMN9AFbyKoQ9tqUAU/PWkBm7W2/Mo8ttu1Vyu05/3W9vl/hx/3ywJD/ekXcy/eXjbj+/z/wCze60DOSOtQyz+R5wWSPLLv/1WMdN+7nt/vcf3fly5hm3Bdw7W8uQxxt/y1ZSux/r93HX/AGef4t1PmA5W00a0vtQ1P7TZQsu2B1VkRjiaS6AcOPmG5Yxu2/N0/u1YHP8Ai3w5a6ZYyS2yvDN5qfu0nkZNjScEh9/PA/u7W+593c1knZR6bq9vF5sWr+ZuSNpFuIA+3cM/JIu/PzHbu29v4ttAF0X2t27fvdOt7hf+nefY3Xribs3C/hQAL4qhi2re211ZN/E0sDtEp44DpuzSA1bPXrC+2+VdxszLu27trKPfd3/2aAPJfjBFH9k0yTaPM8+VVk2/N5bR5Iz6MwRvwoGYvwfT/Tr9v7tqi/8AfUqH/wBkoA+lwtRcCN4t+3/Zbd+hH9aloaJ2RX+8u6lYVzjta0KO4jkk+Vm2vt3KG2lgcY/h+8T97+L5v7tZyNTxC90q4eO4g+7N5XyyLv2zQqEKHLLuJj+ZVVvmVf8AgLLJRktpLTXPmSKq2rNvX5htXfLPsCDbuCbY2/h+8B/BTA7FL23/ANH8+QxtG2xZF+XfAr5IzuXy36/d9/8AZWoA6mLw4ssv7rHks7r5ifMn3CC+PnUnzAG3N/00V/vbmsRt6loNxFJ9ptmZdzK7Lu27H+XuPmI3Jt2/7Q2fLVhc7/T5WmgjZt27+Ld8pyv1pkM0KsggKM9MAENAEmKAIGqhmdLLQQyjvpk3Jv8AgO7d97d/D/49/nhqgsyb7VobFWVpv3iqPm43N6D7rct/UVHMXynzFqk019P5nmeXHvdvm+VE3P1+br82N237qj/ZqRnb+G9OubhZol1P7qptVbhHVSw6EL8uNuP87asg9E8OsyahfxXLD7WsFom3cPnjQSOSnqFWVf8AgR+f5KZRH8QT/wAStVX/AJaXEKq38TbhI+P/ABwVZJ6Uq7Nqr/D/AKtf7oXjB2/T/O1qQDQv/fP/AI83XKf8B/z/ABUAA/z/ALI/xoAy7vR7S7+aW1hk/wB6JGbP98nbu/2fvUAeGfEjS7XSYrJraHb5ksm5XZ50+QJ0SVm2fM//ACz21Qin8NRc3E9+1l5NpIqQeZuR3WUNIcIRu/djj5mX+E0Ae5i91WH/AFllBcLz81vcbG/74uNn3f8AeqRla58X29p5cdzaXkM03yxReR5rynv5ZiZlfbSKOMh+LumO3zWtyq/3v3bceuBJu/753UWDlO1PiS31O283TZluFbC7l+UoW/vo/wAybeW2svzbTXFVkzaBgRGZJGaXdItvKNv8W3lHcZHTcpP/AAEOv8S1MTQ5vT/D8mrfbZfMZVhleCL5fvBHdzxt5Ty5fl/h3M/92tDI1ovBMjsrSKu1nf5V/g3e/cfJ/wCPf7NUI9U0a2+z20a/xbR/wLgDn34rUg2CKoRVhh8rzP8Apo5b9AP/AEECmSWhSuAoK0XAQ09hmJqerQ6eu6T/AD9fSs3MdjMg8Q2l3uVZAv8AvMFVvz7/AOzVKdxGRda7CjSRq26RWK/7P3M9fu9tv+9T57C5Sl/wkNr/AM9k/wC+qn2ouU7Hd/F8q7fvL/E30/z81WUYy6bG8sjSqJFZv3a7S25Ng4w3Xofl/u5/jqLF3PKdM8Ltq2ntOzeWzS3Hl7m3oiLK+zI+6Y9xZty7W2/c+78yEY8fhmR45JbJmW9t32zweaisjqedj/J/vfxKyyD+9tWyDb8G3cl3rO65+WTyrhV3Lyx/0IY9yqw/MvuaCjr/AB+N9tp0f8UmoQLt+9tPlT/4iqJPT2H3v9pvm/vMcjBFADD/AJ/2Pf8Az/8AFUAOI/8AQvl+vqfagBp/z/teqUAeA/GA/wDIMX+L/S2/2fl8gf8AjuaYyH4QRbJdV3f3LVf9pvnuf8Nv4UAep+NNbk0HS7i7ix525Io93zKrynGcd9q7m2/3gKQj5LuNeb7TZXcbPcTRwI0/nvI264fzPOP3uBuK7fL2r8qf7VMo52KFtqqu7d8qqtIrlOn8OStaX0O5jtaVIJlRyjMjOAeV/u5Df7wFSUfXE+hyWkFx5F7M3yPuSZYp9+xDxny4pM7Rt+9UcoHN+DoL2L7VJHsmj81k2yylN20lyUKRuuNzlvm3fe+9TFI9E+3TJ/rbCZf+uTRzr+QZJP8Ax2nYgzNT1q3S0mXzJYZGQrGrxSwOxbpsyqc/7tMDc0ydbiCPbIskionmbfmbOO4+8DTA0iKCTndckubeKS5iw3kqX2t/sjJ/u/w1nIs4zw1rLW/nNfTvNJcMrNsQssL8ghyq8dlb6URA9Clv40VWX5t23bt+827pUzkM881fU2T5WhbdIzfMuGdQoznYy89f73b+9XKaHmd2lu67ombcqujNu+8WBAP3nb5v7y/Lx8lVEkq29vHcSNHHM/8Apbu3mPhVVFfGffcxDfxf+O/N0cvMZXPQv+ENX3/8c/8Aia05CeY4u3+MUm7dLpC/L/El4V+vyG2f/wBCqizUk+LNo8bLHZXMczKy/M0bKu4dRtk3H/vmgC94Y8e6RY6fZW080tvNCmyT91IytyTw6K3ruoGelWjWl2sN3B80cyhoWVCu4c7c+3X733ef71SByUVh9k1STUJJI/LkadZF37miEphMZAPy/KsfzNu+XI+9SGZHjTU7SWTTFVkby7xJZNrDc6IOpHy+pX5vetCDrW8daV5ir9o3bvlZtu5FGe/+f/iaBHaQzR3EayRsskbL8rK27ePrUgc3rWuf2Zu8yE7WX5ZVwwY4chDu24HB+b/gPyt81Azi9H8eSatfLZNGkPnMdsn32wuTgD/d/jb/APZAOM+L1xHLLpSqysqreeZGrDcpWSBCD6Hch/I1Yw+F+qQ6fFqcsrH79sjbcfLtE5zy3SokB1Hje9t/EejNHZN5lwrrPHF/G3lHEiAfxv5fmNt/i2lUqYzKPBNRsrfTLvyovP2zRKv+kQeQyOzkoCNzcNGB/tbs0y6Zt2tjGi7l2q38LMoZl4rO512Ox8I2Mct7ZRSskkMbu7R+V994vnj2egWTDN97/wAeqjKR9GX2oRW5jjf/AJbfLt+7kMQGx67chmVW3bc7KDmMPws0NvaTLxHHHd3S9lX/AFhwPf5cUgOyQq67lqyWYniH/kH3C/3lRf8AvqRKBo5nSNPt5bm6W5gVpGa2VWZfu7LKHJRvvYZv7rUwOt/spUX91NPD/uTll/KTzV/8doERT2t35bKt2rKysu2W3DNhveOSL/0FqYilp89yltb7bSOSNoom+Sfa7bkHJR4kXP8A21pDMaTxlpVpPJHc3H2eZdq+Wy79oXtmFpV7lqnlGT3F9p2reS0V3C0bM+6RWHyhh05/vcfK1RKI0eOeK9Ia0kWe0X93Gv8AeDLj74xnqFXb+n3qzsWchohuYWW5WEtDDhZNv3sMR0B25+5/OtTI+hP+Ept/9n/vmb/41VcxJ5JBomlW+mzXMth9qk/tS5s4/wB/JBtSJ5AvKbslVi+b5f4qo1M7UtPsrRtRiWyELW9n5uz7U8+yTeAkgkKrn76r5X3f4v8AZoA910Pw5pyWNk32C1+0Nbws0jQR7mdokJLnbuPzGkSeVfETUZrG+jtLZjDbrbxO0SKir5jSTDPyrx8oX7rbaqIjzmVLn5fNaZvM2qu9nbcW6Djf60xDrGwku723tIlVZJtyruUovzY5Py7sf7W3tVAet2/w/wB8a+bcqsjbvlRHZPl6YdlRh8v8W1ako3bDwvNpLeZFqbw/3vl3JleoI289f97/AGqkDr76D7XZSQXrQ/MjbmVtqp8nPB3/AMJ/nUiPMLXwBJp8sk8V7D827zFdirKmfuEo3H+1/e+79zdQB4z4x02PT5bdY7mK4WZHdWibcq84CE99y5/3vvVcQKGhSxvHJHJdG3WRvl2723FUOBsVedrER7ty7VYt838TkB1MVvNtmktpEZVQtJ5Uu5vlJ3/I7RNjbhW+X7wH3dzVjymkBt3rF7cRLaXreZHvRoZJcSujqckJMWeTMn3fm+8qimbQiU4reaWRY9u5W3K35Eke/wAoP3ag6DrPC1w1q/26xthefZ12sp37xlJBlPm4Td/d/ipnNM9xt75fECwstujQxurtvZ1ZJEJx5Z28mNhubcq9R/FuqDI4Hw3pE0t9JfLbpND9ouFVnb7h8w5ITd/d/wB7rVxA93Ei/wCVK1ZBzPiK4/0KaNdu5tu3c3dXQj7vzY/wNBRx+kXkf9rLJLJ5a+Vsj3MdjTMfnjBbqeVb/tmP7tUSet0CGNSEjwvxT4m+z6bZ2cEnzNawNOyH5sNEmIwf9pTub/Zwv8TUGp893Y2bdv8AdVvwcZqgYlhqVxp7eZFNLHu/uMV4+n3T/wACoJPpnw3qtl4jtPLaOOO72qrfKESXtlNvXdzuVvu5P3lqBliCS3itLLzJHj+TZLGuxgjv86cH5e0nyr6/drEoPt1l/wA9Zv8AvxF/8VRzByni1x4stPNuIIt/2RtSfUYpGTayGaKQSIU3bvlmfcv+zmugg52+137dHqc7SbbjU32tHs+7Cro4AO3aDujXdtoA+orPxroXlRxLqca7URfm8yJvkGP4419KnlEeD+O9WtdQ1SSWC4jmjWKFFkVgyttBJwf94mtIkFQ+dcNb7W3M0vy7XTb8oL/3to+5+lAzU0VGTX7CRlaPrtZvl5VJCf8Ax6gD3/7Z822WZNv/AC0+bb93B+Td9R/+2tZmoy9u5opYY12Rx7kVvmT+Inke+0foaAHzTsjK3mRbdybtzptZN4O87un935fX/doEY180yQTRxtHI0y7Pvxrv+QkONzfwsAv+z/wH5gD5v+IMTRX0cbfLtg3blYbWGXyRt/2h8v0/4FWhByVjYXEsfnqq+WsvlbtyL87AOMAtuO5SP4W/9CWmB7XPPa3EFhJIqWX9ovOyvBp8H7n7LO1tvn23KyHcz7m8tW/vfLtpcpRz9xoV7NJJaTQIkiyyQRo1xFA13PCVJW1851eT5fm3fKvzBd2/dtnkN/alyza4eJbn7Lt/dPPHFujju5YoT+8njt2kSYpHj7u3c38Ct/EuQr2xesJL/TP7RaDZG81v/aNtBFcRST+RIu92+z7l3xq3z7fvff8AK3bvmfIc/OYWkeMNT+1xssybZJrZJPk27lmuo42/i6/vCv4f3KkZtrr2o6fFdQWVwIdt7K21k3bYWMnmOPl2/e8v5fc/7VIvkOfu9d1W4kZZ9Tfy2R23LvTbsxk4RUb7xK/Lu6VREonYeF9DkeJtUnuHu90D+RGrzLv3B8uS+2QbmO1fu/3t33aszNDQNTht9NvWvl+1taz3Dt+4MvmouDGU+VuGX7rf3fmdvvNVkm0b/W7TSbK7aZ2uNn79NqN5QlJMZwV2kxqUjZvvcfe+9WMihtx4lvZVW7ik2q3yfd+RvXKfdz/491rK50wR5HqhVIN0jFlXy13fxYQYH/joqzTlMGcx+Yu5W2sqf+OjFUZWK1zLGjNtX5vl+bb7dP5VRmdT4T1KO3kVt21oWZ1/4ByR9GXNSxntlnb2urQNDuMce6FI5UYMzukc3JLLtJZQ33V+9WIEv/CE2/8Az8XP/fZ/+KpcoHnPi3wPp1jPpVtYxtD9vlKSM0skvyeZbZKGVmx8pP510GZqfE3TLO3j0qK2tIYZJrzbuiiRGYbMdo+RukHy/d3YoAvXnwktWWRoruVZm83y/lQIHYnZlew3Y3fw/wC792lcDxW5t1eVWltkt92xZI1yiKUwknTpuYFm2/dzWkSDvP7Q0NJbBWktI7dWbcqzurJ+6kA375OB5hVtzN/31u2qiifw9L9o1LTmtFhuljguWX5v3Tp5lzGTvEb/AMP+92+7SA9Cg8S6ddzxxWzWUl0rGKONJ5EVyxBKJIbZYZTuj+Xa3+596pKOhNxcJ5ayaQfmZtv+lQbnfBJHz7M/KC3+6v8As0AR/bP72jTr95fle3bn+5xc9P8AP8NIZG9xbS/LJpV13Xb5Qfb0yg2StQB84/E24h/tKPy45beOO3T5ZlMTIfNm5w/8H8O7+8P9mtCTe+H9npVxptxLqCzf8fTrG0UU8q7FhgYfPFFLHncS3zfNtoAsXd7ZWn2e0+xecumPP5G67MSSpNcfaU81BA8nyts+VZV3fdf+7U85tyFKPxrd/LHL5t3NHNPcK1vcyWSN9p++k6Rq7GKOT5omWWNlX5d33t1cxHIJbeJ7u4to7aRn8+G3e2V0vJ4IWD/8tJIE/eSSx/d/4+lWT+OgXIT3etW0RhvrODzLhdNtbL7X57eVDvtfnf7N5P8ArFjkZUbzVjbj5f7zFCJyGkBbRflkLLvgePcu1l+zzRzoD83P+rCt+LVkbcppXczSyTSqrs2/zdqL8u9yeu7oP9n2pGh0liba4Vt1tBNNsK+XN5mxS2CQDGyyAbh/tf7tMzke1W8aw2kawRhVjVFjRWKoiKQgAPzNhVwv8Tf7VWYHm1jYs97cS2k3zLLEisjFkYPEhcP8v8OJPvL8u07KANvUfEsemXM2nyLNCqsu25SCSVcOEfCbYvL387dzNtVsttbbtpiMTUdf+3W0KyLMrL97zWRVb38tJGx/wJV/2P4qw5TqpnEXNyv8ON21vvfdzjvQdBwOo3v/ACzX5vm3bl9epI9txNWjmmZNzcM//fTN/KtDnuNR2/8Aivy//XQxo+nfhxNvsrifdLJJaqjNGrFmYqJPkRPu4+6q7fQ1iaHpv9pXf/POP/v01Z8wcp85kL58MkVxMtvb7/JgfL+UXA37JFkWTG4D5WbcuB838Veh7I4vbGhr87axc2UqzNHHau7+W67mYvKkhOQ23K7Av3ewo9kHtj0ZPFMO5mVplZmLfN/fbzv+mjYC+Yv3ty/u/wDVL8tZ+xK9sT6J4ltNMjuI2WXbJcPKu1R8u7GAcyf3QKv2RDqm6fHNl/zzm+b73yp/8cqPZF+1R5H4g8vU9Umu4pitvJAEXepZ0PIOxFZFQcll+ZvmJ+Vt22r9mL2pBdostk1puiWOPyWtkVXVbd4pIyB918jyw21lVWXjfuZpGqPZFe2JrTdt2y3csbK3+siupF3heh2GL5C38S7m+anyC9qaa3Mibdur3a/9ty35Dy+TR7MftSydUm3K39rvujztZ4g7Lux0z/exR7MPanGyW8194i0y9kuo7iNbiyRmZdjv/pA48sR7cbn3bt3c0+QOcn8OaJPaas37+4sWurrUvOjiSWJriL95PFFvaLbvZo/+We6RV+597dUlklxoUF1PHcpHNJD9iubi5if7dAm+KVESVN8H9oyI38US/eZfvKv3kPnM7WPDmmaP/b872s10llDo0ttB9ong2NqDyJIu/wCWbZu2/wCs/efw0w5mVLbS9ORY7OK3kW4bw7Hq32prqZ9tx5Cv/qd3l+W38X+98u3bTGbEthFFFfySLNcfZtP0Hy4nupkRnu08uTe/zSbNqfdX+78m2kAl14btLVdVnit5r2OH7F5Fmss/7lL22853ke3/ANIk/efu4v8A2apFzHpmmaFo9vJf2VxbFVjeDy/Old5U821hLoJGk3fK3zfL60cg/aHG614b/s/dPZXCXcatu27dsyD3x8sm3+Lbt/3ankK9sRWt95v2dmaXbDKk6xrK6I7p0zsbkc/dapNNz1bRtVtEkvZ49itdNG6xbdhi8qJIyD/CQzJu3L61Rnympb3UM06rLINsm/cv8Dccgn7qDn+L733asy57HlnjuxhSeGOzstqt96WBS6Pu5IITco2sfvfL3rPlN6czyfyN/wDtbazO5O5xeqDY1XE5ahiE/L/n+KtTmNKxRpWjjX70jqq/w8scDntSYz7Y8KaZDplpNZLIkk1uuyZV+ba6u5yR975mJb8axZoH9ow/88V/74P/AMVWdjTmR89CavePnyyk1AFlJvmWpKQS3FAMgMzUiUmZt7qdvaKvmyDdz8v3mb8PwqGzdU2UIfEFs7bdzR/7/wAtL2hUqTOijm3r975drU+ZGXKxkly23buqgMvzPmoGUnb/AGm+VlZWVirKVOQQV+YHilYOYurL9rVftM003lujxrLPNLtcYw43ycFedrL8y1nymnORasV2+dFJJHdSMq/aUlk+0bMcjzt3mbOny7qzkddGLkeZXH2x1ZpJJ2jkSJW3zSS5EXMe8bmysbfd3fdydm2pNpwcSutzN/DcTeYsXkbld2/cLgeQH3bhFtO3Z92qMz2fRbNbjT45f3skm1Xk3PI2+CKQogIMnziPH7rd8qt8tIzjI0Ent4pZpIF8yKZIomaVp0udkP3P9IhnimVGX5Wi3srKE9Pm5zr+I6ey1BnkmknZGa4dX3IuxE2xpGiIm5sIscar971b+KrjMyqUDo1uV/u1upI4/ZtHM6npqpuntlb+9JEv8XqU9/8AZ/74rKZ0QuZMErSrujUt/tbT/OudnctTorTVZotqyx+cv4b1/Lr/AMCq4yM50SC81GO3gjuWjmmWT+0pXZbqSB4oLC5hh/dR/NCX8ubdtkXazLt/i3VqcuxlweGLq51C+s1nSRobqSBWW1mdW/diZHnePZDDuWRV+Xd82W2qtZ8pvGocFd6Jb6hY6E8c7x3eqy3iSq8TvEn2ebZ/yykaT9z9xFjibzvvP5VMjnMnV/Bc2kz2ayStJDeI7qzW5t5kKSeW6PDJI+DuKsrbvm/2aY4nsXg3w5b6JF57SCa4m/5acKqR7+AgPTd95v73C/w/NpEwmeiG5h+78v6U5IzTZF9sj/vL+n/xVTYrmZ85rLXecBZElAEqTfNtpFRQ93p3C1zltX1Zov3UXyyfxN/d9h71hOZ0U6Vjkl+Ro5GXdu+9u/iFcrkd0Ud1LodpcL8qtG237y1Nzf2Y+x0+409vlkWa3b5WXlWUe3/xNVzGUqRs3Hyfd+Zf4W5X9GXrXVCZ51SnymeS1aMxREY2/hX/AMdNIZJHFN/zzf8A75NAyG/ik/dtz/EnzfLt3dDg/wB3mueoejh52G+Wu3/drlud3xHN6zZ+VF58TFdzKs0attSXcQRkDr82Plb/ANlWtoHPUij0bWbSPR4LC0gmZfOt1eeNV2biwRB5hG1pNzI3yyfKv/fW4mZQMiPUW3bpW8zagTt0QYA/75rE3NW3vtjMv3lb5v8AdqLGlzqIrhXX722i5VhzT7PmWT/x6i5XIVnut6/e3UjSyRjynfTQuZEJ1S6t4Y444LOaOzd5Ip7q1Ev2aS9d5k+cy/xTQFv9U23Yn+zXRA87EaF2z1e/tPLZZobuSGaS6jluIRcOk8w/fOjrJFgSf7vy/wAG35dqmXTjzGLZajeWLacsLRtJp808tp/orzzf6Wsnnx7Ubc8ciuzbFXcv975ag0lBEq3Ml2lmJIYY7SNLmK0W3h+zwtukR5sDzHbKybPmZV/i+ZvmakOFjv7LVLeKCFZJN0isiSfun24lJEMjuF8uMsyeX8zL5m3cnzbquBlVidisbfMqqv8A31tWug82UrDfs8n90/8AfR/+KoDnPngxxp96Tb/vPXUYgJbX/nov/fRoActzao33v++VLf8AstAD7jVoYo/3a7mb7u75fxxWE5G9GNznZ7Zfs0kjL824Nu3d64+Y9PlKdlYyXG3cv7tf4qaGkduk6ou2kaI3Rcqkfyr838NSVYzYNYkdvKazl/66cKq+/PWtIM5q0LjrhJot3mXEe5f4UYN+YHzKP9pq9GB4VV8o20uZN372PbH/AM9F/T7y7TVcpl7Q0p7NnbctzLH/ALLRBlYfTbS5SvaHM62skUCszI3935NvtxlmWspxOulM5G3uZv8Alm38qw9kb/WOU3LLULi0ljkXDSK25VeJHVjgj7hXbnk/7XNaezOeWIbO81/RZNWZbn960i+asjJhuFlPljG3+FTtp8hMahzNposf/LS4mjVmVflQbevclUxU+yNPrJLJZW8W5VmeRv725F2/+hZrT2Jg8YJFLIn3m3LtLL8p3ZHbA/8AQvu1lKidVPGlkahvX/4quaUD0qeJuPhuY/NtfOWGSHzo/OS4l8mBk3AkSybX2p/vLt/v/LuqYxKnM6a5hsN03lfY/wC0ZLT/AEa2lXT/AN0/2n955iRSNpUlx9n/AOPZtqtt+/Whgc9brpUv21tTXTl232jrM1kd0Xl/vvtPlf7H/Pf7P+7+/wD7VMg62IaU+qaZFPbWa7r682/vbDY9n9iuPL3x2apD5PneU0D3H77d/wB9UFGV4bv7dH8MahItnb3ElxdRXMiQ29vsgltkePf8qqm2V1jSX/Wbfl3NvbegKFkLNV0j7TBZTXXm6wtz89lBvk/d+T/esmdZP9Qky+T/AMCoEa0strFBr9p9otWguItKnkSKGzik2b5PtyfJ5sEk8cezf9nbbGz7oVWX78lHsEZ839797zFb5lX+NTg43dDx826tIHNV0F8//a/8dSr5Tn5j42cLu3f+hN/hXaYD41j/AIsbf9//AOxoJNpEtv4WLbfmZeW4Xqcqv/stSVDU5ee7WWRmX5V/h/2R+FcNU9alE7C0C3cW1vuqwZv9o4rnOxC3Vx9kj2xqzf3VX+I1RRiWwuZZFaVvm3fdX7qigaR0l5cSRRful8yRfur/AA5Y4z/wGkWWrQzStCskgVVQ7o/4WdunP4UyDd8qO+jkjZR5yq23+99K6YTODE0rmXbXDI3lybGXdu3M21vpncn/AHz7V3o8D4Tpri3t7uJf3Y7N8zSIv/kNuP8AgVSLmOZ1G3j8v7q9typcFvYcMu6lyl85h/YW2sy/Kq/xNhf/AEPrVconMnis2iaORZEZlYfcbcylee3T/eo5SOc9BOpRpctJBcfu2X5kZj1Y5fJ/3iW3fw1PKXzmXdJN5rNEvmLJna277o6/Oe/+981UQUpbVU+7Ju+X72w7ffP60zPlGzRtF+727lXLbkUsOnrt3Y4pFkDSLt+aPcrLtVmztU5HI9+P/Hqk0jIz3Vfu8L975l/lx0rPlOmNQzzbybWZZgqrt3K2xfvexqOU6I1yo7XCfxRfL/tBv/QacYFOoUdv7zzfl3L/AAt0+bPUfjVSgOMjZjvm/wCWipuZfmZP4h/wJq5/Zm3tSdJo/wC9t/3qXshe3O40vzH8nbNEvl58tWUt97qPutml7MPrB3NskaWyxy3JaFW3Kqts29+u7/OK1hA5qtS47zbL/n4/8mH/APiq1ObQ8Ttl/i8yNf8Af+9/6DWoGu8luiqzSW0jf3VUfL9Tt5oEc14g1dfs3lRY/ffKzc7lC9QPmdQG+7XPUOmjE81WXZXIemtD0jw6y+UzN/E3/oIrM6Im/HAu5ty/L/WpNhojjT7tMuxm3NwsTSM33V+aqMZM88k1a4uJf3St/s1Zk5Hp2kzXW2Np4/3i/wASt8zD3FIvdFvVfLt5m+Vl3fP/AN9c/wB7ivSoyPmcXGzMwS7P4V/75/8Aiq2aOLoIZ2f73zUAVjuf5W/4D9aYmSorJ93+v86BGoob+Lb/AJ92pFmhb3PlN2X/AGlb5vm/nUFEjSrtVvL9WZWyrelMLjZGZ282CR1Vvl+ZTtU4wem5f/QaYrkLWk23b/Cv93+dSWiwul3Eu7dJuX+Fdu38zuqTTmK0+kyRf61d27+FVLrn0Oxf/Hfegq5m3WmyW6/vcRrt+XcsibT16Ou2qKUjlbkx/e+Zl/Ff/ZdtSdESsJF/h/8Aiv8A2bmpNeUux3n2dfu7flbduXdu3Z59/m/lVGUoG/aXEdwv3vur7L90/wC01PlMXGx2litpcL5Uv2lWX7rbE3fh6jbj+KpJK32S0/57XX/fCf8Ax2gk4uHRo3+9cqv+8hX/ANmplcxcjWGJliZYWb+HehVm/DzOf++aXMUcJ4juo5blUXyV8tPmWJQvzEnr83WuaZ3UEcgT81c51naaLfbI2j/u43N/CpckDJ7bsfLUmykdIl3/AAs3+Wzj+R/KosaKZZiloNTI1K3a7/dbvlb723/Z7VZEkLYwQ26/usf7ysG/WmSjq7GXypN27b/6FRYmcyhqEn2iZpGY9l+9/dr0qMT5nFSuwtbaa4k2wK7fL/E21fpn/are5zWND7NGkrRSTIsiq3y/P8u0AnJVueo+6vcVPMaeyZkzv5Sr8vzbjubb835f+g0cwuRluzLOyt8vzZ9dy/X5aOYXJY0wNn8Xy0gLCbfb/gK/40gJwy/3v/sqBmpb23mtt3H+H5lXdSY1E1HsVt/mbdIv977v/wBlUlcpGstujbmaVV2/dVtv8qdySynl3Hyx3Ui/8BDfn9zii5Zk6rot3cK23VTMqrtWPbt7eg6dvmqeY6lE8wbTLvT2bzJI1jb73msW3bcfwFeafMJGbLBHM25Ywv8Ad2rtX8M1ibkUdvs/hT/dq0JyOi0+0jeSNZI/4h/tL/483FUZs9PstPVFVo5EZv8Ac+b5ScDnptzt/CkSaX2Ob/no/wD3zHQOx4gb2Z/T5cr93d+PzVoZo9G0OL7doWp2jL5l1qN+8VszL832i306O7g5/wBqS32/8C/2q5Kh30zU1nQoNTi0DTfKWeKwuLq3n2P5Hm/ZLKPz98m15P8Aj53b/LVpNv3Pm+asjc5O78DabFJ9qjt5Jo10dr5dOSW6/fTJM0bbXmVL7ylXa7JtVqQyC0itNJ0rxLI+k3MMLRaFP9huLjb+8lnuP+Wyf6R5W/5l37Zv92kBtzeHrW3k1G2iadbdr3w5tj+0Sf6u9f8AeJ/002+Y215NzL/wGgZGmhadfy3MUHmaf9i1qPTmna5efzoHlmi+5L+7jk8yP90y/wCxv3fNuCucxPFdhaafbLNaLLDJ9rntWjb7YyPGkW/fvvYomEyt8rLH+72tQHOS+KrKb+0IVjheGGS205WnEL+XEHhjR5C+3y/3f3m3N/vUw5zpr7wxZrO1tZpcpNDqENn967/0mN9/m75LyBbZZfLTzVa13Lt+4rbl3BIr+GLBrzSJGWVYbv8AtTzoknu/+XGJmjeN7lIph/tfL5bN9z5a05zH2UCpYG0+zaZLJBM39q6h9jZFv7hVhila3j+//rHdWl3fNtVudy/d2nOL2UC5ZaXG0mnQyzXDR/aPEcU2yZ13pY7Nny/dR28lWbaq7m+9UlchQstLt9Qh0+4WCZVmtNWuJLGK6kla4l0ySJEjhmk/ffvvN+dV/ufJt+agXsyvc2sdvb6Rcx20tm19FqLSxPLPKrfZrm3jidfP/eBGjdmT+La4+Y/eranI5a8CtENn+8zV1nmEiFvMX7u7/vmnYm5riSPb8q/+zbRRYq4RS/Lt3Nt/h24+U+tS0WpEy3/lN8y/N+H/ALNSsPmGyXsku75Qyr/E3y8elSaD5dRuEj+X5l/2F3fd6Z9qQc5yM+u3vmfMu1v4vl2tn1quQPamXd6irr8yurL/ABMvdffb9aTiVCRjxXC/3Vb/AGl+Vvp8tZWOjmLaTRu3y71Xn733lq0jORswRRuq7WO5Vb+H5flq7GXMdbbRXMq7Y5tyqvys3y7T6ZG3NTYakJ9l1X/n4P8A33RYfOeaxqu3/drQzuRSTMm3y5HjZX81dksibJFXYJAEZMSbfl3r8235azlA2jUOZuJrqJlaO6nVo3eWNvtEu5Jpf9ZIjeZxJJ/E6/M38dc0onbCoZv9r3rzxyte3TTR58uU3E5lTecnY5fcm5juba3zVidJqReY/wBoae6m3TbHn3SyN5xTLIZdzfvCufl8zdtzUmliS2vLi4aT9/O23ymZmup9zfZ/9SeX5Mf/ACy/ij/h21Qi9GrTbo2mlZZH82RWlkZXkyT5jhm+eTc7Nvb5txquUhyOni0+TUP3k801wyqVXz5ZJ2VP7iF2fAZsfKvy1pymDkTSNdNH5Et7eeS6+W0DXdw0ezpsMbS+WU29mXbVcpj7QuNFvWHzJJZvJ2+TvmlfytvTy8yfujx/yz20+Uj2hHP5krLI11cMy79rNeXDMvmjD4Pm7vmX5W/vL8tLlLjUMNyz/LE0q+S++ONZZFVHUp88Y8zaj7kX5l2t8ooK5jXtPLTy2a4l8z94/wAtxPuV5v8AXciTrN/y1b/lp/HurXkMJ1ScXP2e5hnijEnkrJ5ayvK0Si4x5hjUSq0Ltjd5sLK27+9S9kKNcuXWpTai1vu2rHbpKIo1Msp/fukkxklnklmleRkX5mbsPlohAmrVuSKrPXUcJdXbTJsRyP8Ad+7t/wB3+tArk73Kp8qyfL/3zSsHOOS3hddyt/s/fFFg5ys+2H5VYMq/7P580rlFm1n3/Ltb/ZbcWVfes7nTCJb8hZWXdtkZW/j/AIt3p60rl8piXunxvu+VV8v+H7rf/XpDsc/LZrbx/NtVv8/3qAKCjZu+X7v8qLgbFqWl+XdtX5aq5nynYxW/7vbuO1v7jbfrmi5HKWvsEf8Az2f/AL6p3Cx5Sgjf7rfN/doQ7AbXzZFVfvfdouWolK9sZIm27d3Vfl+b7tZSNloYjaXI8nzKq/5/WseU6YVBssMKfKzO3/jv6VHKdHtDRS1WKNtsiqu3+H17c96fKLmH2kMaMqyfN/ut+Qpks9Dtr2OJdrKNu75W53KK0MGR3hh81drfw7m/i3H2pmZEsi/dXa1MghkXZ/tNSZoinPFsbczbf91aEiuYhijX5v4a1SOWRMLdnb5V3f41RkWUDRN/7LVCki2JG/z6VZhcvRN/e+X/ANmqS4k8v3fu7aAlEiFor7WX5l/9Bp3M+Qc9nCnzLJ+7/wBr5WWi4+QhmG9dy4X/AIF978KzN4xCVt+1VVv4futtrM2LaT+Uv/xPzN/+umQQNcN/rGhb/vrczbemauxBm3Lq6qy/xf5IzRYrmMbyd7N8rL0qLGlzTsbFvMZWVqBnVWIk3L/478vCigg6fyG/vUCOdT4cq/8AzFrj/vzbN/7JXJzno6Gl/wAK63/8xaf/AMBbT/41RzgXE+HX/UYn/wDAWzb+cVPmFzB/wrBXZW/tif5f+ne0X+SUXFzER+D9tL8zarP83/TC3/8AiaVyucur8Irf/oL3Hy/9O9v/APE0xc5ZPwihf5v7Vm/8Bbf/AOJoD2g8fCWP/oLz/wDgPb//ABNMjnJP+FUx/wDQVm/8B7f/AOJoJ5yzJ8L43bcuovH/ALKWsCigOYb/AMKvX/oKyf8AgLb/APxNMfOMb4WRv97VZm/7d4P/AImgOccnwwjRt39pyN/vWtu3/stVcz5oj1+G2zbt1OT5fu/6PBTuHNEG+Gau3mNqcm7/AK94aOcPcHf8K2j/AOgi/wD4Dx//ABVHOR7g8fDlf+gi/wD4Dx//ABVHOL3CceAf+oi//gOn/wAco5yuaA5fAKp929/8gD/45Rzk+6D+A1ddrXn/AJB/+20c4e6RH4fQ/wDPyP8Avx/9to5x3HL4AhRdv2st/wBsuf8A0ZRzkh/whMKf8vJb/gG3/wBqUuYCOTwhb/8APw//AHwP/iqrnFYzX8D2m3b5z/e3f73/AI9Ve0F7Mg/4Qm03bvOk/Sl7Qr2Zd/4Ry3T/AJaP+lT7Qr2Y0aRCn8Ro9oP2YfYY/wC8aPaD9ma8UlYXN7GijUXCxcV6RBOktAi0stFiS0k1VYRdSamInD0yGO3UE3G5oC4ZpiuG6gLhvphzBuoDmDfRcXMN3UXDmDdRcXMNzRckM07gN3UXAiaalcdyo01FyrlV5qY7lRnpXLTIGkoGVmkoKKjPSKKTtQMg3UFDo2rEovJJQItq9MROslBJYV6oROr0yCystIknWemQTrNTJJxNVCHCSgB26gm43dQIN1ADd9AXG7qCeYN1Mdxvm0BcYZqAKzTUAVmmpDIGloKIGkqiisz0hkDSUiisz0FFdmpGhUd6B3It1AxyNWJoW0koEWVemQWVegRKJKoRKslMgmEtBJIJaoglE1IkeJ6okcJ6BEwuKCRfPpiDz6ADz6QrjPPoK5SMz1RIwz0AQmagZEZqAITLQURGWgZEZaCiFpKRRAz0hlZpKCiBpKRZWaSgZB5tBRKjVibFkNQSWVegkmD1QiVXoJJRJTIJBJTJJN9UQx3m0yR4loJDzaCRfNoAd51BNw86gBhmplRRjS6l83yt/wAB/iqDtgi1b3TSr81UctUs+dTMRplpgR+bQMYZKBjDLQUQmWpGRGSgoiMlAFdpKCyBmoLKzSUFke6kMkVqxNydWoJLAkoJJVkqhEwegkeJKZA8PTJJPMqiBwkpkjt9BI7zKCQ82gA82gloryz7FZv7tBpCJVivt/8Ad2/w/wBak6eQ5yaVXnZf7zfK33aAudJbnZGq1RzTJ/NpmbAy0xDTJQAwyUFEZkoGMZ6kZCZKBkRegoiaSgtEDSUFEDNQUR7qQyUNWB1EgagklDUySYSUCHh6ogmDUCsPD0GdhwlqhWHeZQSOMlUSG+gVg30E2Ay0AZN/P+72r/EyrSOiBiB1iZlk+Zd3y9f5hXWpOqKCSSN1+XC/+O/z2UDlEiiv5E+6zN/vf7P1pmLgdFa3LSruaqOSZaMtUZC+ZQFiMyUhkZegYwyUFEZegZEWpFkJegZEzUFkJagZHuoKLSmuc7B26gkeHoJJA9AiZZKoiw8NQKxJmmTYXNMmw7dTIsG6mTYdvoCw3fQKxlyTz3DtFZ273DQsiyMuxUWRxvSIGWSJWkZcNsXc20j5fmWkdcKJylxrC7Y5ZVeOFnkRZJfkV5IceZHsdlZHj3/MrKvQ/wB1qRr7IzrXUkumjis9l5cTF1jSJ43OUjeU/ebaNsaFvw/2qBxgYkWuRYjn+0w7J/Mb/j4jZ0Ecip+9Tdui3M3ybvvLmmPkNX+1I44ZL1P30FpsaSVHjKIX3mONn8zbvk2fL9R/eoF7M6i01q0iVllu7WPa5Xct1E0b42kmOTdtkHP8PvTOWpRNdtTtkdYmuYVlk27UaVFc7vu4TduNWYezLvmUGbQnmUCsML0FEZkpFDC9AyEtQMYWoKIS1AyAtQMZuoKLgNcp3EmaCR4piGb6BWLPzUyRUoJsWA1USPBoFYb5q0ybEhamKxGTQJoYWoBI5G0mTfJFcz2TWjXsU8lrexTo/wAsSR/a7O7t2ZvP2ps2bV27N38W5kehAVNVtriDT4P7Tmjs7bV53kW68yW4+yvJHJay+VKjrLtb+KRG8vfudd26g1N//hJLZNT8OXLX67oW1WK/lW4kuNsVwn7jzZvJg3J53lsv7rarfc+VaBHMaPrC28eiLLdQzXlvFriXLyvO37y4uE2P9qRfMheZd3lT7W+X/gNAE+ta1E9j4htoNVeb7StnKqyNs81vKdLqKN44Iln/AIVdtitJ8qv/AHqANu71dHutVm02/jsJptTina6dZNlxZ/ZY402bYn83y7jzN1v8u6kBm2Uv/EquLKW4+zq39oMvkW728sn2iTfCkli8M8MqyfJ5TLLHJbr+63bt1Mg2gzfxVZ5jWo0tTIsG6gLDS1A7CFqB2Iy1ILEBagqxEzUDsQlqB2I91IZZ31znoFpW30Ek+aYhQrf3qBFkGmSBloJsIHpiHhqCbABTCw+gmwoWi4rEEnyf3qLlpHAa0Nki7v7v973NBpY5V2qxkhWT+63zUASsdlACBqCdTq9MnV4m3fKv3d36jNIDpYJd6r8y/Nn+Ifj96pJcSyd38VWYuAzdVCsQmSgLDd1ArCFqCrEZakFiItQOxAzUDsQtJQVYi3UDsWpKwOsmioEaVIksCgCSmIgb71BJVX/Wf8CpkmgKBE6/w0CAfeoETimIrS0GkTgvEX+v/wCA1SLZxkv3qoRrN/rP+2X/AMRQMhj+7/wJKAFn/wBY3+7QI2bL/jym/wB4/wAhSJJLD7/+f7hqDQ7SL/Vr+P8ASqMZkbfeqzIjoAbQBCaBkZ+7QBWagojpARPTKGUAf//Z" } }, "cell_type": "markdown", "metadata": {}, "source": [ "В погоне за сложными моделями машинного обучения, которые могут делать различные крутые штуки, многие аналитики незаслуженно забывают про статистику — фундамент, на котором стоит весь Data Science.\n", "\n", "![photo_2025-03-28_12-31-03.jpg](attachment:photo_2025-03-28_12-31-03.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Статистика делает тебя сильнее как аналитика, так как она даёт уверенность в результатах, учит критическому мышлению и помогает объяснять выводы бизнесу или научному сообществу. Даже самая продвинутая модель будет бесполезна, если мы неверно интерпретируем её предсказания.\n", "\n", "Так что давай вместе укреплять базу — ведь именно с неё начинается настоящий профессионализм в Data Science." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# Bot check\n", "\n", "# HW_ID: phds_sem6\n", "# Бот проверит этот ID и предупредит, если случайно сдать что-то не то.\n", "\n", "# Status: not final\n", "# Перед отправкой в финальном решении удали \"not\" в строчке выше.\n", "# Так бот проверит, что ты отправляешь финальную версию, а не промежуточную.\n", "# Никакие значения в этой ячейке не влияют на факт сдачи работы.\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2022-09-09T09:27:15.824446Z", "start_time": "2022-09-09T09:27:04.991121Z" }, "id": "ndEYtj3bcRhF" }, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import scipy.stats as sps\n", "import seaborn as sns\n", "from matplotlib.lines import Line2D\n", "sns.set(font_scale=1.5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Задача 1\n", "\n", "### Свойства оценок" ] }, { "cell_type": "markdown", "metadata": { "id": "aiqNNbQdcRhQ" }, "source": [ "### 1. Несмещенность оценок\n", "\n", "**1.** Пусть $X_1, ..., X_n$ — выборка из распределения $U[0, \\theta]$. Рассмотрим оценки $X_{(n)}, \\frac{n+1}{n}X_{(n)}, 2\\overline{X}$ параметра $\\theta$.\n", "\n", "Давайте попробуем определить какие из этих оценок являются несмещенными, не используя теоретических выкладок." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для начала вспомним,в чем смысл несмещенности" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Теперь, чтобы решить задачу, визуализируем свойство немещенности." ] }, { "cell_type": "markdown", "metadata": { "id": "AQHcmOr8cRhQ" }, "source": [ "Реализуем выборку из равномерного распределения размером `sample_size`=100." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "5JoJRXcEcRhQ" }, "outputs": [], "source": [ "sample_size = 100\n", "X = sps.uniform.rvs(size=sample_size)" ] }, { "cell_type": "markdown", "metadata": { "id": "b4wmITktcRhR" }, "source": [ "\n", "В этом случае мы сгенерировали выборку из распределения $U[0, 1]$." ] }, { "cell_type": "markdown", "metadata": { "id": "eTSaPvKIcRhR" }, "source": [ "Реализуйте три функции, каждая из которых на вход берет несколько выборок, а на выход выдает массив оценок \n", "(первая функция - $X_{(n)}$, вторая функция - $\\frac{n+1}{n}X_{(n)}$, третья функция - $2\\overline{X}$) для каждой выборки." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "yhU9CTfGcRhR" }, "outputs": [], "source": [ "def estimate_X_n(X):\n", " \"\"\"\n", " Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)\n", "\n", " \"\"\"\n", " return <...>\n", "\n", "\n", "def estimate_X_n_corrected(X):\n", " \"\"\"\n", " Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)\n", " \"\"\"\n", " return <...>\n", " \n", "\n", "def estimate_2_mean(X):\n", " \"\"\"\n", " Принимает на вход массив размером (n_samples, sample_size), выдает массив оценок размера (n_samples,)\n", " \"\"\"\n", " return <...>" ] }, { "cell_type": "markdown", "metadata": { "id": "khGxlI4mcah4" }, "source": [ "Проверим, что ваши функции реализованы корректно (ячейка не должна выдавать ошибок)." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "gdlAXYgIcRhR" }, "outputs": [], "source": [ "X = np.array([[1, 3, 3902, 6], [2, 5, 69751, 89]])\n", "\n", "\n", "assert(sum(estimate_X_n(X) != np.array(( 3902, 69751))) == 0)\n", "assert(sum(estimate_X_n_corrected(X) != np.array((4877.5 ,87188.75))) == 0)\n", "assert(sum(estimate_2_mean(X) != np.array([ 1956. , 34923.5])) == 0)\n" ] }, { "cell_type": "markdown", "metadata": { "id": "A808SaBDcWYU" }, "source": [ "Зададим список оценок и разные параметры для отрисовки графика" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "rWZsy0TacRhR" }, "outputs": [], "source": [ "estimators = [\n", " (estimate_X_n, r'$X_{(n)}$', 'blue', 0.0),\n", " (estimate_X_n_corrected, r'$\\frac{n+1}{n}X_{(n)}$', 'purple', 0.1),\n", " (estimate_2_mean, r'$2\\overline{X}$', 'green', 0.2)\n", "]" ] }, { "cell_type": "markdown", "metadata": { "id": "XUWdaQC8cRhS" }, "source": [ "Мы хотим понять, являются ли оценки параметра $\\theta$ смещенными, для этого нам нужно провести множество экспериментов (сгенерировать выборку много раз, так как при каждой генерации получаются разные числа)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Напишем функцию построения таких графиков в общем виде: на вход функция может получать любые распределения (`distributions`) и любые оценки (`estimators`)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def est_plot(distribution, estimators, sample_size, sample_count):\n", " '''\n", " Построение графика разброса реализаций оценок и их средних значений.\n", "\n", " distribution -- распределение формата scipy.stats\n", " estimators -- список оценок и параметров для отрисовки графиков\n", " sample_size -- размер выборок\n", " sample_count -- количество генерируемых выборок\n", " '''\n", " X = distribution.rvs(size=(sample_count, sample_size))\n", " plt.figure(figsize=(15, 0.7*len(estimators)))\n", " for estimator, name, color, y in estimators:\n", " E = estimator(X)\n", " plt.scatter(E, np.zeros(sample_count) + y, alpha=0.1,\n", " s=100, color=color, label=name)\n", " plt.scatter(E.mean(), y, marker='*', s=300,\n", " color='w', edgecolors='black')\n", "\n", " plt.vlines(1, -1, 1, color='r')\n", " plt.title('Размер выборки = %d' % sample_size)\n", " plt.yticks([])\n", " plt.legend()\n", " plt.xlim((0.8, 1.2))\n", " plt.ylim((-0.1, 0.1 * len(estimators)))" ] }, { "cell_type": "markdown", "metadata": { "id": "AnM9dP-5cRhT" }, "source": [ "Постройте три графика, с помощью функции `est_plot`. В каждом эксперименте будем генерировать 500 выборок размера (10, 100, 500).\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "m0LVdT1OcRhT" }, "outputs": [], "source": [ "sample_size_list = (10, 100, 500) # размеры выборок\n", "sample_count = 500 # количество экспериментов\n", "\n", "for sample_size in sample_size_list:\n", " est_plot(sps.uniform, estimators, sample_size, sample_count)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Что можете сказать о поведении оценкок при различных размерах выборок?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:**" ] }, { "cell_type": "markdown", "metadata": { "id": "-_E243uTcRhT" }, "source": [ "**2.** Изучим поведение среднего оценок из первого пункта при росте размера $n$ выборки. Для вычисления зависимости нужно один раз сгенерировать выборки из п. 1.1 достаточно большого размера и посчитать оценки по префиксам, используя функции из `numpy`. Какие из оценок являются асимптотически несмещёнными (т.е. $\\forall \\theta \\in \\Theta\\colon \\mathsf{E}_\\theta \\widehat{\\theta} \\to \\theta$ при $n\\to +\\infty$)?" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "LAlpptyocRhT" }, "outputs": [], "source": [ "def mean_plot(distribution, estimators, n_grid, sample_count):\n", " '''\n", " distribution -- распределение формата scipy.stats\n", " estimators -- список оценок и параметров для отрисовки графиков\n", " n_grid -- массив значений размера выборки\n", " sample_count -- количество генерируемых выборок\n", " '''\n", " n_grid = n_grid.astype(int)\n", " X = distribution.rvs(size = (sample_count, len(n_grid)))\n", " plt.figure(figsize=(15, 3*len(estimators)))\n", " plt.hlines(1, 0, len(n_grid), color='r', label=r'$\\theta$')\n", " for estimator, name, color, y in estimators:\n", " E = np.array([np.mean(estimator(X[0:len(n_grid), 0:(n_grid[i]-1)])) for i in range(len(n_grid))])\n", " plt.plot(n_grid, E, color= color, label= name)\n", " plt.xlabel('размер выборки')\n", " \n", " plt.legend()\n", " plt.title('зависимость среднего оценок от размера выборки')\n", " plt.xlim((10, len(n_grid)))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "qBFolVF4cRhU" }, "outputs": [], "source": [ "n_grid = np.linspace(10, 300, 100)\n", "mean_plot(sps.uniform, estimators, n_grid, sample_count)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сделайте выводы" ] }, { "cell_type": "markdown", "metadata": { "id": "dyeHuG9SdNKW" }, "source": [ "\n", "**Вывод:** " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Почему в лабораторных работах часто используют именно скорректированные оценки?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:** " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Состоятельность оценок\n", "\n", "Пусть $X_1, ..., X_n$ — выборка из распределения $Exp(\\theta)$. Как известно из теории, оценка $\\widehat{\\theta} = 1/\\overline{X}$ является *состоятельной* и *асимтотически нормальной* оценкой параметра $\\theta$ с асимптотической дисперсией $\\theta^2$. В этой задаче вам необходимо визуализировать данные свойства.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Зададим параметры эксперимента\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "scrolled": true }, "outputs": [], "source": [ "theta = 2 # истинное значение параметра\n", "sample_size = 300 # размер выборок\n", "sample_count = 500 # количество выборок\n", "n_range = (np.arange(sample_size) + 1) # размеры подвыборок" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Сгенерируем множество выборок (количество выборок - `sample_count`, размер каждой выборки - `sample_size`)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# генерируем множество выборок,\n", "# параметр theta является обратным к параметру масштаба\n", "samples = <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Вычислим оценки в зависимости от размера выборки, усредняем по последней оси" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "estimation = <...>" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Визуализируем для каждой выборки все оценки в зависимости от размера выборки.\n", "\n", "Что можно сказать о состоятельности данной оценки?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "def est_plot(estimation, sample_count, sample_size, left=None, right=None, xlim = sample_size ):\n", " '''\n", " estimation -- массив оценок от размера выборки\n", " sample_count -- количество генерируемых выборок\n", " sample_size -- размер каждой выборки\n", " left, rigth -- границы доверительного интеравала, нужны будут далее\n", " xlim = область по x\n", " '''\n", " \n", " plt.figure(figsize=(15, 7))\n", " for i in range(sample_count):\n", " plt.plot(np.arange(sample_size) + 1, estimation[i], color='blue', alpha=0.05)\n", " if type(left) and type(right) is np.ndarray:\n", " \n", " plt.plot(np.arange(sample_size) + 1, left, color='black')\n", " plt.plot(np.arange(sample_size) + 1, right, color='black')\n", " labels = [r'$\\hat{\\theta}$', r'$\\theta$',\n", " 'Границы доверительного интервала']\n", " handels = [Line2D([0], [0], color='blue', lw=2),\n", " Line2D([0], [0], color='red', lw=2),\n", " Line2D([0], [0], color='black', lw=2)]\n", " \n", " else: \n", " labels = [r'$\\hat{\\theta}$', r'$\\theta$']\n", " handels = [Line2D([0], [0], color='blue', lw=2),\n", " Line2D([0], [0], color='red', lw=2),]\n", " \n", " plt.hlines(theta, 0 ,sample_size, color='red')\n", " plt.title('Поведение оценки для разных реализаций')\n", " plt.xlabel('Размер выборки')\n", " plt.ylim((0, 5))\n", " plt.legend(handels, labels)\n", " plt.xlim((0, xlim));" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "est_plot(estimation, sample_count, sample_size)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Ответ:**" ] } ], "metadata": { "colab": { "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.5" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false }, "vscode": { "interpreter": { "hash": "415525cc3f40ad8355b7c2a7d3b034c5d7bb85ff256d91eaa0aa6b53328ab0d3" } } }, "nbformat": 4, "nbformat_minor": 1 }