{ "cells": [ { "cell_type": "markdown", "id": "23f67692", "metadata": {}, "source": [ "2. В результате эксперимента получены данные, приведенные в таблице 2.\n", "a) Построить вариационный ряд, эмпирическую функцию распределения, гистограмму и полигон частот с шагом h. \n", "b) Вычислить выборочные аналоги следующих числовых характеристик: \n", "(i) математического ожидания, (ii) дисперсии, (iii) медианы, (iv) асимметрии, (v) эксцесса, (vi) вероятности P(X ∈ [c, d]). \n", "c) В предположении, что исходные наблюдения являются выборкой из показательного распределения, построить \n", "оценку максимального правдоподобия параметра λ и соответствующую оценку по методу моментов. Найти смещение оценок. \n", "d) Построить асимптотический доверительный интервал уровня значимости α2 для параметра λ на базе оценки максимального правдоподобия. \n", "e) С использованием теоремы Колмогорова построить критерий значимости проверки простой гипотезы согласия с показательным распределением с параметром λ0. Проверить гипотезу на уровне значимости α2. Вычислить наибольшее значение уровня значимости, на котором нет оснований отвергнуть данную гипотезу. \n", "f) Используя гистограмму частот, построить критерий значимости χ2 проверки простой гипотезы согласия с показательным распределением с параметром λ0. Проверить гипотезу на уровне α2. Вычислить наибольшее значение уровня значимости, на котором еще нет оснований отвергнуть данную гипотезу. \n", "g) Построить критерий проверки значимости χ2 сложной гипотезы согласия с показательным распределением. \n", "Проверить гипотезу на уровне α2. Вычислить наибольшее значение уровня значимости, на котором еще нет оснований отвергнуть данную гипотезу. \n", "h) Построить наиболее мощный критерий проверки простой гипотезы о показательности с параметром λ = λ0 при альтернативе показательности с параметром λ = λ1. Проверить гипотезу на уровне значимости α2. Что получится, если поменять местами основную и альтернативную гипотезы? \n", "\n", "Таблица 2 α2 = 0.10; c = 0.00; d = 4.62; h = 1.40; λ0 = 0.33; λ1 = 0.14. \n", "0.18 0.10 3.34 0.67 0.85 1.17 0.24 0.15 1.31 0.00 0.49 2.37 14.94 2.44 3.13 0.06 2.98 9.25 6.84 3.96 0.07 6.72 11.83 0.50 0.11\n", "6.50 0.29 0.17 0.03 0.06 1.02 0.49 15.68 3.03 0.24 11.40 0.53 0.59 4.55 3.57 8.33 0.12 2.58 2.77 0.12 1.11 0.31 0.36 1.31 0.57" ] }, { "cell_type": "code", "execution_count": 4, "id": "57a523dd", "metadata": {}, "outputs": [], "source": [ "# Данные\n", "import numpy as np\n", "data = np.array(list(map(float, \"\"\"0.18 0.10 3.34 0.67 0.85 1.17 0.24 0.15 1.31 0.00 0.49 2.37 14.94 2.44 3.13 0.06 2.98 9.25 6.84 3.96 0.07 6.72 11.83 0.50 0.11 6.50 0.29 0.17 0.03 0.06 1.02 0.49 15.68 3.03 0.24 11.40 0.53 0.59 4.55 3.57 8.33 0.12 2.58 2.77 0.12 1.11 0.31 0.36 1.31 0.57\"\"\".split())))\n", "lambda0 = 0.33; lambda1 = 0.14\n", "alpha2 = 0.10\n", "c = 0.00; d = 4.62; h = 1.40\n", "# a0 = 3.00; sig0 = 3.00\n", "# a1 = -7.00; sig1 = 3.00" ] }, { "cell_type": "markdown", "id": "8b7561a0", "metadata": {}, "source": [ "## Пункт a)" ] }, { "cell_type": "markdown", "id": "b046ad70", "metadata": {}, "source": [ "### 1. Вариационный ряд" ] }, { "cell_type": "code", "execution_count": 5, "id": "db7e1a67", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.0^(1), 0.03^(1), 0.06^(2), 0.07^(1), 0.1^(1), 0.11^(1), 0.12^(2), 0.15^(1), 0.17^(1), 0.18^(1), 0.24^(2), 0.29^(1), 0.31^(1), 0.36^(1), 0.49^(2), 0.5^(1), 0.53^(1), 0.57^(1), 0.59^(1), 0.67^(1), 0.85^(1), 1.02^(1), 1.11^(1), 1.17^(1), 1.31^(2), 2.37^(1), 2.44^(1), 2.58^(1), 2.77^(1), 2.98^(1), 3.03^(1), 3.13^(1), 3.34^(1), 3.57^(1), 3.96^(1), 4.55^(1), 6.5^(1), 6.72^(1), 6.84^(1), 8.33^(1), 9.25^(1), 11.4^(1), 11.83^(1), 14.94^(1), 15.68^(1)\n", "Вариационный ряд: 0.0, 0.03, 0.06, 0.06, 0.07, 0.1, 0.11, 0.12, 0.12, 0.15, 0.17, 0.18, 0.24, 0.24, 0.29, 0.31, 0.36, 0.49, 0.49, 0.5, 0.53, 0.57, 0.59, 0.67, 0.85, 1.02, 1.11, 1.17, 1.31, 1.31, 2.37, 2.44, 2.58, 2.77, 2.98, 3.03, 3.13, 3.34, 3.57, 3.96, 4.55, 6.5, 6.72, 6.84, 8.33, 9.25, 11.4, 11.83, 14.94, 15.68\n" ] } ], "source": [ "# Получение уникальных значений и их частот\n", "unique_values, counts = np.unique(data, return_counts=True)\n", "\n", "# Форматирование вариационного ряда\n", "variational_series = sorted(data)\n", "print(\", \".join(f\"{value}^({count})\" for value, count in zip(unique_values, counts)))\n", "print(\"Вариационный ряд:\", \", \".join(map(str, variational_series)))" ] }, { "cell_type": "markdown", "id": "93c7e45f", "metadata": {}, "source": [ "### 2. Эмпирическая функция распределения (ЭФР)\n", "$$\n", "\\hat{F}_n(x) = \\frac{1}{n} \\sum_{i=1}^{n} \\text{\\textbf{1}}_{\\{X_i \\leq x\\}},\n", "$$\n", "где $n$ — объем выборки." ] }, { "cell_type": "code", "execution_count": 6, "id": "261ad18a", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA04AAAIjCAYAAAA0vUuxAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAhXtJREFUeJzt3Qmc3dP9//HPZJ0gJEESIrbU2tiJvdpSilqqipZaSylqaWupWlpKdVH92am1qqiWqIQEKQlRUlIMgoRGRGSPRNZZ7v/xPvP/Tu5M5s5Mcu7M/cyZ1/PxmMydmTszr/u933tzzz3nfqcsl8vlDAAAAABQUKfCXwIAAAAACAMnAAAAAGgGAycAAAAAaAYDJwAAAABoBgMnAAAAAGgGAycAAAAAaAYDJwAAAABoBgMnAAAAAGgGAycAAAAAaAYDJwAAAABoBgMnAEVRUVFhp512mn3hC1+w7t2721prrWW77bab/fGPf7SlS5eWOg8OrLHGGnbiiSeWOgMAgFXSZdW+DQCWW7BggW2//fa2/vrr29FHH21bbLGFLV682MaMGWPnn3++PfDAA/bkk09anz59Sp0KAACwShg4AYhWU1Nj5557rv3qV78Ks02Zs88+OwyYDj74YDv55JPtscceK2knAADAqmKpHoBoWpb3u9/9rt6gKXPggQfaUUcdZUOHDrVx48bVfX7jjTe2srKyMOBq6IADDghf+8Y3vlH3ueeeey58rtBb/hKwe+65J3zuf//7X73B3bbbbhs+r69n9H1aQvbBBx+E37v66quHmbNf/vKXlsvl6s6nn9Xwe+XMM89c4ffrtC5fQzrfFVdcUe9zU6dODYPKfv36he33xS9+0e66664VvnfJkiXhezfffHMrLy+39dZbz4444gibNGlSwT7NBO600062ySab2LRp0+o+r+tqjz32sLXXXtt69OgRzvPII4+s8Ds///xz+/GPf2ybbrqpde3atd72njVrljVF2/unP/1p2De0LZ566qm6r1144YXWs2dP22yzzcLAOnP33XeHnz1+/PgVft7VV19tnTt3DttLvvzlL9vgwYNXOJ8uW8PrXr+/4RJBLSvVdtR+lX++/H0uc9ZZZ4WfmU/XRcPPaXv1798/fD7/58ott9wSeldbbbV627Gx7d7Y75kwYUK4Ha255prhejvnnHPCPpFP2++rX/2q9e3bN+xLW2+9dfi9jdF232effcL1oJ+5yy67hJnhjLZvU7e3httX223kyJFh5lnbVb/7H//4xwq/d968eeE2P3DgwNCopb3XXntt2F8aym7HDd8au21p+xx55JFhVlu/f+edd7bHH3+80cte6LI1vG2//PLL9vWvfz3sw7retL1efPHFRq+fhreH//znP43e1zRsnzJlSrgNNtymVVVVdtVVV4Xbu7ZTfqd+NoDSYOAEoNVpYCANH8joAc5f/vIXq6ysrPvcxx9/bM8++2z4WmN+9KMf2Z///Od6b40N2BrS+d58881Gv1ZdXR0eIGnw8pvf/CYMJC6//PLw1pSJEyfaHXfcYatq+vTp4XVgzzzzTHhwrteD6YHkKaecYtdff329Pj0w/cUvfhHafv/734cHzp999ll4bVljtE2/9a1v2UcffWQjRowIA62Mfs8OO+wQBocakHTp0sW+/e1v27Bhw+r9DA18rrvuuvBg/Pbbbw/b8Jvf/GaLLpseDGsQc9hhh9l5550X3pYtWxZ+x2uvvRZmJ/WAUYO/Dz/8MHyPHvjqc9onGtLn9IB3wIABFkvX65133mn3339/+JnFoutF12lDDz30kP3whz+0dddd1/7whz+E7fizn/1spX62Bk0aKF1zzTV20EEH2f/93/+FwV8+DZI22mij8LPVosGJfu9NN91U73x6MK9Z4Dlz5tjFF19sv/71r8OAJ39wKxtssMEKt7XvfOc7jfa9//77YZmunihRY7ZPPf3003XnWbRoURh8aLsff/zx4TLsueeeoUFLegvRfpr9fnU29NZbb4Xb0TvvvGMXXXRRuOx6AuTwww+3Rx99tNGfueWWW9b9TF0nDY0aNcq+9KUv2fz588P+otuJBn26LbzyyitWLJdddtkKA2DRZbj00kvDYPvmm28OnQ2vbwAlkAOAIlm4cGFu5syZK7xNmDBBUze5I444ou68G220Ue5rX/tabp111sk98sgjdZ+/8sorc3vssUf4+sEHH1z3+X/961/hZ/ztb39b4feuvvrquRNOOKHu47vvvjuc98MPPwwfL1myJLfhhhvmDjzwwPB5fT2j79Pnzj777LrP1dTUhN/drVu30C/6WQ2/96ijjsoNHjw4N3DgwHq//6STTgq/ryF9/+WXX1738SmnnJJbb731crNmzap3vmOOOSa31lpr5RYtWhQ+vuuuu8L3XnfddSv8TLU27NPnjj322Nxqq62We/nll1f4nuznZpYtWxYux1e/+tV6n1fbAQccUO9z6tfvybZLY7S9+/btm/vOd75T97nXX38917lz59x2222XW7p0aficLnfPnj1z55xzTt359D3rr79+rrq6uu5zr7322grbfp999sl98YtfXOF3//a3v6133Yv2pez6ue2228LXb7jhhhW+t+E+lznzzDPD9zS2HTIzZswIlyXbx7S/5l+mXr165RYvXtyi/bmx33PooYfW+/wPf/jD8Hlt10LXq+j623TTTes+njdvXujcdddd6/Xk70ursn31ub///e91n/vss8/C/rPDDjvUu23rtvree+/V+5kXXXRR2Dc++uijep+//fbbw8/9z3/+U/c5XT/6ffn23Xff3DbbbBP2u/zLovuRzTbbbIXLsOeee+a+8pWv1H3c8Lat79X3advlbxNt30022STcbzV3exg3blyj9zX57RUVFblOnTrV7TP523T33XfPbbXVVvV+f3a/pp8NoDSYcQJQNJqt0bPqDd/07K7o2dt83bp1s2OPPTYsMcp/Nvykk04qapeecZ89e3aTM0ia8cloOYw+1gyJZoMa8+qrr9rf/va38Ox6p07170q1VGrGjBnh+wvROOrvf/+7HXLIIeG0lvpkb1oyqNkkzcyIzrfOOuuE14w11HC5WDZTpBmahx9+2IYMGbLC1zWrk5k7d274XXvvvXfd78tf6qdlYStLM3u6/JpNymiZpGYRNWOg6130s/WsvmYYM5qJ+OSTT+xf//pX3ed0WdSsGbR8monL325606xGIVouqhkYbZ/867sYrrzyyrCkSzOiDWk7aqlXoVnUltCS0HzZvjB8+PBGr1ddp9oemuHRMlR9LJoBUo9mZhr2NLYvtZSWt+bPRmr5n65LLbv89NNPw+d0e9F+1rt373rX2X777Reuy9GjR9f7mdlMTFPbTbNmmh3SjJwuV/YzdXvX7UgzYdnyzoxul03NUv/3v/8N3/fd7343/JzsZy5cuND23Xff0NlwaaE68i9Ttr2bopm2HXfcMczMNaTLou0Uc50AKD4ODgGgaPRAaa+99lrh83rthx5U6cFUQxokafmZXoPz3nvvhfd6EKT1/cWgBzBaZqOlQFqK1xgNfPQ6nnx6bYHkv+4gnx546kGgltA1fBCu1w9pqdrPf/7z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VPvWWlLefh29z3Ob0BeHvjj0pdkm9KXd5wFL9QCHtt/e7PXXl3+8xhpmM2fW/v0mAAAAFAdL9VAUesZh6tSpbp95SLmvsrL2/cUXm913n9m//138QVPK26+j93luE/ri0BeHvjTbhL60+zxg4ISCdMOZNGmS2xtQR+jbf3+z733P7ItftKLrCNuvo/Z5bhP64tAXh74024S+tPs8YKke4JAGSm+/bfavf5l9+culrgEAAEgTS/VQFHrGYfLkyW6feaAvDn3p9nluE/ri0BeHvjTbhL60+zwo+cDppptuso033tjKy8tt1113tVdeeaXJ88+bN8/OPPNMW2+99ax79+62+eab2/Dhw9ustyPxvtaVvjj0pdvnuU3oi0NfHPrSbBP60u6zjr5U76GHHrLjjz/ebr311jBouv766+1vf/ubvfvuu9a3b98Vzr9s2TLbc889w9d+9rOf2YABA8LIuFevXrbddtu16HeyVA/tAUv1AAAAWt/KjA26WAldd911duqpp9pJJ50UPtYAatiwYXbXXXfZRRddtML59fk5c+bY2LFjrWvXruFzmq1C66iurrYPP/zQNtlkE+vcubOl0PfOO7VvbaGmptqmT59h/fr1tU6dVm77zZ9vrS7F67ctee7z3Cb0xaEvDn1ptgl9afd5ULKBk2aPXn31VbtYx1v+/zp16mT77befvfTSS41+z+OPP2677757WKo3dOhQW3fdde273/2uXXjhhQWv4KVLl4a3/FFltnPkv9f355+uqqqysrKyutNq01uh05WVleG82ekuXbqE789Oi86ff1qDP034Zac1NaqG7LTedP5Cp3VefX92urHLEXuZNFDV4NTjZdL5Zs+ebQMHDmzRZZo3r5Ntt13OKivLrG1on1wv8mdUWU1N6+x72ubafrp+Pe57+vlz584NM8tayutp38suR3b78HYfoZ+pbafbRmtfT+x77HsNT4v6svtmT/ueLpMef+j63XDDDUOvp31P583+b9too43Cx+x77Hvse51b9XpamcV3JXuN06xZs8IG6devX73P6+NPP/200e/54IMP7JFHHgnfp9c1XXrppfb73//errrqqoK/55prrgnTb9mbbkyiv4ws77zzTniTN954w95///1wevz48WHULXrd1ZQpU8JpzXZNmzYtnB49enS4HDJq1Kjw+isZOXKkLViwIJxW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xewrNvri0Jdmm9AXh7449KXZJvSl3WcdfanesmXL7NVXX7X99ttveVCnTuHjl156qeD3/fKXv7S+ffvaKaec0uzvWLp0adgg+W/Z4Ct739jpqqqqeqc1oGvqtEbn+aez8Wh2Wm8NT0v+aX1//mn9/KZOqy//dLEvk05nh6MsxmW69tqaMGiSLl1yRblMumF7vp66dOnS6tdTzGXKzutt38suk7af59tT9h8L+x77Hvte/dPq87rv6bSuX6/7XsPbCPse+x77nrX69dRSJR04zZo1K2yEfv361fu8Pv70008b/Z4XXnjB7rzzTrvjjjta9DuuueaaMIrM3jSbJRUVFeH9O++8E97kjTfesPfffz+cHj9+vH344YfhtF5zNWXKlHB67NixNu3/T5WMHj06XAYZNWpUmPmSkSNHhhfXyfDhw8PoXVemTuu9PtZp0fl0ftH36+dk20Y/X/T79HtFHdlrwNSnTlG3+ot9mZ566qnQXIzLNGnSkrrr5eyz50VfJv1e/aG2SZMmub2e9P3qa+3raVUuk77n6aefDp/3uO/Nnj07tKrR4+1JS4u1/6mBfY99j31v+WXK7pvV6W3f0/l0vepjXc/e9j1dJjWrMbt87Hvse+x71urXU7tYqvfJJ5/YgAEDwoXefffd6z5/wQUX2PPPP28vv/xyvfPrQm+77bZ2880324EHHhg+d+KJJza5VE8zTnrLaMZJg6c5c+ZY796960avnTt3rnc6e1YlO62ZF70VOq1Rq86bndYzCvr+7LRkzwJnp7t27RpGudlpjYzVkJ3OnvUsdFrn1fdnpxu7HLGXSb+rW7dude0xl+n003N2221l9otfmP385/GXSY26bnVevXm7nvJnxaQ1r6dVuUxq1J1Fjx49wuXztu/pvX6ffo+6vN2e1KKPu3fvHt6z77Hvse/Vntbv0n2z3uv8nva97FlmnTe7nj3tezqvvmfx4sVhuVT+5WPfY9/ryPteVSteTxob6I/+uv8DuFqqt9pqq9kjjzxS78h4J5xwQhgM6QVq+f773//aDjvsEDZEJpuG04Z59913bdCgQU3+Tl7jVLq1rmecYXbrrRYGTpdd5q+v2OiLQ1+abUJfHPri0Jdmm9CXdp919Nc4aSZjp512smeffbbeQEgf589AZbbcckt78803wwAqezv00EPtK1/5SjidLcNDcWgkrulN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hq5TbX/dLvR786+bhvcR+l79fn1OP6M17yN0uRYsWBD2t/zrRk3a/urI7iP0eX2vtutGG20Ufkdj1422oba/blP6udl1o/PrMum61WXM7iPyrxvtLzqt+9Hsfju7TC25j9B2mDRpUmiX1rqPyC6Tert27dri+wjJrtv11luv1e4jdFq9atJ2bel9hL6m78t+XmvdR6gpu0zZPtqS+wj9Lp1P+2e2j7bGfUS2H3788cd19+ktuY/QvqDzZPt/a91HrOrjCG07/Xxdfn1va9xH6E2XX7+30HXT2H1Edr+n28Uaa6zRavcRq/o4QpdX+4Poem6t+4hVfRyhn6336tT2a637iFV9HKEeter36/pprfuILm30OKKl9xHa11qqpAMn7SjaKNrp8unjCRMmNPo9n376aaPn1+cbc80119gvfvGLFT5/3333hY2d0WulNtlkk7BBG3vN1IknnhgehDzwwAN1g6/MN7/5zbATaUd7/vnn631NO8sZZ5wRLuddd921ws/9gaZ1rL99/esjbIst3qv3tREj9jez3cMSxlGjRoXPnXBC7demTetvt92m7zX7/vfvtC5dane022+v/frXvvY1M9vD9tlntO244/h6P3fMmD1t6tTd7PXXK2zEiBHhc4ceunywdt11tQPTE0/8s622Wu20VZZ+wgkn2Ouvvx4u68svv1zv5+oOWDOF2kH//Oc/1/uadtLTTjstLKl8//33V7i+tt1227AdR48eHS5vvs033zxcP7rB5M80Zr71rW/Z4MGD7eGHHw53MPkOPPDAcEPVje7ZZ5+t9zXdsahJN+bGrptTTz3Vxo0bF667N998s97X9B/g97//fXvrrbds2LBh9b6mO57DDjssbIfnnntuhSnvvfbay/bdd9+wn02cOLHe13beeedwJ6Eb/JNPPrnCNjzppJPC777//vvDnVq+Y445Jvw8XTcvvvhiva/pzuXMM88Md1iNXdYf/vCHYbtrP548eXK9r22xxRbhZ+tJCy2VzafbhGZ8tY0bbgc55JBDbMcdd7R//OMfK1znX/3qV+v+I3j66afrfU3/Ieg2p+W4es2j7njznXzyyaFXd4QN9xfdH5x++unhgfkjjzxS72u6g/7ud78bvvbf//43bI98mv0+6KCD7JlnngnXbb5S3kfoCSb9zPfeq38foZ7jjz++3n1E/mU99NBDw/fpdp79Z5TRfcQee+xhjz/+uH300Uf1vrbnnnuG79f2ze4jMrotaam09lPdj+o/rHwtuY/QA4yG101r3kccddRRttVWW7m7j9CDSt1WG96Wm7uP0H/4up2+8847Hfo+QttX+9Tdd9+90vcRuu3owf+jjz7aYe8j9KBS+5ku48reR+y+++7hgX9r3Ues6uOIb3zjG2FfyQZPHfU+YlUfRxx55JHh5+n21XACI+X7iLENmtwu1dMzJ7ryFKwbYeaCCy4IdxwNb1CiHffee+8Nr3PK3HzzzWFw1NiIsbEZJy0FfPvtt8MI18OM0+ef52zhwhWfKVpttdWtTx81Ln+maOHCGsvl9GxEufXqVftM0ezZtSN0Lb9bbbXlzxRVV5fb3LnLnymqrtYD+DLr2VPPyqxmXbosf6Zo2TKNxLNn+mtH6PPmte0zRW31bHJbzTi19TNFbfVssrdniko149SW9xFt9WxyW804cR/BfQT3EdxHcB/BfUTOyX2E9jUddK4lS/VKOnDSBdUG0zOPOsBD/rMRuiEOHTp0he/ZcMMNw1K9c889t+5zOrCElurpGYz2+Bonr7Sz68asnUs7nDf0xaEv3T7PbUJfHPri0Jdmm9CXdp919MORawS500471Zv61JWmj/NnoPLp8w2nSjU9V+j8WHW6LjQl3nB60wv64tCXbp/nNqEvDn1x6EuzTehLu8+Dkh9VT4cj1wzTbbfdZkOGDLHrr78+rDHVa5w0/am1uZre1muVRMv69tlnH/v1r39tBx98sD344IN29dVXh3WKep1Lc5hxAgAAANCuZpyyw4v/7ne/s8suuywcUlwvxnzqqafqDgChFyRqLWVGL1TUCytvv/328DeftMxPy/RaMmjCytEzDlqf7PWZB/ri0Jdun+c2oS8OfXHoS7NN6Eu7z4OSD5zkrLPOCkfg0Iu+dEAI/W2njI5Kds8999Q7/7e//W179913w/k1pagj3KD4dMPRkYW83oDoi0Nfun2e24S+OPTFoS/NNqEv7T4PSr5Ur62xVA8AAABAu1uqB7/0jINmAr0+80BfHPrS7fPcJvTFoS8OfWm2CX1p93nAwAntdq0rfXHoS7fPc5vQF4e+OPSl2Sb0pd3nAUv1AAAAAHRILNVDUegvNk+cOLHurzh7Q18c+tLt89wm9MWhLw59abYJfWn3ecDACQVpMnLu3LnhvUf0xaEv3T7PbUJfHPri0Jdmm9CXdp8HLNUDAAAA0CHNZ6keikFTtRMmTHA7ZUtfHPrS7fPcJvTFoS8OfWm2CX1p93nAwAlNWrx4sXlGXxz60u3z3Cb0xaEvDn1ptgl9afeVGkv1AAAAAHRI81mqh2LQVG1FRYXbKVv64tCXbp/nNqEvDn1x6EuzTehLu88DBk4AAAAA0AyW6gEAAADokOavxNigi3Uw2ThRGwktm7IdPHiwde7c2byhLw596fZ5bhP64tAXh74024S+tPtaSzYmaMlcUocbOC1YsCC8HzhwYKlTAAAAADgZI2jmqSkdbqleTU2NffLJJ9azZ08rKysrdY77EbgGmFOmTHG5rJG+OPSl2+e5TeiLQ18c+tJsE/rS7mstGgpp0LT++utbp05NH/6hw804aYNssMEGpc5oV3Tj8XwDoi8Ofen2eW4T+uLQF4e+NNuEvrT7WkNzM00ZjqoHAAAAAM1g4AQAAAAAzWDghIK6d+9ul19+eXjvEX1x6Eu3z3Ob0BeHvjj0pdkm9KXd50GHOzgEAAAAAKwsZpwAAAAAoBkMnAAAAACgGQycAAAAAKAZDJwAAAAAoBkMnFDQTTfdZBtvvLGVl5fbrrvuaq+88op5MHr0aDvkkEPCX3guKyuzxx57zDy55pprbJdddrGePXta37597fDDD7d3333XvLjlllts2223rfsDd7vvvrs9+eST5tGvf/3rcB2fe+655sEVV1wRevLfttxyS/Nk6tSpdtxxx9naa69tPXr0sG222cb+85//mAe6P2m4/fR25plnmgfV1dV26aWX2iabbBK23aBBg+zKK68Mf1XeA/1le90WNtpoo9C3xx572Lhx49zeF2u7XXbZZbbeeuuF3v3228/ef/99F23/+Mc/bP/99w+3E339v//9b5t0taSvsrLSLrzwwnDbXX311cN5jj/+ePvkk09c9GX3hbrvU1/v3r3Ddfvyyy+76ct3+umnh/Ncf/31bvpOPPHEFe4Hv/71r7vpk3feeccOPfTQ8IdhdT3rcc1HH31kHR0DJzTqoYcesvPPPz8clvK1116z7bbbzg444ACbMWNGqdNs4cKFoUcDO4+ef/758EDw3//+tz399NPhP0H9B61uDzbYYIMwIHn11VfDA+qvfvWrdthhh9lbb71lnugB4W233RYGeZ588YtftGnTptW9vfDCC+bF3Llzbc8997SuXbuGwfDbb79tv//978MDGy/Xaf620+1Dvv3tb5sH1157bXhi4cYbbwwPGvTxb37zG7vhhhvMg+9///thm/35z3+2N998M9yv6AGrBsse74u17f7v//7Pbr311vCgWg++9P/IkiVLSt6mr++1117hOi6FpvoWLVoU/t/VIF7vNcjTk296EOuhTzbffPNwO9F+qPtAPSmi/XHmzJku+jKPPvpo+L9YA4S21JI+DZTy7w//+te/uumbNGlSuH1ocPzcc8/ZG2+8EfbH8vLyNmt0S4cjBxoaMmRI7swzz6z7uLq6Orf++uvnrrnmmpwn2oUfffTRnGczZswInc8//3zOq969e+f+9Kc/5bxYsGBBbrPNNss9/fTTuX322Sd3zjnn5Dy4/PLLc9ttt13OqwsvvDC311575doLXa+DBg3K1dTU5Dw4+OCDcyeffHK9zx1xxBG5Y489NldqixYtynXu3Dn3xBNP1Pv8jjvumLvkkkty3u6LdZ32798/99vf/rbuc/Pmzct1794999e//rWkbfk+/PDD8PXx48fnPP8/9sorr4TzTZ48Oeex77PPPgvne+aZZ3Je+j7++OPcgAEDchUVFbmNNtoo94c//KHN2wr1nXDCCbnDDjss50FjfUcffXTuuOOOK1mTZ8w4YQXLli0LsxF6JjPTqVOn8PFLL71U0rb26LPPPgvv+/TpY95oadKDDz4Ynn3Skj0vNGN38MEH19sHvdBSIz17uemmm9qxxx7raunC448/bjvvvHOYwdEy0R122MHuuOMO83o/c//999vJJ58clop4oKVvzz77rL333nvh49dffz08m37ggQeWOs2qqqrC7bXhM75aAudp1jPz4Ycf2qefflrvNqwlP1r2zf8jq/b/iG4nvXr1Mo+35dtvvz1cv5rF8KCmpsa+973v2U9/+tOwSsAjzeTofnqLLbawM844w2bPnm1ett2wYcPCrKJmiNWo2623l0WUCgMnrGDWrFnhP+h+/frV+7w+1n+EWLk7IL0mQcunBg8ebF5oecUaa6wR/jq41n9rOcPWW29tHmggp+Upeq2YN/rP45577rGnnnoqLOnSg8O99947vPbEgw8++CB0bbbZZjZixIjwn/GPfvQju/fee80b/Sc8b968sNbfi4suusiOOeaYsDxFyx018NTtVwPkUtNrJvXk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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from statsmodels.distributions.empirical_distribution import ECDF\n", "\n", "x = np.sort(data)\n", "y = np.arange(1, len(data)+1) / len(data)\n", "\n", "ecdf = ECDF(data)\n", "x = np.linspace(min(data) - 1, max(data) + 1, 1000)\n", "y = ecdf(x)\n", "\n", "# Находим точки, где F(x) переходит от 0 к основному росту и от роста к 1\n", "x_left = x[y == 0][-1] # Последняя точка, где F(x)=0\n", "x_right = x[y == 1][0] # Первая точка, где F(x)=1\n", "\n", "# Разделяем данные на 3 части\n", "mask_left = (x < x_left) # F(x) = 0\n", "mask_mid = (x >= x_left) & (x <= x_right) # Основной рост\n", "mask_right = (x > x_right) # F(x) = 1\n", "\n", "# Рисуем каждую часть своим стилем\n", "plt.figure(figsize=(10, 6))\n", "plt.step(x[mask_left], y[mask_left], '--', color='blue', where='post', label='F(x)=0') # Пунктир слева\n", "plt.step(x[mask_mid], y[mask_mid], '-', color='blue', where='post', label='ЭФР') # Сплошная основная часть\n", "plt.step(x[mask_right], y[mask_right], '--', color='blue', where='post', label='F(x)=1') # Пунктир справа\n", "\n", "# Настройки графика\n", "plt.title(\"Эмпирическая функция распределения\")\n", "plt.xlabel(\"x\")\n", "plt.ylabel(\"F(x)\")\n", "# Добавление пунктирных линий для F(x) = 0 и F(x) = 1\n", "plt.axhline(y=0, color='gray', linestyle='--', linewidth=1, label='F(x) = 0')\n", "plt.axhline(y=1, color='gray', linestyle='--', linewidth=1, label='F(x) = 1')\n", "\n", "plt.grid(True, linestyle=':')\n", "plt.xticks(np.arange(np.floor(min(data)), np.ceil(max(data)) + 1))\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "639c228f", "metadata": {}, "source": [ "### 3. Гистограмма частот" ] }, { "cell_type": "code", "execution_count": 7, "id": "09541433", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAA1EAAAHWCAYAAACWrwPjAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjEsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvc2/+5QAAAAlwSFlzAAAPYQAAD2EBqD+naQAAbN5JREFUeJzt3Qd4VFX+xvF30gMhARIgBAIk9CKINLGgosCioiBr3bWy6tpW1LWuDf2v2Na6rBXbrmBHrCiiggpIR2mhd0JPKKkk83/OnUxISAKZZCZ3yvfzPMMMdyZ3zsydmcybc87vOJxOp1MAAAAAgGoJq97NAAAAAAAGIQoAAAAAPECIAgAAAAAPEKIAAAAAwAOEKAAAAADwACEKAAAAADxAiAIAAAAADxCiAAAAAMADhCgAAAAA8AAhCgAAAAA8QIgCAD/x1ltvyeFwVHnavHmz3U0EAACSIuxuAACgvEceeURpaWkVtjdu3NiW9gAAgPIIUQDgZ4YOHarevXvb3QwAAFAFhvMBQIAO+1u/fn3ptuLiYnXv3t3abq4va8WKFbrooovUpEkTxcbGqmPHjvrHP/5hXffwww8fdQihOf3444+l+/rwww/Vq1cvaz9JSUn685//rC1btpS7v6uuuqrS/bRr1670Nm3atNG5556rb7/9Vscff7xiYmLUpUsXffLJJ+X2tWfPHv3973/Xcccdp7i4OMXHx1shc/HixeVuZ9rovp9FixaVu860Lzw83Lruo48+qtBOc/9HGjt2rHWduc+y3nzzTQ0cOFBNmzZVdHS01eaXXnrpGEfs8GM291lZu8s+xz/99JMuvPBCtWrVyrqP1NRU3XbbbcrNza2wz7o8tlUd17Knsq9JAAhm9EQBQBD473//q99//73C9t9++02nnnqqIiMjdd1111lf5NesWaPPP/9c//znP3XBBReUCzfmy3rnzp2t27qZ/xsmnF199dXq06ePFTK2b9+u559/Xr/88osWLlyohg0blv6M+fL/+uuvl2tLgwYNyv1/1apVuvjii/XXv/5VV155pRVQTHiYMmWKBg0aZN1m7dq1+vTTT63tZoijuc9XXnlFp512mpYtW6aUlJRy+zRhzOzHtMvt7bffVlRUlPLy8io8PxEREVq6dKnV/p49e5ZuN4/V7OtIJjB17dpV5513nvWz5nm88cYbrRB70003yRtMmMnJydENN9ygxMREzZkzRy+++KI1J85cZ9exvf7663XWWWeV/uzll1+uESNGWPfjZsIcAIQEJwDAL7z55ptO87E8d+7cat1u3bp11v/z8vKcrVq1cg4dOtTabq53GzBggLNBgwbODRs2lNtHcXFxpftu3bq188orr6ywvaCgwNm0aVNnt27dnLm5uaXbv/jiC+s+H3zwwdJt5ufr169/1Mdg7sf83Mcff1y6LTs729m8eXNnz549S7eZx1ZUVFTuZ83jjo6Odj7yyCOl23744Qdrf5deeqkzMTHRmZ+fX3pd+/btnZdddpl1/YcfflihncOGDXPefPPNpdt/+uknZ2xsrHP48OEVHkdOTk6FxzJkyBBnenq681jS0tKcV1xxRblt7nab86Pdx9ixY50Oh6PccbTj2JZlrnvooYeO+pgBIFgxnA8AAty4ceO0e/duPfTQQ+W279y5UzNmzNA111xjDQ0rywy98sS8efO0Y8cOq9elbA/NOeeco06dOunLL7/0uN2mF8n0ZLiZoXpXXHGF1fORmZlZ2qMVFub6VVVUVGQ9TjPEzgxbW7BgQYV9Dhs2zHpsn332WenQONODY3q8qmKenwkTJig/P9/6v+nJMr0rCQkJFW5rhrq5ZWdna9euXVavmOkxM/8/GjMEsDoVFsvex8GDB637OOmkk8wfPa3nJhCOLQAEO0IUAAQw88X9scce0+23365mzZqVu858sTe6detW6/vZsGGDdW7Cy5HMF2339Z4wQ82O/MLfoUMH69w9t8YMk3v22WfVvn17K1CZuTpmyJgZylZZaDFD28xcnjfeeMP6vzkfOXKkFdCqYsKCGZo3efJkK7R88MEH1tC2ypjhbWZIW/369a0hbqYt9913n3XdsUKUCULTp0/Xe++9Z4UWE44q+5mNGzda849MNUYTGM19mKBW9j78/dgCQLBjThQABLAnnnjC6qm58847rV6aYGMC4gMPPGD1uDz66KNWsDCPd/To0VbAqoy5rZnflJGRYc0hcvdKVcUdvEwPlJmLZOYhmeIRZp5ZWWa+0ZlnnmkFi2eeecYq+GDmWn311VdW0KuqPW4mbJkQdumll1Z5G9PbZuaDmYIad999t3VfJrCZAg8mWB3rPgAAdYMQBQABauvWrdbkf1MIwBRtODJEpaenW+dLliyp9X21bt3aOjfBxASMssw29/We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fvttRUREWD///PPP65lnntHrr79e7jaPPPKItV+zHxOkbrrpptLrDh48qNtvv926btq0aQoLC9OIESNUXFxcbh8mmF177bWlbWzZsmUNnzEAQCCIsLsBAIDgNGPGDH3zzTdWb1RGRka1fy48PFzJycnW5by8POu8SZMmpduMf//731aAeuyxx0q3vfHGG1bAWrlypTp06GBtM/9/9tlnrZ6gjh07Wm0x/zeBx61BgwbWvk2PUKNGjcoNPRw5cmS5tpn7MG1ZtmyZunXrVrq9sLDQ6u1yt9E8BgBA8KInCgDgs16oK6+8Up07d65wXXZ2tjUMz33q2rWrR/tevHixfvjhh3L76NSpk3Vd2eF2J554YrlQ1L9/f61atUpFRUWl2+6++27r500vlOmxGjduXOl15raXXnqp0tPTFR8fbw3/MzZu3FiuPfv27bN+/mhMb5wJbCbYXXzxxdq8ebNHjxkA4D/oiQIAeN2kSZO0cOFCffDBB5Veb8LEggULSv+/ZcsWa15RdR04cMAaJvjEE09UuK558+YetfXOO++0qgqaoXtPP/20NSTQDN8zvUnmPlq3bq3XXntNKSkp1jA+0wNVUFBQbh9bt261rj+a999/3wqUmZmZ+tvf/qa//vWv+uKLLzxqKwDAPxCiAABeZXp5/vGPf1jFJKqaG2TmFrVr1670/2bekidOOOEEffzxx1bP0NF+9tdffy33/9mzZ6t9+/blhtuZghPutpheqeOOO07r1q2zhvaZYYgmQJ166qnW9T///HOF+zA9X3v37rWGFx6N6YEy92NOo0aN0tixYz16zAAA/8FwPgCAV3333XdWcYV7773XZ/dhij/s2bPHGmo3d+5cK8iY+VdXX311uaF6ZtidKQxhwtDEiRP14osv6tZbby23r/3791u9Q2vXrrXmWpleshYtWlghylTke/XVV7V69Wp9//331r7KMj1WpiqgCV69e/c+aptN75WZ42XWzfroo4/KzakCAAQWQhQAwKtMUDA9OiaE+IoZOvfLL79YgWnw4MFWiBk9erRVHML0crldccUVys3NVd++fa3gZQLUddddV25fDz74oDUE0IQaM8Tw008/VWxsrLWf9957T/Pnz7euu+222/TUU0+V+1mzzfS2ffXVV8dcC6tfv37Wfo8//nhrDtYrr7zi5WcFAFBXHM6yC2YAABAkzBwrE1jc6zUBAOAt9EQBAAAAgAcIUQAAAADgAYbzAQAAAIAH6IkCAAAAAA8QogAAAADAA4QoAAAAAPAAIQoAAAAAPECIAgAAAAAPEKIAAAAAwAOEKAAAAADwACEKAAAAAFR9/w9NQKTU1nneMQAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "bins = np.arange(min(data) - h, max(data) + h, h)\n", "hist, edges = np.histogram(data, bins=bins)\n", "centers = (edges[:-1] + edges[1:]) / 2\n", "\n", "# Гистограмма\n", "plt.figure(figsize=(10, 5))\n", "plt.bar(edges[:-1], hist, width=h, align='edge', edgecolor='black')\n", "plt.title(\"Гистограмма частот\")\n", "plt.xlabel(\"Интервалы\")\n", "plt.ylabel(\"Частота\")\n", "\n", "# Полигон частот\n", "plt.plot(centers, hist, 'r-', marker='o')\n", "plt.grid(True)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "44f7e836", "metadata": {}, "source": [ "## Пункт b)" ] }, { "cell_type": "markdown", "id": "c32cd292", "metadata": {}, "source": [ "### 1. Выборочное среднее (математическое ожидание)\n", "Выборочное среднее — оценка теоретического математического ожидания.\n", "$$\n", "\\bar{X} = \\frac{1}{n} \\sum_{i=1}^{n} X_i.\n", "$$" ] }, { "cell_type": "code", "execution_count": 8, "id": "ead66cb6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Выборочное среднее: 2.79\n" ] } ], "source": [ "import numpy as np\n", "mean = np.mean(data)\n", "print(f\"Выборочное среднее: {mean:.2f}\")" ] }, { "cell_type": "markdown", "id": "83c9665b", "metadata": {}, "source": [ "### 2. Выборочная дисперсия\n", "Несмещённая оценка дисперсии:\n", "$$\n", "s^2 = \\frac{1}{n-1} \\sum_{i=1}^{n}(X_i-\\bar{X})^2.\n", "$$\n", "\n", "Смещенная оценка дисперсии:\n", "$$\n", "s^2_{\\text{смещенная}} = \\frac{1}{n} \\sum_{i=1}^{n}(X_i - \\bar{X})^2\n", "$$\n", "\n", "где:\n", "- $ n $ — общее количество наблюдений,\n", "- $X_i$ — каждое отдельное наблюдение,\n", "- $\\bar{X}$ — среднее значение выборки." ] }, { "cell_type": "code", "execution_count": 9, "id": "a24ea7eb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Выборочная дисперсия несмещённая: 15.59\n", "Выборочная дисперсия смещённая: 15.28\n" ] } ], "source": [ "variance = np.var(data, ddof=1)\n", "print(f\"Выборочная дисперсия несмещённая: {variance:.2f}\")\n", "print(f\"Выборочная дисперсия смещённая: {np.var(data, ddof=0):.2f}\")" ] }, { "cell_type": "markdown", "id": "bd8ee128", "metadata": {}, "source": [ "### 3. Медиана\n", "Значение, разделяющее выборку на две равные части." ] }, { "cell_type": "code", "execution_count": 10, "id": "e8490052", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Медиана: 0.94\n" ] } ], "source": [ "median = np.median(data)\n", "print(f\"Медиана: {median:.2f}\")" ] }, { "cell_type": "markdown", "id": "34384b8f", "metadata": {}, "source": [ "### 4. Ассиметрия\n", "$$\n", "Skewness = \\frac{\\frac{1}{n}\\sum_{i=1}^{n}(X_i-\\bar{X})^3}{s^3}.\n", "$$" ] }, { "cell_type": "code", "execution_count": 11, "id": "cc21a5b6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Асимметрия: 1.85\n" ] } ], "source": [ "from scipy.stats import skew\n", "skewness = skew(data)\n", "print(f\"Асимметрия: {skewness:.2f}\")" ] }, { "cell_type": "markdown", "id": "ddd4b8a7", "metadata": {}, "source": [ "### 5. Эксцесс\n", "$$\n", "Kurtosis = \\frac{\\frac{1}{n}\\sum_{i=1}^{n}(X_i-\\bar{X})^4}{s^4} - 3.\n", "$$" ] }, { "cell_type": "code", "execution_count": 12, "id": "118d475e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Эксцесс: 2.66\n" ] } ], "source": [ "from scipy.stats import kurtosis\n", "excess_kurtosis = kurtosis(data)\n", "print(f\"Эксцесс: {excess_kurtosis:.2f}\")" ] }, { "cell_type": "markdown", "id": "93fd7cc5", "metadata": {}, "source": [ "### 6. Вероятность $P(X \\in [0.00, 4.62])$\n", "Эмпирическая оценка вероятности:\n", "$$\n", "P(X \\in [c, d]) = \\frac{\\text{число элементов выборки} \\in [c, d]}{n}.\n", "$$" ] }, { "cell_type": "code", "execution_count": 13, "id": "08ea631c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "P(X ∈ [0.0, 4.62]): 0.82\n" ] } ], "source": [ "count = sum((data[i] >= c) & (data[i] <= d) for i in range(0, len(data)))\n", "probability = count / len(data)\n", "print(f\"P(X ∈ [{c}, {d}]): {probability:.2f}\")" ] }, { "cell_type": "markdown", "id": "26424ded", "metadata": {}, "source": [ "## Пункт c)" ] }, { "cell_type": "markdown", "id": "f6b509ff", "metadata": {}, "source": [ "### 1. Оценка максимального правдоподобия (ОМП)" ] }, { "cell_type": "markdown", "id": "c40e8461", "metadata": {}, "source": [ "Функция правдоподобия для показательного распределения:\n", "$$\n", "L(\\lambda) = \\prod_{i=1}^{n} \\lambda e^{-\\lambda x_i} = \\lambda^n e^{-\\lambda \\sum_{i=1}^{n} x_i}\n", "$$\n", "Логарифмируя, получаем:\n", "$$\n", "\\ln L(\\lambda) = n \\ln \\lambda - \\lambda \\sum_{i=1}^{n} x_i\n", "$$\n", "Дифференцируя по $\\lambda$ и приравнивая к нулю:\n", "$$\n", "\\frac{d}{d\\lambda} \\ln L(\\lambda) = \\frac{n}{\\lambda} - \\sum_{i=1}^{n} x_i = 0\n", "$$\n", "Отсюда получаем ОМП:\n", "$$\n", "\\hat{\\lambda}{\\text{ОМП}} = \\frac{n}{\\sum{i=1}^{n} x_i} = \\frac{1}{\\bar{X}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 14, "id": "7fa556a6", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ОМП для λ: 0.3586\n" ] } ], "source": [ "# ОМП для λ\n", "lambda_ml = 1 / mean\n", "print(f\"ОМП для λ: {lambda_ml:.4f}\")" ] }, { "cell_type": "markdown", "id": "f2ec4e89", "metadata": {}, "source": [ "### 2. Оценка по методу моментов (ОММ)\n", "Для показательного распределения математическое ожидание равно $E[X] = \\frac{1}{\\lambda}$. Приравнивая теоретическое математическое ожидание к выборочному:\n", "$$\n", "\\frac{1}{\\lambda} = \\bar{X} \\Rightarrow \\hat{\\lambda}{\\text{ММ}} = \\frac{1}{\\bar{X}}\n", "$$" ] }, { "cell_type": "code", "execution_count": 15, "id": "91b57523", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "ОММ для λ: 0.3586\n" ] } ], "source": [ "# ОММ для λ\n", "lambda_mm = 1 / mean\n", "print(f\"ОММ для λ: {lambda_mm:.4f}\")" ] }, { "cell_type": "markdown", "id": "98a4fa53", "metadata": {}, "source": [ "### 3. Смещение оценок\n", "Для показательного распределения ОМП и ОММ совпадают. Найдём смещение для $\\hat{\\lambda} = \\frac{1}{\\bar{X}}$:\n", "$$\n", "\\text{Смещение}(\\hat{\\lambda}) = E[\\hat{\\lambda}] - \\lambda\n", "$$\n", "$$\n", "E[\\hat{\\lambda}_{\\text{ОМП}}] = E\\left[\\frac{1}{\\bar{X}}\\right] = \\frac{n\\lambda}{n-1} \\neq \\frac{1}{E[\\bar{X}]} = \\lambda \\space(n>1)\n", "$$\n", "Смещение:\n", "$$\n", "\\text{Bias}(\\hat{\\lambda}) = \\frac{n\\lambda}{n-1} - \\lambda = \\frac{\\lambda}{n-1}.\n", "$$\n", "\n", "Оценка $\\hat{\\lambda}_{\\text{ОМП}}$ является смещённой. Смещение положительно и уменьшается с ростом $n$. При $n→\\inf$, $Bias(\\hat{\\lambda})→0$, поэтому оценка *асимптотически несмещенная*." ] }, { "cell_type": "code", "execution_count": 16, "id": "1bb3bbda", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Смещение MLE: 0.0073\n" ] } ], "source": [ "# Теоретическое смещение для больших выборок\n", "# Для показательного распределения смещение ОМП приближенно равно λ/n\n", "n = len(data)\n", "\n", "bias_mle = (1 / mean) - (n / (n - 1) * (1 / mean))\n", "\n", "\n", "print(f\"Смещение MLE: {abs(bias_mle):.4f}\")" ] }, { "cell_type": "markdown", "id": "289e0726", "metadata": {}, "source": [ "## Пункт d) Асимптотический доверительный интервал\n", "\n", "### Оценка максимального правдоподобия (ОМП):\n", "Для экспоненциального распределения ОМП параметра **λ** вычисляется как:\n", "$$\n", "\\hat{\\lambda} = \\frac{1}{\\bar{X}},\n", "$$\n", "где $\\bar{X}$ — выборочное среднее.\n", "\n", "\n", "### Асимптотическая нормальность ОМП:\n", "При $n \\to \\infty$ распределение $\\hat{\\lambda}$ стремится к нормальному:\n", "- **Математическое ожидание**:\n", " $$\n", " \\mathbb{E}[\\hat{\\lambda}] = \\lambda\n", " $$\n", "- **Дисперсия**:\n", " $$\n", " \\text{Var}(\\hat{\\lambda}) = \\frac{\\lambda^2}{n},\n", " $$\n", "\n", "\n", "### Стандартная ошибка оценки:\n", "Оценивается через ОМП:\n", "$$\n", "\\text{SE}(\\hat{\\lambda}) = \\sqrt{\\frac{\\hat{\\lambda}^2}{n}} = \\frac{\\hat{\\lambda}}{\\sqrt{n}}.\n", "$$\n", "\n", "\n", "### Квантиль нормального распределения:\n", "Для уровня значимости $\\alpha/2$ (например, $\\alpha = 0.1$ для 90% доверительного интервала) квантиль:\n", "$$\n", "z_{1-\\alpha/2} \\approx 1.6449 \\quad (z_{0.95}).\n", "$$\n", "\n", "\n", "### Доверительный интервал:\n", "Интервал для уровня доверия $1-\\alpha$:\n", "$$\n", "\\hat{\\lambda} \\pm z_{1-\\alpha/2} \\cdot \\text{SE}(\\hat{\\lambda}),\n", "$$\n", "что дает границы:\n", "$$\n", "\\left( \\hat{\\lambda} - 1.6449 \\cdot \\frac{\\hat{\\lambda}}{\\sqrt{n}}, \\quad \\hat{\\lambda} + 1.6449 \\cdot \\frac{\\hat{\\lambda}}{\\sqrt{n}} \\right)." ] }, { "cell_type": "code", "execution_count": 17, "id": "7f3db200", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Квантиль z_(1-α/2) = 1.6449\n", "Доверительный интервал (90.0%): (0.2752, 0.4420)\n" ] } ], "source": [ "# Асимптотический доверительный интервал\n", "from scipy import stats\n", "\n", "\n", "z = stats.norm.ppf(1 - alpha2/2)\n", "se = lambda_ml / np.sqrt(len(data))\n", "lower_ci = lambda_ml - z * se\n", "upper_ci = lambda_ml + z * se\n", "\n", "print(f\"Квантиль z_(1-α/2) = {z:.4f}\")\n", "# print(f\"Стандартная ошибка: {se:.4f}\")\n", "print(f\"Доверительный интервал ({(1-alpha2)*100}%): ({lower_ci:.4f}, {upper_ci:.4f})\")" ] }, { "cell_type": "markdown", "id": "4604ecf9", "metadata": {}, "source": [ "## Пункт e) Критерий Колмогорова для проверки простой гипотезы\n", "Критерий Колмогорова основан на статистике:\n", "$$\n", "D_n = \\sup_x |F_n(x) - F(x)|\n", "$$\n", "где $F_n(x)$ — эмпирическая функция распределения, $F(x)$ — теоретическая функция распределения.\n", "Для показательного распределения с параметром $\\lambda_0$:\n", "$$\n", "F(x) = 1 - e^{-\\lambda_0 x}, \\quad x \\geq 0\n", "$$" ] }, { "cell_type": "code", "execution_count": 18, "id": "d881725f", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Критерий Колмогорова-Смирнова:\n", " Статистика Dn: 0.2831, Критическое значение: 0.1725\n", " P-value: 0.0005\n", " Гипотеза отвергается\n" ] } ], "source": [ "# Критерий Колмогорова\n", "# def exponential_cdf(x, lambda_param):\n", "# return 1 - np.exp(-lambda_param * x) if x >= 0 else 0\n", "\n", "# # Вычисление статистики Колмогорова\n", "# x_sorted = np.sort(data)\n", "# n = len(data)\n", "# empirical_cdf = np.arange(1, n + 1) / n\n", "# theoretical_cdf = 1 - np.exp(-lambda0 * x_sorted)\n", "# D_n = np.max(np.abs(empirical_cdf - theoretical_cdf))\n", "\n", "# # Критическое значение для уровня значимости alpha2\n", "# critical_value = np.sqrt(-np.log(alpha2/2) / (2 * n))\n", "\n", "# # p-значение\n", "# p_value = 2 * np.exp(-2 * n * D_n**2)\n", "\n", "# print(f\"Статистика Колмогорова D_n: {D_n:.4f}\")\n", "# print(f\"Критическое значение (α={alpha2}): {critical_value:.4f}\")\n", "# print(f\"p-значение: {p_value:.6f}\")\n", "\n", "# if D_n > critical_value:\n", "# print(f\"Отвергаем H0 на уровне значимости {alpha2}\")\n", "# else:\n", "# print(f\"Нет оснований отвергнуть H0 на уровне значимости {alpha2}\")\n", "# # e) Критерий Колмогорова\n", "\n", "# from scipy.stats import expon, kstest\n", "\n", "# # Правильное задание распределения (scale = 1/lambda)\n", "# dist = expon(loc=0, scale=1/lambda0) \n", "# D, p_value = kstest(data, dist.cdf)\n", "\n", "# # Критическое значение для alpha=0.10\n", "# critical_value = 1.22 / np.sqrt(n) \n", "\n", "\n", "\n", "# e) Критерий Колмогорова-Смирнова с использованием scipy\n", "from scipy.stats import kstest\n", "from scipy.stats import expon\n", "\n", "# Параметры показательного распределения: scale = 1/lambda\n", "dist = expon(scale=1/lambda0) # loc=0 по умолчанию\n", "D_stat, p_value = kstest(data, dist.cdf)\n", "\n", "# Критическое значение для alpha=0.10 (асимптотическая формула)\n", "critical_value = 1.22 / np.sqrt(n) # Для alpha=0.10\n", "\n", "print(f\"\\nКритерий Колмогорова-Смирнова:\")\n", "print(f\" Статистика Dn: {D_stat:.4f}, Критическое значение: {critical_value:.4f}\")\n", "print(f\" P-value: {p_value:.4f}\")\n", "print(f\" Гипотеза {'отвергается' if D_stat > critical_value else 'не отвергается'}\")\n", "\n", "\n", "x_sorted = np.sort(data)\n", "n = len(data)\n", "empirical_cdf = np.arange(1, n + 1) / n\n", "theoretical_cdf = 1 - np.exp(-lambda0 * x_sorted)\n" ] }, { "cell_type": "markdown", "id": "f9ef2691", "metadata": {}, "source": [ "## Пункт f) Критерий χ² для проверки простой гипотезы\n", "Критерий χ² основан на сравнении наблюдаемых и ожидаемых частот в интервалах:\n", "$$\n", "\\chi^2 = \\sum_{i=1}^{k} \\frac{(O_i - E_i)^2}{E_i}\n", "$$\n", "где $O_i$ — наблюдаемая частота в $i$-м интервале, $E_i$ — ожидаемая частота." ] }, { "cell_type": "code", "execution_count": 19, "id": "4383629c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Таблица частот после объединения:\n", "Интервал \tНаблюдаемо\tОжидаемо\tВклад в χ²\n", "[0.00, 2.80)\t\t 34 \t30.15\t\t0.4906497\n", "[2.80, 14.00)\t\t 7 \t11.97\t\t2.0627840\n", "[14.00, 15.40)\t\t 9 \t7.68\t\t0.2261086\n", "χ² статистика: 2.7795\n", "Критическое значение (α=0.1): 4.6052\n", "p-значение: 0.249132\n", "Степени свободы: 2\n", "Нет оснований отвергнуть гипотезу на уровне 0.1\n" ] } ], "source": [ "# Теоретическое смещение для больших выборок\n", "# Для показательного распределения смещение ОМП приближенно равно λ/n\n", "from scipy.stats import chi2, expon\n", "\n", "n = len(data)\n", "\n", "# Гистограмма и ожидаемые частоты\n", "observed, bin_edges = np.histogram(data, bins=bins)\n", "expected = []\n", "for i in range(len(bin_edges)-1):\n", " lower = bin_edges[i]\n", " upper = bin_edges[i+1]\n", " prob = expon.cdf(upper, scale=1/lambda0) - expon.cdf(lower, scale=1/lambda0)\n", " expected.append(prob * n)\n", "expected = np.array(expected)\n", "\n", "# Объединение интервалов\n", "while np.any(observed < 5):\n", " min_idx = np.argmin(observed)\n", " if min_idx == 0:\n", " # Объединяем с следующим интервалом\n", " expected[min_idx + 1] += expected[min_idx]\n", " observed[min_idx + 1] += observed[min_idx]\n", " # bin_edges = np.delete(bin_edges, min_idx)\n", " else:\n", " # Объединяем с предыдущим интервалом\n", " expected[min_idx - 1] += expected[min_idx]\n", " observed[min_idx - 1] += observed[min_idx]\n", " bin_edges = np.delete(bin_edges, min_idx-1)\n", " # print(bin_edges)\n", " # Удаляем объединенный интервал\n", " expected = np.delete(expected, min_idx)\n", " observed = np.delete(observed, min_idx)\n", "\n", "# Расчет статистики χ²\n", "chi2_stat = np.sum((observed - expected)**2 / expected)\n", "dof = len(expected) - 1\n", "chi2_crit = chi2.ppf(1 - alpha2, dof)\n", "p_value = 1 - chi2.cdf(chi2_stat, dof)\n", "\n", "print(\"\\nТаблица частот после объединения:\")\n", "print(\"Интервал \\tНаблюдаемо\\tОжидаемо\\tВклад в χ²\")\n", "for i in range(len(observed)):\n", " lower = bin_edges[i]\n", " upper = bin_edges[i+1]\n", " contrib = (observed[i]-expected[i])**2/expected[i]\n", " print(f\"[{lower:.2f}, {upper:.2f})\\t\\t{observed[i]:^10}\\t{expected[i]:.2f}\\t\\t{contrib:.7f}\")\n", "\n", "# Вывод результатов\n", "print(f\"χ² статистика: {chi2_stat:.4f}\")\n", "print(f\"Критическое значение (α={alpha2}): {chi2_crit:.4f}\")\n", "print(f\"p-значение: {p_value:.6f}\")\n", "print(f\"Степени свободы: {dof}\")\n", "if chi2_stat > chi2_crit:\n", " print(f\"Гипотеза отвергается на уровне {alpha2}\")\n", "else:\n", " print(f\"Нет оснований отвергнуть гипотезу на уровне {alpha2}\")\n" ] }, { "cell_type": "markdown", "id": "224852ad", "metadata": {}, "source": [ "## Пункт g) Критерий χ² для проверки сложной гипотезы\n", "При проверке сложной гипотезы параметр λ оценивается по выборке:" ] }, { "cell_type": "code", "execution_count": 20, "id": "7456dc2c", "metadata": {}, "outputs": [], "source": [ "# # Критерий χ² для сложной гипотезы\n", "# # Используем ОМП вместо λ0\n", "# lambda_ml = 1 / mean\n", "\n", "# # Разбиваем данные на интервалы с шагом h\n", "# bins = np.arange(0, max(data) + h, h)\n", "# observed, bin_edges = np.histogram(data, bins=bins)\n", "\n", "# # Вычисляем теоретические вероятности для каждого интервала с λ_ml\n", "# theoretical_prob = []\n", "# for i in range(len(bin_edges) - 1):\n", "# lower = bin_edges[i]\n", "# upper = bin_edges[i+1]\n", "# prob = np.exp(-lambda_ml * lower) - np.exp(-lambda_ml * upper)\n", "# theoretical_prob.append(prob)\n", "\n", "# # Вычисляем ожидаемые частоты\n", "# expected = np.array(theoretical_prob) * n\n", "\n", "# # Объединяем интервалы, где E_i < 5\n", "# combined_observed = []\n", "# combined_expected = []\n", "# combined_bins = []\n", "\n", "# current_obs = 0\n", "# current_exp = 0\n", "# current_lower = bin_edges[0]\n", "\n", "# for i in range(len(observed)):\n", "# current_obs += observed[i]\n", "# current_exp += expected[i]\n", " \n", "# if current_exp >= 5 or i == len(observed) - 1:\n", "# combined_observed.append(current_obs)\n", "# combined_expected.append(current_exp)\n", "# combined_bins.append((current_lower, bin_edges[i+1]))\n", "# current_obs = 0\n", "# current_exp = 0\n", "# current_lower = bin_edges[i+1]\n", "\n", "# # Вычисляем статистику χ²\n", "# chi2_stat = np.sum((np.array(combined_observed) - np.array(combined_expected))**2 / np.array(combined_expected))\n", "\n", "# # Степени свободы: число интервалов - 1 - 1 (для сложной гипотезы с одним оцененным параметром)\n", "# df = len(combined_bins) - 1 - 1\n", "\n", "# # Критическое значение и p-значение\n", "# chi2_crit = stats.chi2.ppf(1 - alpha2, df)\n", "# p_value = 1 - stats.chi2.cdf(chi2_stat, df)\n", "\n", "# print(f\"Статистика χ² (сложная гипотеза): {chi2_stat:.4f}\")\n", "# print(f\"Критическое значение (α={alpha2}): {chi2_crit:.4f}\")\n", "# print(f\"p-значение: {p_value:.6f}\")\n", "# print(f\"Степени свободы: {df}\")\n", "\n", "# if chi2_stat > chi2_crit:\n", "# print(f\"Отвергаем H0 на уровне значимости {alpha2}\")\n", "# else:\n", "# print(f\"Нет оснований отвергнуть H0 на уровне значимости {alpha2}\")" ] }, { "cell_type": "code", "execution_count": 22, "id": "60c8dfd9", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Оценка λ: 0.4490\n", "\n", "Таблица частот после объединения:\n", "Интервал \tНаблюдаемо\tОжидаемо\tВклад в χ²\n", "[0.00, 1.40)\t\t 30 \t23.33\t\t1.9049\n", "[1.40, 4.20)\t\t 10 \t19.08\t\t4.3222\n", "[4.20, 16.80)\t\t 10 \t7.56\t\t0.7883\n", "\n", "Критерий χ² для сложной гипотезы:\n", " Статистика χ²: 7.0154\n", " Критическое значение (α=0.1): 2.7055\n", " p-значение: 0.0081\n", " Степени свободы: 1\n", "Гипотеза отвергается на уровне 0.1\n" ] } ], "source": [ "import numpy as np\n", "from scipy.stats import chi2, expon\n", "\n", "# Оценка параметра λ методом максимального правдоподобия\n", "lambda_ml = 0.4490\n", "print(f\"Оценка λ: {lambda_ml:.4f}\")\n", "\n", "# Построение интервалов с шагом h\n", "max_value = np.max(data)\n", "bins = np.arange(0, max_value + h, h)\n", "observed, bin_edges = np.histogram(data, bins=bins)\n", "\n", "# Расчет теоретических вероятностей и ожидаемых частот\n", "expected = []\n", "for i in range(len(bin_edges) - 1):\n", " lower = bin_edges[i]\n", " upper = bin_edges[i+1]\n", " prob = expon.cdf(upper, scale=1/lambda_ml) - expon.cdf(lower, scale=1/lambda_ml)\n", " expected.append(prob * n)\n", "expected = np.array(expected)\n", "\n", "# Объединение интервалов с expected < 5\n", "observed_list = observed.tolist()\n", "expected_list = expected.tolist()\n", "bin_edges_list = bin_edges.tolist()\n", "\n", "i = 0\n", "while i < len(observed_list):\n", " if observed_list[i] <= 5:\n", " if i == 0 or i == len(observed_list) - 1:\n", " # Объединяем с соседним интервалом\n", " if i == 0:\n", " expected_list[i+1] += expected_list[i]\n", " observed_list[i+1] += observed_list[i]\n", " del bin_edges_list[i+1]\n", " else:\n", " expected_list[i-1] += expected_list[i]\n", " observed_list[i-1] += observed_list[i]\n", " del bin_edges_list[i]\n", " del expected_list[i]\n", " del observed_list[i]\n", " else:\n", " # Объединяем с минимальным соседом\n", " if expected_list[i-1] < expected_list[i+1]:\n", " expected_list[i-1] += expected_list[i]\n", " observed_list[i-1] += observed_list[i]\n", " del bin_edges_list[i]\n", " else:\n", " expected_list[i+1] += expected_list[i]\n", " observed_list[i+1] += observed_list[i]\n", " del bin_edges_list[i+1]\n", " del expected_list[i]\n", " del observed_list[i]\n", " else:\n", " i += 1\n", "\n", "# Проверка минимального числа интервалов\n", "if len(expected_list) < 2:\n", " raise ValueError(\"Недостаточно интервалов после объединения!\")\n", "\n", "# Расчет статистики χ²\n", "chi2_stat = np.sum((np.array(observed_list) - np.array(expected_list))**2 / np.array(expected_list))\n", "\n", "# Степени свободы: k - 1 - 1 (k — число интервалов, 1 оцененный параметр)\n", "df = len(expected_list) - 2\n", "chi2_crit = chi2.ppf(1 - alpha2, df)\n", "p_value = 1 - chi2.cdf(chi2_stat, df)\n", "\n", "print(\"\\nТаблица частот после объединения:\")\n", "print(\"Интервал \\tНаблюдаемо\\tОжидаемо\\tВклад в χ²\")\n", "for i in range(len(observed_list)):\n", " lower = bin_edges_list[i]\n", " upper = bin_edges_list[i+1]\n", " contrib = (observed_list[i]-expected_list[i])**2/expected_list[i]\n", " print(f\"[{lower:.2f}, {upper:.2f})\\t\\t{observed_list[i]:^10}\\t{expected_list[i]:.2f}\\t\\t{contrib:.4f}\")\n", "\n", "\n", "# Вывод результатов\n", "print(f\"\\nКритерий χ² для сложной гипотезы:\")\n", "print(f\" Статистика χ²: {chi2_stat:.4f}\")\n", "print(f\" Критическое значение (α={alpha2}): {chi2_crit:.4f}\")\n", "print(f\" p-значение: {p_value:.4f}\")\n", "print(f\" Степени свободы: {df}\")\n", "\n", "if chi2_stat > chi2_crit:\n", " print(f\"Гипотеза отвергается на уровне {alpha2}\")\n", "else:\n", " print(f\"Нет оснований отвергнуть гипотезу на уровне {alpha2}\")\n" ] }, { "cell_type": "code", "execution_count": 26, "id": "28fd5d5e", "metadata": {}, "outputs": [], "source": [ "# import numpy as np\n", "# from scipy.stats import chi2, expon\n", "\n", "\n", "# # Функция для вычисления χ² и объединения интервалов\n", "# def calculate_chi2(lambda_, data, h):\n", "# n = len(data)\n", "# max_val = np.max(data)\n", "# bins = np.arange(0, max_val + h, h)\n", "# if bins[-1] < max_val:\n", "# bins = np.append(bins, bins[-1] + h)\n", "# observed, _ = np.histogram(data, bins=bins)\n", " \n", "# # Теоретические вероятности и ожидаемые частоты\n", "# probs = []\n", "# for i in range(len(bins) - 1):\n", "# cdf_lower = expon.cdf(bins[i], scale=1/lambda_)\n", "# cdf_upper = expon.cdf(bins[i+1], scale=1/lambda_)\n", "# prob = cdf_upper - cdf_lower\n", "# probs.append(prob)\n", "# expected = np.array(probs) * n\n", " \n", "# # Объединение интервалов с expected < 5\n", "# observed_list = observed.tolist()\n", "# expected_list = expected.tolist()\n", "# bin_edges_list = bins.tolist()\n", " \n", "# i = 0\n", "# while i < len(expected_list):\n", "# if expected_list[i] < 5:\n", "# if i == len(expected_list) - 1: # Последний интервал\n", "# expected_list[i-1] += expected_list[i]\n", "# observed_list[i-1] += observed_list[i]\n", "# del expected_list[i]\n", "# del observed_list[i]\n", "# del bin_edges_list[i+1]\n", "# i -= 1 # Проверить новый интервал\n", "# else: # Объединить со следующим интервалом\n", "# expected_list[i] += expected_list[i+1]\n", "# observed_list[i] += observed_list[i+1]\n", "# del expected_list[i+1]\n", "# del observed_list[i+1]\n", "# del bin_edges_list[i+1]\n", "# else:\n", "# i += 1\n", " \n", "# # Вычисление статистики χ²\n", "# chi2_val = 0\n", "# for obs, exp in zip(observed_list, expected_list):\n", "# if exp > 0: # Избегаем деления на ноль\n", "# chi2_val += (obs - exp) ** 2 / exp\n", "# return chi2_val, bin_edges_list, observed_list, expected_list\n", "\n", "# # Поиск λ, минимизирующей χ² в диапазоне [0.2, 0.5]\n", "# lambda_grid = np.arange(0.2, 0.51, 0.001)\n", "# min_chi2 = float('inf')\n", "# lambda_min = None\n", "# results = {}\n", "\n", "# for lambda_val in lambda_grid:\n", "# chi2_val, bin_edges, observed, expected = calculate_chi2(lambda_val, data, h)\n", "# results[lambda_val] = (chi2_val, bin_edges, observed, expected)\n", "# if chi2_val < min_chi2:\n", "# min_chi2 = chi2_val\n", "# lambda_min = lambda_val\n", "\n", "# # Финализация результатов для оптимального λ\n", "# chi2_stat, bin_edges_final, observed_final, expected_final = results[lambda_min]\n", "# k = len(observed_final)\n", "# df = k - 2 # Степени свободы (k интервалов - 1 - 1 параметр)\n", "# chi2_crit = chi2.ppf(1 - alpha2, df)\n", "# p_value = 1 - chi2.cdf(chi2_stat, df)\n", "\n", "# # Вывод результатов\n", "# print(f\"Оптимальное λ, минимизирующее χ²: {lambda_min:.10f}\")\n", "# print(f\"Минимальная статистика χ²: {chi2_stat:.4f}\")\n", "# print(f\"Степени свободы: {df}\")\n", "# print(f\"Критическое значение χ² (α={alpha2}): {chi2_crit:.4f}\")\n", "# print(f\"p-значение: {p_value:.4f}\")\n", "\n", "# # Проверка гипотезы\n", "# if chi2_stat > chi2_crit:\n", "# print(f\"Гипотеза отвергается на уровне {alpha2}\")\n", "# else:\n", "# print(f\"Нет оснований отвергнуть гипотезу на уровне {alpha2}\")\n", "\n", "# # Наибольший уровень значимости, при котором гипотеза не отвергается\n", "# print(f\"Наибольший уровень значимости: {p_value:.4f}\")\n", "\n", "# # Вывод таблицы частот\n", "# print(\"\\nИнтервалы и частоты после объединения:\")\n", "# print(\"Интервал \\tНаблюдаемо\\tОжидаемо\\tВклад в χ²\")\n", "# for i in range(len(observed_final)):\n", "# lower = bin_edges_final[i]\n", "# upper = bin_edges_final[i+1]\n", "# contrib = (observed_final[i] - expected_final[i])**2 / expected_final[i] if expected_final[i] > 0 else 0\n", "# print(f\"[{lower:.2f}, {upper:.2f})\\t{observed_final[i]:10}\\t{expected_final[i]:10.2f}\\t{contrib:.4f}\")" ] }, { "cell_type": "markdown", "id": "ab06e320", "metadata": {}, "source": [ "## Пункт h) Наиболее мощный критерий\n", "Для проверки простой гипотезы $H_0: \\lambda = \\lambda_0$ против альтернативы $H_1: \\lambda = \\lambda_1$ наиболее мощный критерий основан на отношении правдоподобия:\n", "$$\n", "\\Lambda = \\frac{L(\\lambda_0)}{L(\\lambda_1)} = \\frac{\\lambda_0^n e^{-\\lambda_0 \\sum_{i=1}^{n} x_i}}{\\lambda_1^n e^{-\\lambda_1 \\sum_{i=1}^{n} x_i}} = \\left(\\frac{\\lambda_0}{\\lambda_1}\\right)^n e^{-(\\lambda_0-\\lambda_1) \\sum_{i=1}^{n} x_i}\n", "$$\n", "Логарифмируя:\n", "$$\n", "\\ln \\Lambda = n \\ln\\left(\\frac{\\lambda_0}{\\lambda_1}\\right) - (\\lambda_0-\\lambda_1) \\sum_{i=1}^{n} x_i\n", "$$\n", "Критическая область имеет вид $\\ln \\Lambda < c$, где $c$ определяется уровнем значимости $\\alpha_2$." ] }, { "cell_type": "code", "execution_count": 81, "id": "c0c3655a", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " Критическая область: sum_data > 179.54\n", " Сумма данных: 139.43\n", " Решение: Не отвергаем H0\n", "\n", "При замене гипотез местами:\n", " Критическая область: sum_data < 294.14\n", " Решение: Отвергаем H0\n" ] } ], "source": [ "# lambda0 = 0.33\n", "# lambda1 = 0.14\n", "# # Наиболее мощный критерий\n", "# # Вычисляем отношение правдоподобия\n", "# log_lambda = n * np.log(lambda0/lambda1) - (lambda0 - lambda1) * np.sum(data)\n", "\n", "# # Критическое значение для уровня значимости alpha2\n", "# # Для экспоненциального распределения можно показать, что критическая область имеет вид:\n", "# # sum(x_i) > c, где c определяется из уровня значимости\n", "# sum_data = np.sum(data)\n", "# c = -np.log(alpha2) / (lambda0 - lambda1) + n * np.log(lambda0/lambda1) / (lambda0 - lambda1)\n", "\n", "# print(f\"Сумма наблюдений: {sum_data:.4f}\")\n", "# print(f\"Критическое значение c: {c:.4f}\")\n", "# print(f\"Логарифм отношения правдоподобия: {log_lambda:.4f}\")\n", "\n", "# if sum_data > c:\n", "# print(f\"Отвергаем H0: λ = {lambda0} в пользу H1: λ = {lambda1}\")\n", "# else:\n", "# print(f\"Нет оснований отвергнуть H0: λ = {lambda0}\")\n", "\n", "# # Если поменять местами гипотезы\n", "# log_lambda_reversed = n * np.log(lambda1/lambda0) - (lambda1 - lambda0) * np.sum(data)\n", "# c_reversed = -np.log(alpha2) / (lambda1 - lambda0) + n * np.log(lambda1/lambda0) / (lambda1 - lambda0)\n", "\n", "# print(\"\\nЕсли поменять местами гипотезы:\")\n", "# print(f\"Критическое значение c: {c_reversed:.4f}\")\n", "# print(f\"Логарифм отношения правдоподобия: {log_lambda_reversed:.4f}\")\n", "\n", "# if sum_data < c_reversed:\n", "# print(f\"Отвергаем H0: λ = {lambda1} в пользу H1: λ = {lambda0}\")\n", "# else:\n", "# print(f\"Нет оснований отвергнуть H0: λ = {lambda1}\")\n", "\n", "\n", "# h) Наиболее мощный критерий\n", "from scipy.stats import gamma\n", "\n", "alpha2 = 0.10\n", "n = len(data)\n", "sum_data = sum(data)\n", "\n", "# Для H0: λ=0.33, сумма данных ~ Gamma(n, 1/0.33)\n", "c = gamma.ppf(1 - alpha2, n, scale=1/lambda0) # Квантиль уровня 1-α\n", "\n", "print(f\" Критическая область: sum_data > {c:.2f}\")\n", "print(f\" Сумма данных: {sum_data:.2f}\")\n", "print(f\" Решение: {'Отвергаем H0' if sum_data > c else 'Не отвергаем H0'}\")\n", "\n", "# Для обратной гипотезы (H0: λ=0.14 vs H1: λ=0.33)\n", "c_reversed = gamma.ppf(alpha2, n, scale=1/lambda1) # Квантиль уровня α\n", "print(f\"\\nПри замене гипотез местами:\")\n", "print(f\" Критическая область: sum_data < {c_reversed:.2f}\")\n", "print(f\" Решение: {'Отвергаем H0' if sum_data < c_reversed else 'Не отвергаем H0'}\")" ] } ], "metadata": { "kernelspec": { "display_name": "venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.2" } }, "nbformat": 4, "nbformat_minor": 5 }