Процессы с независимыми приращениями. Пуассоновский процесс
В этой теме мы изучим один из важнейших классов случайных процессов — процессы с независимыми приращениями .
Основным примером будет пуассоновский процесс , описывающий количество событий, произошедших к моменту времени \(t\) .
Основные вопросы:
что означает независимость приращений процесса;
при каких условиях существует процесс с заданными распределениями приращений;
как определяется пуассоновский процесс;
как явно построить пуассоновский процесс;
как устроены его траектории;
какое распределение имеют моменты скачков и промежутки между ними.
Процессы с независимыми приращениями
Случайный процесс \((X_t)_{t\geq 0}\) называется процессом с независимыми приращениями , если для любого \(n\in\mathbb N\) и любых моментов времени
\[
0\leq t_1<t_2<\dots<t_n
\]
случайные величины
\[
X_{t_1},\quad
X_{t_2}-X_{t_1},\quad
\dots,\quad
X_{t_n}-X_{t_{n-1}}
\]
независимы в совокупности.
Если множество моментов времени дискретно,
\[
T=\mathbb N,
\]
то процессы с независимыми приращениями представляют собой случайные блуждания .
Действительно, если положить
\[
\xi_k=X_k-X_{k-1},
\]
то
\[
X_n=X_0+\sum_{k=1}^n \xi_k,
\]
где приращения \(\xi_1,\xi_2,\dots\) независимы.
Критерий существования процесса с независимыми приращениями
Предположим, что для каждой пары
\[
0\leq s<t
\]
задано распределение вероятностей \(Q_{s,t}\) на \(\mathbb R\) , которое мы хотим получить в качестве распределения приращения
\[
X_t-X_s.
\]
Обозначим через
\[
\varphi_{s,t}(\tau)
\]
характеристическую функцию распределения \(Q_{s,t}\) .
Процесс \((X_t)_{t\geq0}\) с независимыми приращениями такой, что
\[
X_t-X_s\overset{d}{=}Q_{s,t},
\qquad 0\leq s<t,
\]
существует тогда и только тогда, когда для любых
\[
0\leq s<u<t
\]
выполнено
\[
\boxed{
\varphi_{s,t}(\tau)
=
\varphi_{s,u}(\tau)\varphi_{u,t}(\tau)
}.
\]
При этом распределение начального значения \(X_0\) может быть выбрано произвольным.
Заметим, что
\[
X_t-X_s
=
(X_u-X_s)+(X_t-X_u).
\]
Если процесс имеет независимые приращения, то случайные величины
\[
X_u-X_s
\qquad\text{и}\qquad
X_t-X_u
\]
независимы.
Для независимых случайных величин характеристическая функция суммы равна произведению характеристических функций. Поэтому
\[
\begin{aligned}
\varphi_{s,t}(\tau)
&=
\mathbb E
\exp\left(i\tau(X_t-X_s)\right)
\\
&=
\mathbb E
\exp\left(i\tau(X_u-X_s)\right)
\,
\mathbb E
\exp\left(i\tau(X_t-X_u)\right)
\\
&=
\varphi_{s,u}(\tau)\varphi_{u,t}(\tau).
\end{aligned}
\]
Таким образом, это условие выражает согласованность распределений приращений на вложенных временных интервалах.
Пуассоновский процесс
Пуассоновский процесс используется для моделирования числа событий, произошедших к моменту времени \(t\) .
Параметр
\[
\lambda>0
\]
называется интенсивностью процесса .
Случайный процесс \((N_t)_{t\geq0}\) называется пуассоновским процессом интенсивности \(\lambda>0\) , если:
начальное значение равно нулю:
\[
N_0=0
\qquad \text{п.н.};
\]
процесс имеет независимые приращения;
для любых \(0\leq s<t\)
\[
\boxed{
N_t-N_s\sim\operatorname{Pois}\bigl(\lambda(t-s)\bigr).
}
\]
В частности,
\[
N_t\sim\operatorname{Pois}(\lambda t),
\]
поэтому
\[
\mathbb E N_t=\lambda t,
\qquad
\operatorname{Var}(N_t)=\lambda t.
\]
Так как
\[
N_t-N_s\sim\operatorname{Pois}(\lambda(t-s)),
\]
то
\[
\mathbb E(N_t-N_s)=\lambda(t-s).
\]
Следовательно, \(\lambda\) можно интерпретировать как среднее число событий в единицу времени .
Например, на промежутке длины \(h\)
\[
\mathbb E(N_{t+h}-N_t)=\lambda h.
\]
При этом распределение числа событий зависит только от длины промежутка \(h\) , а не от его положения на временной оси.
Симуляция: как выглядит пуассоновский процесс?
Сначала визуализируем одну траекторию. Скачки происходят в случайные моменты времени, а между скачками процесс остаётся постоянным.
Show Python code
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import poisson, gamma, expon
rng = np.random.default_rng(42 )
def poisson_event_times(lam, T, rng):
times = []
t = 0.0
while True :
t += rng.exponential(scale= 1 / lam)
if t > T:
break
times.append(t)
return np.array(times)
def plot_poisson_path(lam= 1.5 , T= 10 , seed= 1 ):
local_rng = np.random.default_rng(seed)
event_times = poisson_event_times(lam, T, local_rng)
x = np.r_[0 , event_times, T]
y = np.r_[0 , np.arange(1 , len (event_times) + 1 ), len (event_times)]
plt.figure(figsize= (10 , 5 ))
plt.step(x, y, where= "post" , linewidth= 2 )
plt.scatter(event_times, np.arange(1 , len (event_times) + 1 ), zorder= 3 )
plt.xlabel("Время $t$" )
plt.ylabel("$N_t$" )
plt.title(fr"Траектория пуассоновского процесса, $ \ lambda= { lam} $ " )
plt.grid(alpha= 0.25 )
plt.show()
print (f"Число событий к моменту T= { T} : { len (event_times)} " )
print ("Первые моменты скачков:" , np.round (event_times[:8 ], 3 ))
plot_poisson_path(lam= 1.5 , T= 10 , seed= 7 )
Число событий к моменту T=10: 14
Первые моменты скачков: [0.472 1.155 1.534 2.131 2.269 4.524 4.531 6.404]
Влияние интенсивности \(\lambda\)
Чем больше \(\lambda\) , тем меньше среднее время ожидания между событиями и тем быстрее растёт процесс.
Show Python code
T = 8
lambdas = [0.5 , 1.5 , 4.0 ]
plt.figure(figsize= (10 , 5 ))
for j, lam in enumerate (lambdas):
local_rng = np.random.default_rng(100 + j)
event_times = poisson_event_times(lam, T, local_rng)
x = np.r_[0 , event_times, T]
y = np.r_[0 , np.arange(1 , len (event_times) + 1 ), len (event_times)]
plt.step(x, y, where= "post" , linewidth= 2 , label= fr" $ \ lambda= { lam} $ " )
plt.xlabel("Время $t$" )
plt.ylabel("$N_t$" )
plt.title("Траектории при разных значениях интенсивности" )
plt.legend()
plt.grid(alpha= 0.25 )
plt.show()
Существование пуассоновского процесса
Пуассоновский процесс интенсивности \(\lambda>0\) существует.
Рассмотрим распределение
\[
Q_{s,t}=\operatorname{Pois}\bigl(\lambda(t-s)\bigr).
\]
Характеристическая функция пуассоновского распределения имеет вид
\[
\varphi_{s,t}(\tau)
=
\exp\left\{
\lambda(t-s)(e^{i\tau}-1)
\right\}.
\]
Для \(s<u<t\) имеем
\[
\begin{aligned}
\varphi_{s,u}(\tau)\varphi_{u,t}(\tau)
&=
e^{\lambda(u-s)(e^{i\tau}-1)}
e^{\lambda(t-u)(e^{i\tau}-1)}
\\
&=
e^{\lambda(t-s)(e^{i\tau}-1)}
\\
&=
\varphi_{s,t}(\tau).
\end{aligned}
\]
Следовательно, выполнен критерий существования процесса с независимыми приращениями.
Таким образом, пуассоновский процесс существует.
Траектории пуассоновского процесса
Из определения сразу следуют два важных свойства.
Целочисленность
Поскольку
\[
N_t\sim\operatorname{Pois}(\lambda t),
\]
то для каждого фиксированного \(t\)
\[
N_t\in\mathbb Z_+.
\]
То есть пуассоновский процесс является счётным процессом .
Монотонность
Для \(s<t\)
\[
N_t-N_s\sim\operatorname{Pois}(\lambda(t-s)),
\]
поэтому
\[
N_t-N_s\geq0.
\]
Следовательно, траектории пуассоновского процесса являются неубывающими .
Возникают два естественных вопроса:
Каков размер скачков процесса?
Как распределены моменты этих скачков?
Для ответа на них построим пуассоновский процесс явно.
Симуляция: распределение \(N_t\)
Для фиксированного момента \(t\) должно выполняться
\[
N_t\sim\operatorname{Pois}(\lambda t).
\]
Проверим это методом Монте-Карло и сравним эмпирические частоты с точной пуассоновской вероятностью.
Явная конструкция пуассоновского процесса
Пусть
\[
\xi_1,\xi_2,\dots
\]
— независимые одинаково распределённые случайные величины такие, что
\[
\xi_i\sim\operatorname{Exp}(\lambda).
\]
Определим
\[
S_0=0,
\qquad
S_n=\xi_1+\dots+\xi_n.
\]
Величину \(S_n\) можно интерпретировать как момент наступления \(n\) -го события .
Теперь положим
\[
\boxed{
X_t=\sup\{n:S_n\leq t\}.
}
\]
То есть \(X_t\) — число событий, успевших произойти к моменту времени \(t\) .
Пусть
\[
\xi_1,\xi_2,\dots
\overset{\text{i.i.d.}}{\sim}
\operatorname{Exp}(\lambda),
\]
и
\[
S_n=\xi_1+\dots+\xi_n.
\]
Тогда процесс
\[
\boxed{
X_t=\sup\{n:S_n\leq t\}
}
\]
является пуассоновским процессом интенсивности \(\lambda\) .
Таким образом, пуассоновский процесс можно построить следующим образом:
генерируем независимые экспоненциальные времена ожидания \(\xi_1,\xi_2,\dots\) ;
определяем моменты событий
\[
S_n=\sum_{k=1}^n\xi_k;
\]
считаем число событий, произошедших до момента \(t\) :
\[
X_t=\#\{n:S_n\leq t\}.
\]
Симуляция: экспоненциальные времена ожидания \(\longrightarrow\) пуассоновский процесс
Эта визуализация буквально реализует явную конструкцию:
\[
\xi_i\sim\operatorname{Exp}(\lambda),\qquad
S_n=\xi_1+\dots+\xi_n,\qquad
N_t=\#\{n:S_n\le t\}.
\]
Сначала генерируются времена ожидания \(\xi_i\) , затем накапливаются моменты событий \(S_n\) , после чего строится ступенчатая траектория \(N_t\) .
Show Python code
lam = 1.2
T = 10
local_rng = np.random.default_rng(12 )
waiting_times = []
event_times = []
t_now = 0.0
while True :
xi = local_rng.exponential(scale= 1 / lam)
if t_now + xi > T:
break
waiting_times.append(xi)
t_now += xi
event_times.append(t_now)
waiting_times = np.array(waiting_times)
event_times = np.array(event_times)
print ("Первые времена ожидания ξᵢ:" )
print (np.round (waiting_times[:10 ], 3 ))
print (" \n Соответствующие моменты событий Sₙ:" )
print (np.round (event_times[:10 ], 3 ))
x = np.r_[0 , event_times, T]
y = np.r_[0 , np.arange(1 , len (event_times) + 1 ), len (event_times)]
plt.figure(figsize= (10 , 5 ))
plt.step(x, y, where= "post" , linewidth= 2 )
plt.scatter(event_times, np.arange(1 , len (event_times) + 1 ), s= 45 , zorder= 3 )
for s in event_times:
plt.axvline(s, linewidth= 0.7 , alpha= 0.15 )
plt.xlabel("Время $t$" )
plt.ylabel("$N_t$" )
plt.title("Явная конструкция через экспоненциальные времена ожидания" )
plt.grid(alpha= 0.2 )
plt.show()
Первые времена ожидания ξᵢ:
[0.82 2.544 0.056 0.171 0.581 0.833 2.646 0.416]
Соответствующие моменты событий Sₙ:
[0.82 3.364 3.42 3.591 4.172 5.004 7.65 8.066]
Совместное распределение моментов событий
Для доказательства рассмотрим случайный вектор
\[
(S_1,\dots,S_m).
\]
Поскольку
\[
S_1=\xi_1,\qquad
S_2-S_1=\xi_2,\qquad
\dots,\qquad
S_m-S_{m-1}=\xi_m,
\]
получаем
\[
\begin{aligned}
p_{S_1,\dots,S_m}(x_1,\dots,x_m)
&=
p_{\xi_1,\dots,\xi_m}
(x_1,x_2-x_1,\dots,x_m-x_{m-1})
\\
&=
\prod_{k=1}^m
\lambda e^{-\lambda(x_k-x_{k-1})}
\mathbf 1_{\{x_k>x_{k-1}\}},
\end{aligned}
\]
где \(x_0=0\) .
После сокращения экспонент получаем
\[
\boxed{
p_{S_1,\dots,S_m}(x_1,\dots,x_m)
=
\lambda^m e^{-\lambda x_m}
\mathbf 1_{\{0<x_1<\dots<x_m\}}.
}
\]
Возьмём
\[
0=t_0<t_1<\dots<t_n
\]
и целые числа
\[
0=k_0\leq k_1\leq\dots\leq k_n.
\]
Событие
\[
X_{t_i}-X_{t_{i-1}}=k_i-k_{i-1}
\]
означает, что на промежутке
\[
(t_{i-1},t_i]
\]
произошло ровно \(k_i-k_{i-1}\) событий.
Используя совместную плотность моментов событий \(S_1,S_2,\dots\) , можно получить
\[
\begin{aligned}
&\mathbb P\left(
X_{t_1}=k_1,\,
X_{t_2}-X_{t_1}=k_2-k_1,\,
\dots,\,
X_{t_n}-X_{t_{n-1}}=k_n-k_{n-1}
\right)
\\[1ex]
&\qquad =
\prod_{i=1}^n
\frac{
\left(\lambda(t_i-t_{i-1})\right)^{k_i-k_{i-1}}
}{
(k_i-k_{i-1})!
}
e^{-\lambda(t_i-t_{i-1})}.
\end{aligned}
\]
Правая часть является произведением вероятностей пуассоновских распределений.
Следовательно,
\[
X_{t_i}-X_{t_{i-1}}
\sim
\operatorname{Pois}\left(\lambda(t_i-t_{i-1})\right),
\]
и эти приращения независимы.
Значит, \((X_t)_{t\geq0}\) является пуассоновским процессом интенсивности \(\lambda\) .
В доказательстве возникает интеграл по области
\[
t_{i-1}
<
x_1<x_2<\dots<x_m
\leq t_i.
\]
Куб
\[
(t_{i-1},t_i]^m
\]
имеет объём
\[
(t_i-t_{i-1})^m.
\]
Все \(m!\) возможных порядков координат имеют одинаковый объём.
Поэтому область
\[
t_{i-1}<x_1<\dots<x_m\leq t_i
\]
занимает \(\frac1{m!}\) объёма куба:
\[
\boxed{
\int_{t_{i-1}<x_1<\dots<x_m\leq t_i}
dx_1\cdots dx_m
=
\frac{(t_i-t_{i-1})^m}{m!}.
}
\]
Именно отсюда в вычислениях возникает фактор \(m!\) в знаменателе пуассоновской вероятности.
Размер скачков пуассоновского процесса
Из явной конструкции видно, что процесс увеличивается в моменты
\[
S_1,S_2,S_3,\dots
\]
Поскольку
\[
S_{n+1}-S_n=\xi_{n+1},
\]
где
\[
\xi_{n+1}\sim\operatorname{Exp}(\lambda),
\]
и экспоненциальное распределение абсолютно непрерывно, имеем
\[
\mathbb P(\xi_{n+1}=0)=0.
\]
Следовательно,
\[
\mathbb P(S_n=S_{n+1})=0.
\]
Таким образом, с вероятностью \(1\) два события не происходят одновременно.
С вероятностью \(1\) все скачки пуассоновского процесса имеют размер ровно
\[
\boxed{1}.
\]
Моменты скачков
Обозначим через \(Y_n\) момент \(n\) -го скачка пуассоновского процесса.
Из явной конструкции
\[
Y_n=S_n=\xi_1+\dots+\xi_n,
\]
где
\[
\xi_i\overset{\text{i.i.d.}}{\sim}\operatorname{Exp}(\lambda).
\]
Сумма \(n\) независимых экспоненциальных случайных величин имеет гамма-распределение.
\[
\boxed{
Y_n\sim\Gamma(\lambda,n).
}
\]
Его плотность равна
\[
\boxed{
f_{Y_n}(x)
=
\frac{\lambda^n x^{n-1}}{(n-1)!}
e^{-\lambda x}
\mathbf 1_{\{x>0\}}.
}
\]
Симуляция: распределение момента \(n\) -го скачка
По теории
\[
Y_n=\xi_1+\dots+\xi_n\sim\Gamma(\lambda,n).
\]
Сравним эмпирическое распределение \(Y_n\) с теоретической гамма-плотностью.
Show Python code
lam = 1.4
n = 6
n_sim = 50_000
y_n = rng.gamma(shape= n, scale= 1 / lam, size= n_sim)
x = np.linspace(0 , np.percentile(y_n, 99.7 ), 500 )
density = gamma.pdf(x, a= n, scale= 1 / lam)
plt.figure(figsize= (10 , 5 ))
plt.hist(y_n, bins= 70 , density= True , alpha= 0.6 , label= "Симуляция" )
plt.plot(x, density, linewidth= 2.2 , label= fr" $\G amma ( \ lambda= { lam} , n= { n} ) $ " )
plt.xlabel("$y$" )
plt.ylabel("Плотность" )
plt.title(fr"Распределение момента { n} -го скачка" )
plt.legend()
plt.grid(alpha= 0.25 )
plt.show()
print (f"Теоретическое E[Y_n] = n/λ = { n/ lam:.4f} " )
print (f"Эмпирическое среднее = { y_n. mean():.4f} " )
print (f"Теоретическая Var(Y_n) = n/λ² = { n/ lam** 2 :.4f} " )
print (f"Эмпирическая дисперсия = { y_n. var():.4f} " )
Теоретическое E[Y_n] = n/λ = 4.2857
Эмпирическое среднее = 4.2868
Теоретическая Var(Y_n) = n/λ² = 3.0612
Эмпирическая дисперсия = 3.0521
Времена между последовательными событиями
Рассмотрим разности
\[
Y_n-Y_{n-1}.
\]
Из явной конструкции
\[
Y_n-Y_{n-1}
=
S_n-S_{n-1}
=
\xi_n.
\]
Следовательно,
\[
\boxed{
Y_n-Y_{n-1}
\sim\operatorname{Exp}(\lambda).
}
\]
Кроме того, случайные величины
\[
Y_1,\quad
Y_2-Y_1,\quad
Y_3-Y_2,\quad\dots
\]
независимы.
Таким образом, времена ожидания между последовательными событиями пуассоновского процесса независимы и имеют экспоненциальное распределение с параметром \(\lambda\) .
Симуляция: экспоненциальные промежутки между событиями
Проверим распределение времени между последовательными скачками:
\[
Y_n-Y_{n-1}\sim\operatorname{Exp}(\lambda).
\]
Экспоненциальное распределение особенно важно благодаря свойству отсутствия памяти:
\[
\mathbb P(\xi>s+t\mid \xi>s)=\mathbb P(\xi>t).
\]
Show Python code
lam = 1.8
n_sim = 60_000
waits = rng.exponential(scale= 1 / lam, size= n_sim)
x = np.linspace(0 , np.percentile(waits, 99.5 ), 500 )
plt.figure(figsize= (10 , 5 ))
plt.hist(waits, bins= 80 , density= True , alpha= 0.6 , label= "Симуляция" )
plt.plot(x, expon.pdf(x, scale= 1 / lam), linewidth= 2.2 , label= r" $\m athrm{Exp} ( \ lambda ) $ " )
plt.xlabel("Время ожидания" )
plt.ylabel("Плотность" )
plt.title(fr"Промежутки между событиями, $ \ lambda= { lam} $ " )
plt.legend()
plt.grid(alpha= 0.25 )
plt.show()
s = 0.7
t = 0.9
lhs = np.mean(waits > s + t) / np.mean(waits > s)
rhs = np.mean(waits > t)
print ("Проверка свойства отсутствия памяти:" )
print (f"P(ξ > s+t | ξ > s) ≈ { lhs:.4f} " )
print (f"P(ξ > t) ≈ { rhs:.4f} " )
print (f"Точное значение = { np. exp(- lam* t):.4f} " )
Проверка свойства отсутствия памяти:
P(ξ > s+t | ξ > s) ≈ 0.1992
P(ξ > t) ≈ 0.1968
Точное значение = 0.1979
Две точки зрения на пуассоновский процесс
Пуассоновский процесс можно описывать двумя эквивалентными способами.
1. Считать число событий
Для любого \(0\leq s<t\)
\[
\boxed{
N_t-N_s
\sim
\operatorname{Pois}(\lambda(t-s)).
}
\]
То есть число событий на промежутке длины \(h\) имеет распределение
\[
\operatorname{Pois}(\lambda h).
\]
2. Рассматривать времена ожидания
Пусть
\[
Y_1<Y_2<\dots
\]
— моменты событий. Тогда
\[
\boxed{
Y_n-Y_{n-1}
\overset{\text{i.i.d.}}{\sim}
\operatorname{Exp}(\lambda).
}
\]
Таким образом,
\[
\boxed{
\text{пуассоновское число событий}
\quad\Longleftrightarrow\quad
\text{экспоненциальные времена ожидания}.
}
\]
Симуляция: две эквивалентные точки зрения на одной траектории
В одной и той же реализации можно одновременно смотреть на процесс двумя способами:
по горизонтали — на случайные времена ожидания между событиями;
по вертикали — на число событий, накопленное к моменту \(t\) .
Show Python code
lam = 1.3
T = 12
local_rng = np.random.default_rng(2026 )
event_times = poisson_event_times(lam, T, local_rng)
x = np.r_[0 , event_times, T]
y = np.r_[0 , np.arange(1 , len (event_times) + 1 ), len (event_times)]
plt.figure(figsize= (11 , 5 ))
plt.step(x, y, where= "post" , linewidth= 2 , label= "$N_t$" )
plt.scatter(event_times, np.arange(1 , len (event_times) + 1 ), s= 40 , zorder= 3 )
previous = 0.0
for i, current in enumerate (event_times[:8 ], start= 1 ):
mid = (previous + current) / 2
plt.annotate(
fr" $ \ xi_ { i} $ " ,
xy= (mid, - 0.35 ),
ha= "center" ,
va= "center" ,
fontsize= 9 ,
annotation_clip= False ,
)
plt.plot([previous, current], [- 0.15 , - 0.15 ], linewidth= 2 )
previous = current
plt.ylim(bottom=- 0.7 )
plt.xlabel("Время $t$" )
plt.ylabel("$N_t$" )
plt.title("События, времена ожидания и счётный процесс" )
plt.grid(alpha= 0.2 )
plt.show()
Траектория пуассоновского процесса ступенчатая и неубывающая.
Каждый скачок имеет размер \(1\) .
Приращение на интервале длины \(h\) имеет распределение \(\operatorname{Pois}(\lambda h)\) .
Приращения на непересекающихся интервалах независимы.
Времена между скачками имеют распределение \(\operatorname{Exp}(\lambda)\) .
Момент \(n\) -го скачка является суммой \(n\) экспоненциальных величин и имеет гамма-распределение.
Основные результаты
В этой теме мы получили следующие результаты.
Процесс с независимыми приращениями удовлетворяет условию независимости изменений процесса на непересекающихся временных промежутках.
Для существования процесса с заданными распределениями приращений необходимо и достаточно условие согласованности
\[
\varphi_{s,t}(\tau)
=
\varphi_{s,u}(\tau)\varphi_{u,t}(\tau).
\]
Пуассоновский процесс интенсивности \(\lambda\) характеризуется свойствами
\[
N_0=0,
\]
независимостью приращений и
\[
N_t-N_s\sim\operatorname{Pois}(\lambda(t-s)).
\]
Пуассоновский процесс можно явно построить с помощью независимых случайных величин
\[
\xi_i\sim\operatorname{Exp}(\lambda)
\]
и моментов событий
\[
S_n=\xi_1+\dots+\xi_n.
\]
Все скачки пуассоновского процесса с вероятностью \(1\) имеют размер \(1\) .
Момент \(n\) -го скачка имеет распределение
\[
Y_n\sim\Gamma(\lambda,n).
\]
Времена между последовательными скачками независимы и
\[
Y_n-Y_{n-1}
\sim\operatorname{Exp}(\lambda).
\]
Где возникает пуассоновский процесс?
Пуассоновский процесс — одна из базовых моделей для случайных событий, происходящих во времени .
Основная идея очень проста:
если события происходят независимо друг от друга с некоторой приблизительно постоянной интенсивностью \(\lambda\) , то число событий за время \(t\) часто можно моделировать с помощью пуассоновского процесса.
В такой модели
\[
N_t=\text{число событий, произошедших к моменту }t,
\]
и
\[
N_t-N_s\sim\operatorname{Pois}(\lambda(t-s)).
\]
При этом время между последовательными событиями имеет распределение
\[
Y_n-Y_{n-1}\sim\operatorname{Exp}(\lambda).
\]
Эта простая конструкция возникает во множестве прикладных задач:
машинное обучение;
анализ данных;
финансы;
физика;
биология;
телекоммуникации;
теория массового обслуживания;
анализ надёжности.
Во многих задачах машинного обучения наблюдения имеют форму последовательности событий
\[
T_1<T_2<T_3<\dots
\]
вместо обычной таблицы независимых наблюдений.
Например:
пользователь нажал на рекламу;
пользователь совершил покупку;
пришёл новый запрос к серверу;
произошло мошенническое действие;
пользователь открыл приложение.
Можно определить
\[
N_t
=
\text{число событий, произошедших до момента }t.
\]
Простейшая модель предполагает
\[
(N_t)_{t\geq0}
\sim
\text{Poisson Process}(\lambda).
\]
Тогда
\[
N_t-N_s
\sim
\operatorname{Pois}(\lambda(t-s)).
\]
Параметр \(\lambda\) характеризует частоту появления событий .
Обучение модели: оценивание интенсивности
Предположим, что за промежуток времени \([0,T]\) мы наблюдали \(n\) событий.
Для пуассоновского процесса
\[
N_T\sim\operatorname{Pois}(\lambda T).
\]
Следовательно,
\[
\mathbb P(N_T=n)
=
e^{-\lambda T}
\frac{(\lambda T)^n}{n!}.
\]
Функция правдоподобия имеет вид
\[
L(\lambda)
=
e^{-\lambda T}
\frac{(\lambda T)^n}{n!}.
\]
Логарифмическое правдоподобие:
\[
\ell(\lambda)
=
-\lambda T+n\log\lambda+n\log T-\log(n!).
\]
Дифференцируя,
\[
\ell'(\lambda)
=
-T+\frac{n}{\lambda}.
\]
Поэтому
\[
\boxed{
\widehat{\lambda}_{MLE}
=
\frac{N_T}{T}.
}
\]
То есть естественная оценка интенсивности — просто число наблюдаемых событий в единицу времени .
Обычный пуассоновский процесс предполагает постоянную интенсивность
\[
\lambda(t)=\lambda.
\]
Но в реальных данных частота событий обычно зависит от времени и признаков.
Например, вероятность покупки может зависеть от
\[
x=
(\text{время суток},
\text{день недели},
\text{возраст пользователя},
\text{цена},
\text{реклама},
\dots).
\]
Поэтому вместо постоянной интенсивности рассматривают
\[
\lambda(t,x).
\]
Например,
\[
\lambda(t,x)
=
\exp\left(\beta_0+\beta_1x_1+\dots+\beta_px_p\right).
\]
В более сложных моделях \(\lambda(t,x)\) может задаваться нейронной сетью.
Таким образом, пуассоновский процесс является отправной точкой для изучения point processes и современных моделей событийных данных.
Рассмотрим веб-сервис.
Пусть
\[
N_t
=
\text{число запросов к серверу до момента }t.
\]
Если запросы приходят приблизительно независимо с интенсивностью
\[
\lambda=120
\quad\text{запросов в минуту},
\]
то за интервал длины \(30\) секунд модель даёт
\[
N_{t+0.5}-N_t
\sim
\operatorname{Pois}(60).
\]
Следовательно,
\[
\mathbb E[N_{t+0.5}-N_t]=60.
\]
Такая модель позволяет оценивать:
ожидаемую нагрузку;
вероятность необычно большого числа запросов;
необходимую пропускную способность;
вероятность отсутствия запросов;
время до следующего запроса.
Обнаружение аномалий
Предположим, что обычно сервер получает в среднем \(\lambda=5\) запросов в секунду.
Тогда число запросов за одну секунду можно моделировать как
\[
X\sim\operatorname{Pois}(5).
\]
Если внезапно наблюдается
\[
X=20,
\]
можно вычислить
\[
\mathbb P(X\geq20).
\]
Если эта вероятность очень мала, наблюдение можно считать аномальным .
Таким образом, пуассоновская модель даёт простой статистический baseline для задач:
обнаружения аномального сетевого трафика;
fraud detection;
мониторинга серверов;
обнаружения необычной активности пользователей.
Финансовые рынки естественным образом генерируют событийные данные.
Например, можно определить
\[
N_t
=
\text{число сделок с активом до момента }t.
\]
В простейшей модели предполагается, что сделки происходят согласно пуассоновскому процессу:
\[
N_t-N_s
\sim
\operatorname{Pois}(\lambda(t-s)).
\]
Тогда время между последовательными сделками
\[
\tau_n=Y_n-Y_{n-1}
\]
удовлетворяет
\[
\tau_n\sim\operatorname{Exp}(\lambda).
\]
Параметр \(\lambda\) в этом случае можно интерпретировать как интенсивность торгов .
Compound Poisson Process
Часто нас интересует не только количество событий , но и их случайный размер.
Пусть
\[
N_t
\]
— число событий до момента \(t\) , а
\[
Z_1,Z_2,\dots
\]
— независимые случайные величины, описывающие размер каждого события.
Тогда процесс
\[
\boxed{
X_t=\sum_{k=1}^{N_t}Z_k
}
\]
называется составным пуассоновским процессом (Compound Poisson Process).
Например, в финансах \(Z_k\) может описывать изменение цены в момент \(k\) -го скачка.
Тогда цена может моделироваться как
\[
S_t=S_0+\sum_{k=1}^{N_t}Z_k.
\]
В отличие от непрерывных моделей типа броуновского движения, такая модель позволяет цене совершать резкие случайные скачки .
Одно из важнейших применений пуассоновского процесса возникает в страховании.
Пусть
\[
N_t
=
\text{число страховых случаев до момента }t,
\]
а
\[
Z_1,Z_2,\dots
\]
— размеры страховых выплат.
Тогда суммарный размер выплат к моменту \(t\) равен
\[
C_t
=
\sum_{k=1}^{N_t}Z_k.
\]
Если \(N_t\) — пуассоновский процесс, то \(C_t\) является составным пуассоновским процессом.
Если компания получает страховые премии с постоянной скоростью \(c\) , её капитал можно моделировать как
\[
R_t
=
R_0+ct-\sum_{k=1}^{N_t}Z_k.
\]
Это одна из базовых моделей теории риска .
Пуассоновский процесс естественно возникает при подсчёте редких физических событий.
Например,
\[
N_t
=
\text{число частиц, зарегистрированных детектором до момента }t.
\]
Если частицы регистрируются независимо с приблизительно постоянной интенсивностью \(\lambda\) , то
\[
N_t\sim\operatorname{Pois}(\lambda t).
\]
Следовательно,
\[
\mathbb E N_t
=
\operatorname{Var}(N_t)
=
\lambda t.
\]
Именно поэтому в экспериментах, основанных на подсчёте событий, часто возникает характерное соотношение
\[
\boxed{
\text{дисперсия}\approx\text{среднее}.
}
\]
А стандартное отклонение числа событий имеет порядок
\[
\sqrt{\lambda t}.
\]
Пуассоновские модели также возникают в биологии.
Например, можно рассматривать
\[
N_t
=
\text{число мутаций, возникших к моменту }t.
\]
В простейшей модели предполагается, что мутации:
возникают независимо;
происходят с постоянной интенсивностью \(\mu\) .
Тогда
\[
N_t\sim\operatorname{Pois}(\mu t).
\]
В частности,
\[
\mathbb P(N_t=0)=e^{-\mu t},
\]
то есть вероятность того, что за время \(t\) не произошло ни одной мутации, экспоненциально убывает с \(t\) .
Рассмотрим очередь:
клиенты приходят в банк;
запросы поступают на сервер;
машины приезжают на заправку;
звонки поступают в call-центр.
Пусть
\[
N_t
=
\text{число клиентов, пришедших к моменту }t.
\]
Одна из самых простых моделей предполагает
\[
(N_t)_{t\geq0}
\sim
\operatorname{PoissonProcess}(\lambda).
\]
Тогда времена между последовательными клиентами независимы и
\[
Y_n-Y_{n-1}\sim\operatorname{Exp}(\lambda).
\]
Если дополнительно время обслуживания имеет экспоненциальное распределение с параметром \(\mu\) , возникает классическая модель очереди
\[
\boxed{M/M/1}.
\]
Эта модель связывает пуассоновские процессы с анализом производительности компьютерных систем, сетей и сервисов.
Когда пуассоновский процесс — плохая модель?
Пуассоновский процесс является очень полезной baseline-моделью , но его предположения достаточно сильны.
Классическая модель предполагает:
независимость событий;
постоянную интенсивность \(\lambda\) ;
отсутствие одновременных событий;
экспоненциальные времена ожидания.
В реальных данных эти предположения часто нарушаются.
Например:
пользователи чаще совершают покупки вечером, чем ночью;
интенсивность торгов меняется в течение торгового дня;
землетрясение может увеличивать вероятность последующих толчков;
активность нейрона зависит от предыдущих импульсов;
эпидемические события могут усиливать вероятность новых событий.
Поэтому пуассоновский процесс следует рассматривать как базовую модель , от которой переходят к более сложным моделям случайных событий.
Пуассоновский процесс — это начало большой теории случайных точечных процессов .
Если отказаться от некоторых его предположений, возникают более сложные модели:
\[
\text{Poisson process}
\longrightarrow
\text{non-homogeneous Poisson process}
\longrightarrow
\text{Cox process}
\longrightarrow
\text{Hawkes process}.
\]
Например:
Non-homogeneous Poisson process: интенсивность зависит от времени,
\[
\lambda=\lambda(t);
\]
Cox process: сама интенсивность \(\lambda(t)\) является случайным процессом;
Hawkes process: произошедшее событие временно увеличивает интенсивность будущих событий,
\[
\lambda(t)
=
\mu+
\sum_{T_i<t}g(t-T_i).
\]
Такие модели используются для анализа
финансовых сделок;
активности пользователей;
событий в социальных сетях;
нейронных импульсов;
землетрясений;
сетевого трафика.
Таким образом, простой пуассоновский процесс является естественной отправной точкой для многих современных моделей событийных данных.