Skip to content

Instantly share code, notes, and snippets.

@pavlozt
Created September 22, 2023 18:42
Show Gist options
  • Save pavlozt/cde4ea1c98bde9dca8791df0b5736178 to your computer and use it in GitHub Desktop.
Save pavlozt/cde4ea1c98bde9dca8791df0b5736178 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "87ed0375",
"metadata": {},
"source": [
"# Допустимость расчета процентилей арифметически."
]
},
{
"cell_type": "markdown",
"id": "e09a3231",
"metadata": {},
"source": [
"## Гипотеза\n",
"\n",
"В некой задаче мониторинга SLA собираются данные о среднем, процентилях, количестве наблюдений.\n",
"Возможно, было бы удобно расчитывать общее SLA как 95-ый процентиль таким же способом, как расчитывается общее среднее из нескольких средних в каждой группе. Интуитивно выглядит разумно\n",
"\n",
"Начнем сразу с самого сильного допущения - используем только нормальное распределение."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "de686beb",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"id": "bba64957",
"metadata": {},
"source": [
"Сгенерируем три распределения. \n",
"\n",
"У двух сервисов среднее время ответа около 1.0, а один из них будет \"сбойный\", где время ответа увеличено до 3.0 ."
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "055059c5",
"metadata": {},
"outputs": [],
"source": [
"std_dev = 0.5\n",
"n_samples = 100000\n",
"\n",
"p1 = np.random.normal(1, std_dev, size=(n_samples))\n",
"p2 = np.random.normal(1, std_dev, size=(n_samples))\n",
"p3 = np.random.normal(3, std_dev, size=(n_samples)) # сбойный сервис, среднее - 3 секунды "
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "f0844ac2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(100000,)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# промежуточный контроль формы массива\n",
"p1.shape"
]
},
{
"cell_type": "markdown",
"id": "8383b660",
"metadata": {},
"source": [
"Склеим все данные в один массив"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "9e524220",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(300000,)"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_of_three=np.concatenate((p1, p2, p3))\n",
"all_of_three.shape"
]
},
{
"cell_type": "markdown",
"id": "2b1e0ddc",
"metadata": {},
"source": [
"Визуализируем распределения гистограммой"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "1e33db8b",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plt.hist(p1, bins=100,alpha=0.5);\n",
"plt.hist(p2, bins=100,alpha=0.5);\n",
"plt.hist(p3, bins=100,alpha=0.5);"
]
},
{
"cell_type": "markdown",
"id": "6a2d06b9",
"metadata": {},
"source": [
"## Операции со средним\n",
"Сначала убедимся, что арифметика со средними вполне рабочая.\n",
"\n",
"Хотя изначально генерировали распределения с заранее известным средним значением, в будущем нам будет проще оперировать произвольными распределениями."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "387e5247",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.0022367082527037 1.0009226486855023 3.0004910344986926\n"
]
}
],
"source": [
"avg1=p1.mean()\n",
"avg2=p2.mean()\n",
"avg3=p3.mean()\n",
"print(avg1,avg2,avg3)"
]
},
{
"cell_type": "markdown",
"id": "8af33d23",
"metadata": {},
"source": [
"Каково среднее от всей группы значений?"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "789cb681",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.6678834638122997"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"all_of_three.mean()"
]
},
{
"cell_type": "markdown",
"id": "2b672c5a",
"metadata": {},
"source": [
"Среднее вычисленное по \"формуле\":"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "827f1a79",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1.6678834638122997"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"(avg1+avg2+avg3)/3"
]
},
{
"cell_type": "markdown",
"id": "bccb54aa",
"metadata": {},
"source": [
"Фориула рабочая. Вычислять среднее можно."
]
},
{
"cell_type": "markdown",
"id": "b0355e79",
"metadata": {},
"source": [
"## Операции с процентилями\n",
"\n",
"Рассчитаем 95-ый процентиль отдельно для каждого сервера"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "ed376457",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1.8300305126852614 1.8234658388246632 3.817641528329571\n"
]
}
],
"source": [
"perc95_p1=np.percentile(p1, 95)\n",
"perc95_p2=np.percentile(p2, 95)\n",
"perc95_p3=np.percentile(p3, 95)\n",
"print(perc95_p1,perc95_p2,perc95_p3)"
]
},
{
"cell_type": "markdown",
"id": "9b2408e7",
"metadata": {},
"source": [
"Честный расчет 95 процентиля по всему массиву:"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e6409fb2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"3.5176817359815047"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"np.percentile(all_of_three,95)"
]
},
{
"cell_type": "markdown",
"id": "382dd8c8",
"metadata": {},
"source": [
"Расчет по \"формуле\":"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "e24855fe",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2.490379293279832\n"
]
}
],
"source": [
"calculated_all_of_p95=(perc95_p1+perc95_p2+perc95_p3)/3\n",
"print(calculated_all_of_p95)"
]
},
{
"cell_type": "markdown",
"id": "df612a7e",
"metadata": {},
"source": [
"Впрочем, показатель все равно довольно сильно вырос и его все еще можно использовать как индикатор по другим названием."
]
},
{
"cell_type": "markdown",
"id": "63b6c445",
"metadata": {},
"source": [
"# Вывод\n",
"Так не работает. \n",
"\n",
"И даже не близко. Нужно исследовать границы допустимости."
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "77a4252f",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"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.3"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment