number-plate-study/модуль 1.ipynb

473 lines
131 KiB
Plaintext
Raw Normal View History

2024-11-28 18:44:43 +01:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from scipy import stats\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" v131 v132 v133 v134\n",
"0 -4.524858 0.579889 7.180352 15\n",
"1 2.453333 -0.339670 6.720415 7\n",
"2 -4.804977 3.298895 6.179200 11\n",
"3 -0.664316 0.805015 7.302714 9\n",
"4 7.296641 4.166122 7.505439 9\n"
]
}
],
"source": [
"# Загрузка данных\n",
"data = pd.read_excel('данные модуль 1.xlsx')\n",
"\n",
"# Предварительный просмотр данных\n",
"print(data.head())\n"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"\n",
"V1 = data['v131']\n",
"V2 = data['v132']\n",
"V3 = data['v133']\n",
"V4 = data['v134']\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAPeCAYAAADd/6nHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8hTgPZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXhU5d3/8fcsyWRPyJ6QhJ2ELWxucUEEFBFwgS5arWtdWrSttP5aWmurtQ/a9nHrg3RT1Cq1RXFBRRRkU0HZ1xB2Qsi+TtbJZOb8/gjGpuyQ5MxMPq/rmutizpk588HW8Z7vue/vbTEMw0BERERERERERKQLWc0OICIiIiIiIiIi3Y+KUiIiIiIiIiIi0uVUlBIRERERERERkS6nopSIiIiIiIiIiHQ5FaVERERERERERKTLqSglIiIiIiIiIiJdTkUpERERERERERHpcipKiYiIiIiIiIhIl1NRSkREREREREREupyKUiIiIiIiIiIi0uVUlBLpBl566SUsFssJHwUFBWZHlLOUnZ1NRkYGhmGc8DWXXHIJSUlJtLS0ADB37ly++c1vkpGRgcVi4fbbb++itCIiIv5L46nAdabjqcOHD/Poo49ywQUX0KNHD+Lj4xk7dixLly7twtQigcFudgAR6TqPPfYYffr0OeZ4bGysCWmkI9x88838/Oc/Z/Xq1YwZM+aY8wcPHmTNmjXcf//92O2tX/lPPvkktbW1XHDBBRQVFXV1ZBEREb+m8VTgOdPx1DvvvMOTTz7J9ddfz2233UZLSwuvvPIKV155JS+++CJ33HGHCX8LEf+kopRINzJp0iTOO+88s2NIB/rOd77DrFmzmD9//nEHUf/85z8xDIObb7657djKlSvbZklFRER0ZVwRERG/p/FU4DnT8dQVV1xBfn4+8fHxba+57777GDFiBI888oiKUiJnQMv3RKTNV9PSDx482HbM6/WSnZ2NxWLhpZdeavf6Xbt28a1vfYuEhARCQ0PJzMzkl7/8JQC/+c1vTjrF3WKxsGLFirZrLViwgNGjRxMaGkp8fDy33HILR44cafd5t99++3Gv079//7bX9O7dmylTpvDRRx8xYsQIQkJCGDx4MAsXLmx3rcrKSn76058ybNgwIiIiiIqKYtKkSWzZsqXd61asWNH2OZs3b2537siRI9hsNiwWC2+88cYxOUeMGHHMP+PZs2cftxg0b948xo0bR2JiIg6Hg8GDBzN37txj3v/f0tPTGTNmDG+88QZut/uY8/Pnz6dfv35ceOGFbcd69eqFxWI55bVFRETkzGk8FfjjqSFDhrQrSAE4HA6uueYaCgoKqK2tPeVnikgrzZQSkZP6xz/+wbZt2445vnXrVi677DKCgoK455576N27N/v27WPRokX87ne/Y9q0ae0GNw8++CCDBg3innvuaTs2aNAgoHXwdscdd3D++ecze/ZsSkpKePbZZ/nss8/YtGkTMTExbe9xOBz8/e9/b5clMjKy3fM9e/bw7W9/m/vuu4/bbruNefPm8c1vfpMPP/yQK6+8EoD9+/fz9ttv881vfpM+ffpQUlLCX/7yFy6//HJ27txJampqu2uGhIQwb948nn322bZjL7/8MsHBwTQ1NR3zz8dut7Njxw42bdrEyJEj246/9NJLhISEHPP6uXPnMmTIEK699lrsdjuLFi3iBz/4AV6vlxkzZhzz+v908803c88997BkyRKmTJnSdnzbtm1s376dRx555KTvFxERkc6l8VSrQB9PFRcXExYWRlhY2ClfKyJHGSIS8ObNm2cAxrp1607rdQcOHDAMwzCampqMjIwMY9KkSQZgzJs3r+21Y8aMMSIjI41Dhw61u4bX6z3utXv16mXcdtttxxxvbm42EhMTjaFDhxqNjY1tx9977z0DMB555JG2Y7fddpsRHh5+0r9Dr169DMB48803247V1NQYKSkpxsiRI9uONTU1GR6Pp917Dxw4YDgcDuOxxx5rO7Z8+XIDMG666SYjLi7OcLlcbecGDBhgfOc73zEAY8GCBcfknDp1qnH//fe3HV+9erURGhpqXH/99cf8PRoaGo75u0ycONHo27fvSf++hmEYlZWVhsPhMG666aZ2x3/+858bgJGXl3fC94aHhx/3fxcRERFpT+MpjadOZs+ePUZISIjx3e9+95SfJSJf0/I9ETmhOXPmUFFRwa9//et2x8vKyli1ahV33nknGRkZ7c6d6bKw9evXU1payg9+8IN2d7wmT55MVlYW77///hnnTk1N5YYbbmh7HhUVxa233sqmTZsoLi4GWu8QWq2tX4Eej4eKigoiIiLIzMxk48aNx1xz6tSpWCwW3n33XQBWr15NQUEB3/72t0+Y484772T+/Pm4XC6gdUr5tGnTiI6OPua1oaGhbX+uqamhvLycyy+/nP3791NTU3PSv2+PHj245pprePfdd6mvrwfAMAxef/11zjvvPAYOHHjS94uIiEjn0Xjqa4E6nmpoaOCb3/wmoaGhPPHEEyf9HBFpT0UpETmumpoa/ud//oeZM2eSlJTU7tz+/fsBGDp06Dl/zqFDhwDIzMw85lxWVlbb+TPRv3//YwZzXw0kvurv4PV6efrppxkwYAAOh4P4+HgSEhLYunXrcQctQUFB3HLLLbz44osAvPjii0yfPp2oqKgT5pg8eXLbDi319fX8+9//PmHjy88++4wJEyYQHh5OTEwMCQkJ/OIXvwA45SAKWqec19fX88477wDw+eefc/DgwXYNzkVERKRraTzVXiCOpzweDzfeeCM7d+7kjTfeOGbJooicnIpSInJcTz75JFarlYceesjsKJ3iqwHimDFjePXVV1myZAkff/wxQ4YMwev1Hvc9d955Jx999BF5eXksWLDglDurfDXwmjdvHgsWLCAuLo5x48Yd87p9+/Yxfvx4ysvLeeqpp3j//ff5+OOPefDBBwFOmOc/TZkyhejoaObPnw+0NuS02WzceOONp3yviIiIdA6Np44VaOOpu+++m/fee4+XXnrpuLlE5OTU6FxEjlFYWMizzz7L7NmziYyMpKKiot35vn37ArB9+/Zz/qxevXoBkJeXd8x/yPPy8trOn4m9e/diGEa7u3u7d+8GWneTAXjjjTe44ooreOGFF9q9t7q6+pjdVL4ybNgwRo4c2bZDzhVXXMHKlStPmuXOO+9k+PDhHD58mNtuu+240/EXLVqEy+Xi3XffbTd9f/ny5af194XW6fPf+MY3eOWVVygpKWHBggWMGzeO5OTk076GiIiIdByNpwJ/PPXQQw8xb948nnnmGW666abT/hwR+ZpmSonIMR599FGSkpK47777jns+ISGBMWPG8OKLL5Kfn9/unGEYZ/RZ5513HomJifz5z39u6xUAsHjxYnJzc5k8efIZ5y8sLOStt95qe+50OnnllVcYMWJE26DCZrMdk3XBggXHbJv83+688062bt3atk3xqQwZMoTRo0ezc+dObr/99uO+xmazAe3/2dXU1DBv3rxTXv8/3Xzzzbjdbu69917Kysq0dE9ERMREGk+dWCCMp/7whz/wxz/+kV/84hf86Ec/OqPPEJGvaaaUiBzjo48+4rXXXiM4OPiEr3nuuee49NJLGTVqFPfccw99+vTh4MGDvP/++2zevPm0PysoKIgnn3ySO+64g8svv5ybbrqpbQvj3r17t025PhMDBw7krrvuYt26dSQlJfHiiy9SUlLSblAyZcoUHnvsMe644w4uvvhitm3bxmuvvdZ21/JE7r77br75zW8et7nmiXzyySe4XC5iY2OPe/6qq64iODiYqVOncu+991JXV8ff/vY3EhMTKSoqOu3Pufzyy0lLS+Odd94hNDSUadOmHfd1ixYtYsuWLQC43W62bt3K448/DsC1115Ldnb2aX+miIiIHJ/GUyfm7+Opt956i//3//4fAwYMYNCgQbz66qvtzl955ZXH9BATkeNTUUpEjjFixIhTTkEePnw4a9eu5Ve/+hVz586lqamJXr168a1vfeuMP+/2228nLCyMJ554gp/97GeEh4dzww038OSTTxITE3PG1xswYAB/+tO
"text/plain": [
"<Figure size 1200x1000 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"\n",
"fig, axs = plt.subplots(2, 2, figsize=(12, 10))\n",
"\n",
"sns.histplot(V1, kde=True, ax=axs[0, 0])\n",
"axs[0, 0].set_title('Гистограмма V1')\n",
"\n",
"sns.histplot(V2, kde=True, ax=axs[0, 1])\n",
"axs[0, 1].set_title('Гистограмма V2')\n",
"\n",
"sns.histplot(V3, kde=True, ax=axs[1, 0])\n",
"axs[1, 0].set_title('Гистограмма V3')\n",
"\n",
"sns.histplot(V4, kde=True, ax=axs[1, 1])\n",
"axs[1, 1].set_title('Гистограмма V4')\n",
"\n",
"plt.tight_layout()\n",
"plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [],
"source": [
"def descriptive_stats(data):\n",
" stats_dict = {\n",
" 'Объем выборки (n)': len(data),\n",
" 'Среднее': np.mean(data),\n",
" 'Медиана': np.median(data),\n",
" 'Дисперсия': np.var(data, ddof=1),\n",
" 'Стандартное отклонение': np.std(data, ddof=1),\n",
" 'Коэффициент асимметрии': stats.skew(data),\n",
" 'Коэффициент эксцесса': stats.kurtosis(data),\n",
" 'Минимальное значение': np.min(data),\n",
" 'Максимальное значение': np.max(data),\n",
" 'Размах выборки': np.ptp(data),\n",
" 'Нижняя квартиль (Q1)': np.percentile(data, 25),\n",
" 'Верхняя квартиль (Q3)': np.percentile(data, 75),\n",
" }\n",
" return stats_dict\n"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Статистические характеристики V1:\n",
"Объем выборки (n): 200\n",
"Среднее: 3.042330651615597\n",
"Медиана: 3.24236251866\n",
"Дисперсия: 17.566849111278266\n",
"Стандартное отклонение: 4.1912825138945555\n",
"Коэффициент асимметрии: -0.10466907194323638\n",
"Коэффициент эксцесса: -0.0038508159993266844\n",
"Минимальное значение: -9.04243513703\n",
"Максимальное значение: 13.9581583142\n",
"Размах выборки: 23.00059345123\n",
"Нижняя квартиль (Q1): 0.33781273369275\n",
"Верхняя квартиль (Q3): 5.8620395763725\n",
"\n",
"Статистические характеристики V2:\n",
"Объем выборки (n): 200\n",
"Среднее: 1.0480258893092393\n",
"Медиана: 1.12799311818\n",
"Дисперсия: 3.933229643500426\n",
"Стандартное отклонение: 1.9832371626964906\n",
"Коэффициент асимметрии: -0.19789624679145457\n",
"Коэффициент эксцесса: -0.18279648031150364\n",
"Минимальное значение: -4.5922700602\n",
"Максимальное значение: 5.57765925343\n",
"Размах выборки: 10.16992931363\n",
"Нижняя квартиль (Q1): -0.415424220853\n",
"Верхняя квартиль (Q3): 2.4777878204975\n",
"\n",
"Статистические характеристики V3:\n",
"Объем выборки (n): 200\n",
"Среднее: 6.5195654172197\n",
"Медиана: 6.464160536565\n",
"Дисперсия: 0.7546047389961228\n",
"Стандартное отклонение: 0.8686798829235789\n",
"Коэффициент асимметрии: 0.019544398868115844\n",
"Коэффициент эксцесса: -1.2254735902540985\n",
"Минимальное значение: 5.00216182551\n",
"Максимальное значение: 7.99016901628\n",
"Размах выборки: 2.9880071907700003\n",
"Нижняя квартиль (Q1): 5.7534552626524995\n",
"Верхняя квартиль (Q3): 7.271182201435\n",
"\n",
"Статистические характеристики V4:\n",
"Объем выборки (n): 200\n",
"Среднее: 10.525\n",
"Медиана: 11.0\n",
"Дисперсия: 9.949120603015075\n",
"Стандартное отклонение: 3.1542226622442295\n",
"Коэффициент асимметрии: 0.5104487794952168\n",
"Коэффициент эксцесса: 1.9103281524427569\n",
"Минимальное значение: 2\n",
"Максимальное значение: 25\n",
"Размах выборки: 23\n",
"Нижняя квартиль (Q1): 8.75\n",
"Верхняя квартиль (Q3): 12.0\n"
]
}
],
"source": [
"\n",
"stats_V1 = descriptive_stats(V1)\n",
"stats_V2 = descriptive_stats(V2)\n",
"stats_V3 = descriptive_stats(V3)\n",
"stats_V4 = descriptive_stats(V4)\n",
"\n",
"\n",
"print(\"Статистические характеристики V1:\")\n",
"for k, v in stats_V1.items():\n",
" print(f\"{k}: {v}\")\n",
"\n",
"print(\"\\nСтатистические характеристики V2:\")\n",
"for k, v in stats_V2.items():\n",
" print(f\"{k}: {v}\")\n",
"\n",
"print(\"\\nСтатистические характеристики V3:\")\n",
"for k, v in stats_V3.items():\n",
" print(f\"{k}: {v}\")\n",
"\n",
"print(\"\\nСтатистические характеристики V4:\")\n",
"for k, v in stats_V4.items():\n",
" print(f\"{k}: {v}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Оценка μ для V2: 1.0480258893092393\n",
"Оценка σ² для V2: 3.933229643500426\n"
]
}
],
"source": [
"\n",
"mu_V1 = np.mean(V2)\n",
"sigma2_V1 = np.var(V2, ddof=1)\n",
"print(f\"Оценка μ для V2: {mu_V1}\")\n",
"print(f\"Оценка σ² для V2: {sigma2_V1}\")"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Оценка a для V3: 5.00216182551\n",
"Оценка b для V3: 7.99016901628\n"
]
}
],
"source": [
"a_V3 = np.min(V3)\n",
"b_V3 = np.max(V3)\n",
"print(f\"Оценка a для V3: {a_V3}\")\n",
"print(f\"Оценка b для V3: {b_V3}\")"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Оценка λ для V4: 10.525\n"
]
}
],
"source": [
"lambda_V3 = np.mean(V4)\n",
"print(f\"Оценка λ для V4: {lambda_V3}\")"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Доверительный интервал для μ (V1): (0.40023447725624794, 1.6958173013622306)\n",
"Доверительный интервал для σ² (V1): (3.198187050029381, 4.947452667095656)\n",
"Доверительный интервал для λ (V3): (10.027178240238207, 11.022821759761793)\n"
]
}
],
"source": [
"n_V1 = len(V1)\n",
"alpha = 0.03 # 1 - γ\n",
"t_crit = stats.t.ppf(1 - alpha/2, n_V1 - 1)\n",
"SE_mu = stats.sem(V1)\n",
"CI_mu_V1 = (mu_V1 - t_crit * SE_mu, mu_V1 + t_crit * SE_mu)\n",
"print(f\"Доверительный интервал для μ (V1): {CI_mu_V1}\")\n",
"chi2_lower = stats.chi2.ppf(alpha/2, n_V1 - 1)\n",
"chi2_upper = stats.chi2.ppf(1 - alpha/2, n_V1 - 1)\n",
"CI_sigma2_V1 = ((n_V1 - 1) * sigma2_V1 / chi2_upper, (n_V1 - 1) * sigma2_V1 / chi2_lower)\n",
"print(f\"Доверительный интервал для σ² (V1): {CI_sigma2_V1}\")\n",
"z_crit = stats.norm.ppf(1 - alpha/2)\n",
"SE_lambda = np.sqrt(lambda_V3 / n_V1)\n",
"CI_lambda_V3 = (lambda_V3 - z_crit * SE_lambda, lambda_V3 + z_crit * SE_lambda)\n",
"print(f\"Доверительный интервал для λ (V3): {CI_lambda_V3}\")\n"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Статистика χ²: 1418738.7096036077\n",
"Критическое значение χ²: 15.509089702796674\n",
"Гипотеза о нормальном распределении для V1 отвергается.\n"
]
}
],
"source": [
"observed_freq, bins = np.histogram(V1, bins='sturges')\n",
"expected_freq = [n_V1 * (stats.norm.cdf(bins[i+1], mu_V1, np.sqrt(sigma2_V1)) - stats.norm.cdf(bins[i], mu_V1, np.sqrt(sigma2_V1))) for i in range(len(bins)-1)]\n",
"\n",
"chi_squared_stat = ((observed_freq - expected_freq) ** 2 / expected_freq).sum()\n",
"df = len(bins) - 1 - 2 # число интервалов - 1 - число параметров\n",
"chi_crit = stats.chi2.ppf(1 - alpha, df)\n",
"\n",
"print(f\"Статистика χ²: {chi_squared_stat}\")\n",
"print(f\"Критическое значение χ²: {chi_crit}\")\n",
"\n",
"if chi_squared_stat < chi_crit:\n",
" print(\"Нет оснований отвергать гипотезу о нормальном распределении для V1.\")\n",
"else:\n",
" print(\"Гипотеза о нормальном распределении для V1 отвергается.\")\n"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Статистика K-S: 0.38088487239010693\n",
"P-значение: 1.354956591550158e-26\n",
"Гипотеза о нормальном распределении для V1 отвергается.\n"
]
}
],
"source": [
"ks_stat, p_value = stats.kstest(V1, 'norm', args=(mu_V1, np.sqrt(sigma2_V1)))\n",
"print(f\"Статистика K-S: {ks_stat}\")\n",
"print(f\"P-значение: {p_value}\")\n",
"\n",
"if p_value > alpha:\n",
" print(\"Нет оснований отвергать гипотезу о нормальном распределении для V1.\")\n",
"else:\n",
" print(\"Гипотеза о нормальном распределении для V1 отвергается.\")\n"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Статистика t-теста: 6.082561360944136\n",
"P-значение: 3.813205394708216e-09\n",
"Гипотеза о равенстве средних X и Y отвергается.\n",
"Статистика F-теста: 4.46626581804271\n",
"Критические значения F: 0.7344284998995741, 1.3616029336235456\n",
"Гипотеза о равенстве дисперсий X и Y отвергается.\n",
"Статистика U-теста: 27125.0\n",
"P-значение: 7.169589050726635e-10\n",
"Гипотеза о равенстве распределений X и Y отвергается.\n"
]
},
{
"ename": "AttributeError",
"evalue": "module 'scipy.stats' has no attribute 'binom_test'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"Cell \u001b[1;32mIn[30], line 42\u001b[0m\n\u001b[0;32m 39\u001b[0m n \u001b[38;5;241m=\u001b[39m n_positive \u001b[38;5;241m+\u001b[39m n_negative\n\u001b[0;32m 41\u001b[0m \u001b[38;5;66;03m# Используем биномиальный тест\u001b[39;00m\n\u001b[1;32m---> 42\u001b[0m p_value \u001b[38;5;241m=\u001b[39m \u001b[43mstats\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbinom_test\u001b[49m(n_positive, n, \u001b[38;5;241m0.5\u001b[39m)\n\u001b[0;32m 43\u001b[0m \u001b[38;5;28mprint\u001b[39m(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mP-значение критерия знаков: \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mp_value\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m\"\u001b[39m)\n\u001b[0;32m 45\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m p_value \u001b[38;5;241m>\u001b[39m alpha:\n",
"\u001b[1;31mAttributeError\u001b[0m: module 'scipy.stats' has no attribute 'binom_test'"
]
}
],
"source": [
"t_stat, p_value = stats.ttest_ind(V1, V2, equal_var=False)\n",
"print(f\"Статистика t-теста: {t_stat}\")\n",
"print(f\"P-значение: {p_value}\")\n",
"\n",
"if p_value > alpha:\n",
" print(\"Нет оснований отвергать гипотезу о равенстве средних X и Y.\")\n",
"else:\n",
" print(\"Гипотеза о равенстве средних X и Y отвергается.\")\n",
"\n",
"f_stat = np.var(V1, ddof=1) / np.var(V2, ddof=1)\n",
"df1 = len(V1) - 1\n",
"df2 = len(V2) - 1\n",
"f_crit_lower = stats.f.ppf(alpha/2, df1, df2)\n",
"f_crit_upper = stats.f.ppf(1 - alpha/2, df1, df2)\n",
"\n",
"print(f\"Статистика F-теста: {f_stat}\")\n",
"print(f\"Критические значения F: {f_crit_lower}, {f_crit_upper}\")\n",
"\n",
"if f_crit_lower < f_stat < f_crit_upper:\n",
" print(\"Нет оснований отвергать гипотезу о равенстве дисперсий X и Y.\")\n",
"else:\n",
" print(\"Гипотеза о равенстве дисперсий X и Y отвергается.\")\n",
"\n",
"# Критерий Манна-Уитни\n",
"u_stat, p_value = stats.mannwhitneyu(V1, V2, alternative='two-sided')\n",
"print(f\"Статистика U-теста: {u_stat}\")\n",
"print(f\"P-значение: {p_value}\")\n",
"\n",
"if p_value > alpha:\n",
" print(\"Нет оснований отвергать гипотезу о равенстве распределений X и Y.\")\n",
"else:\n",
" print(\"Гипотеза о равенстве распределений X и Y отвергается.\")\n",
"\n",
"differences = V1[:len(V2)] - V2[:len(V1)]\n",
"signs = np.sign(differences)\n",
"n_positive = np.sum(signs > 0)\n",
"n_negative = np.sum(signs < 0)\n",
"n = n_positive + n_negative\n",
"\n",
"# Используем биномиальный тест\n",
"p_value = stats.binom_test(n_positive, n, 0.5)\n",
"print(f\"P-значение критерия знаков: {p_value}\")\n",
"\n",
"if p_value > alpha:\n",
" print(\"Нет оснований отвергать гипотезу о равенстве медиан X и Y.\")\n",
"else:\n",
" print(\"Гипотеза о равенстве медиан X и Y отвергается.\")\n",
"\n",
"# Критерий Уилкоксона\n",
"w_stat, p_value = stats.wilcoxon(V1[:len(V2)], V2)\n",
"print(f\"Статистика W-теста: {w_stat}\")\n",
"print(f\"P-значение: {p_value}\")\n",
"\n",
"if p_value > alpha:\n",
" print(\"Нет оснований отвергать гипотезу об однородности выборок X и Y.\")\n",
"else:\n",
" print(\"Гипотеза об однородности выборок X и Y отвергается.\")\n"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.9.13"
}
},
"nbformat": 4,
"nbformat_minor": 2
}