Вопрос или проблема
Предположим, что существует распределение Бернулли, вероятность которого нам неизвестна и может иногда изменяться. У нас есть выборочные результаты (0/1) с информацией о временных метках, которые распределены неравномерно. Что нам следует сделать, чтобы визуализировать изменение вероятности со временем?
Реальные данные, с которыми я работаю, — это результаты вытягиваний в гача-игре. Ожидается, что вероятность, на которой мы сосредоточены, будет в диапазоне около 0,1%~1%, и события изменения вероятности относительно редки (с интервалом 10k~50k выборок). Также было бы полезно, если бы решение можно было распространить на дискретное распределение с более чем двумя результатами, чтобы я мог визуализировать вероятность всех результатов вытягиваний одновременно, вместо того, чтобы рисовать одну фигуру для каждого результата.
Кумулятивно вероятность получения редкого вытягивания будет увеличиваться с течением времени. Эта вероятность также станет очень близкой к 1 (100%) после достаточного количества вытягиваний. Вероятность 0,1%–1% будет означать, что в среднем требуется 100–1000 вытягиваний, чтобы получить редкое вытягивание.
Учитывая, что изменение вероятности происходит только один раз и после фиксированного числа выборок \(k\), затем вытягивания продолжаются до \(n-k\), где \(n\) — это количество произведенных вытягиваний. Каждый раз, когда получено редкое вытягивание, целевое количество редких вытягиваний увеличивается на 1, что составляет \(m-1\), где m — новая цель. Таким образом, вероятность \(P(X = m)\) может быть записана следующим образом:
\[P(X = m) = \binom n m (1 – p)^{n – m} p ^ m\]
С учетом изменения вероятности уравнение, выведенное из закона полной вероятности, становится следующим:
\[P(X = m) = \sum^m_{i = 0} P(X = i) P(X’ = m – i)\]
\[P(X = i) = \binom k i (1 – p)^{k – i} p ^ i\]
Эта часть обозначает функцию вероятности после изменения вероятности:
\[P(X’ = m – i) = \binom {n – k}{m – i} p’ ^ m – i(1 – p’)^{n – k + i}\]
С уравнениями выше, финальная функция выглядит так:
\[P(X = m) = \sum^m_{i = 0} \binom k i (1 – p)^{k – i} p ^ i \binom {n – k}{m – i} p’ ^ m – i(1 – p’)^{n – k + i}\]
После того как вы напишите вашу функцию в коде, вы можете сделать ее принимающей больше параметров так, чтобы ваша вероятность была различной для разных целей, возможно, в подграфиках, в зависимости от класса, указанного в другой переменной. Одна точка на отметку времени всегда должна использовать \(m – 1\), если результаты выборки равны 0, и \(m\), если результаты выборки равны 1.
Ответ или решение
Визуализация изменяющегося распределения во времени при наличии неравномерно распределенных данных с временными метками представляет собой интересную задачу, особенно в условиях редких событий изменения вероятности, таких как ваши данные об игре типа гача. Давайте подробно рассмотрим, как мы можем подойти к решению этой задачи, чтобы выявить изменения вероятности в вашей выборке.
Теория
Первоначально следует понять суть вашего распределения. Бернуллиевское распределение — это дискретное распределение, используемое для описания экспериментов, в которых имеется два исхода, часто кодируемых как 0 и 1. Например, успешная или неуспешная попытка вытянуть редкий предмет в игре. Вероятность 0 или 1 неизвестна и может меняться со временем. Такая ситуация требует метода, который позволяет идентифицировать изменения в этой вероятности.
Для решения задачи вы можете использовать скользящую оценку вероятности: производится примерно так — применяются окна по времени, в границах которых происходит вычисление вероятности на основе имеющихся результатов. Это особенно полезно, когда данные собраны неравномерно и в разное время.
Также стоит упомянуть Байесовский подход: когда у вас есть априорное распределение вероятности, и вы обновляете его по мере поступления новых данных, получая апостериорное распределение.
Пример
Рассмотрим пример с использованием скользящей вероятности. Представьте себе, что у вас есть данные вытягиваний в игре с временными метками. Вы можете выбрать временной интервал, например, в 1000 вытягиваний, и для каждого окна рассчитывать вероятность успеха на основе вытянутых результатов. Это позволяет увидеть, как меняется вероятность со временем и выявить моменты изменений.
Применение
При визуализации вы можете использовать такие инструменты, как Python, с его библиотеками Pandas и Matplotlib или Plotly для построения интерактивных графиков. Например, Pandas поможет агрегировать данные по временным интервалам, а Matplotlib построить график изменения вероятности.
Для реализации скользящей вероятности используйте метод агрегирования данных с шагом по времени или количеству событий, например:
import pandas as pd
import matplotlib.pyplot as plt
# Представьте, что на вход подается DataFrame со столбцами 'timestamp' и 'result'
# Интервал скользящего окна
window_size = 1000
# Рассчитываем скользящую вероятность
df['rolling_prob'] = df['result'].rolling(window=window_size).mean()
# Построение графика
plt.figure(figsize=(14, 7))
plt.plot(df['timestamp'], df['rolling_prob'])
plt.title('Изменение вероятности успеха во времени')
plt.xlabel('Время')
plt.ylabel('Вероятность')
plt.show()
Дополнительные аспекты
Если у вас есть больше двух результатов (например, несколько редких предметов), вы можете создать несколько скользящих окон для каждого возможного исхода и визуализировать изменения вероятностей для каждого из них на одном графике, используя разные цвета или типы линий.
Разработка этого решения потребует учёта изменений вероятности, и вы можете использовать заранее определенные точки или события для настройки вашего окна в соответствии с этими изменениями. Это обеспечит более точное отслеживание динамики вероятности.
В заключение, важный аспект, который следует учитывать, это корректная интерпретация данных: всегда помнить, что небольшие флуктуации в вероятности могут быть вызваны случайной изменчивостью, а не реальным изменением вероятности события. Поэтому следует проводить тщательный анализ и делать выводы, основываясь на статистически значимых изменениях.