#python #numpy #poisson
#python #numpy #poisson
Вопрос:
Если мы начнем с вектора от 0 до 1 с шагом M = 100
z = np.linspace(0,10,M)
этот вектор имеет равные приращения от 0 до 1.
Я хочу создать новый вектор, в котором приращения z_{n 1}-z_n распределяются в соответствии с распределением Пуассона с параметром lambda. Я попробовал это с помощью cumsum
lam = 10000
dz = np.random.poisson(lam, M)
z = np.cumsum(dz)
но я не уверен, правильно ли это? Будут ли приращения этого нового вектора z иметь приращения, распределенные через распределение Пуассона?
Комментарии:
1. Можете ли вы уточнить, что вы подразумеваете под «вектор z выглядит неправильно»? Для меня неочевидно, как это должно выглядеть. Если вы выполните cumsum для распределения Пуассона, это будет выглядеть совершенно иначе, чем распределение Пуассона, верно? Я думаю, я не понимаю, в чем ваша проблема.
2. Я отметил этот вопрос как неясный, потому что вы как бы спрашиваете две вещи; что-то о векторе с M приращениями и что-то о графике конечного положения. Я не могу сказать, что понимаю, в чем вопрос. Если бы вы могли привести в порядок свой вопрос, мы могли бы гораздо лучше помочь вам найти ответ. 🙂
3. Прошу прощения, я обновил свой вопрос @Alan
Ответ №1:
Спасибо за обновление, теперь я понимаю проблему. Ответ: нет; вы не должны ожидать, что вектор z
будет иметь свои приращения в виде распределения Пуассона.
Чтобы продемонстрировать почему, давайте создадим кучу разных распределений Пуассона и сложим их вместе.
a = np.random.poisson(1000, 200)
b = np.random.poisson(1000, 200)
c = np.random.poisson(1000, 200)
d = np.random.poisson(1000, 200)
e = np.random.poisson(1000, 200)
plt.figure(figsize=(15, 10))
plt.hist(a b, bins=200)
plt.hist(a b c, bins=200)
plt.hist(a b c d, bins=200)
Круто, итак, мы можем видеть, что результат по-прежнему распределен по Пуассону, но гистограммы смещаются все выше и выше. Обратите также внимание на линейное масштабирование параметра lambda. Все дистрибутивы имели лямбда = 1000, и когда я добавил 2 вместе, результаты выглядели как дистрибутив с лямбда = 2000, когда я добавил 3, это выглядело как лямбда = 3000.
Итак, и это действительно просто приблизительный взгляд на проблему, похоже, что добавление векторов таким образом сохраняет поведение Пуассона с увеличением значений лямбда.
Однако ваш вариант использования заключается в том, что каждый интервал должен быть значением, полученным из распределения Пуассона. Допустим, наш вектор начинался как [lambda, 0, 0, ..., 0]
, где лямбда означает значение, полученное из распределения Пуассона с параметром скорости lambda. Чтобы получить ith
значение, мы добавляем другое значение лямбда, полученное из пуассона, к (i-1)th
значению. Итак, наш вектор выглядит так [l, l l, 0, ..., 0]
. Если мы повторим это, наш вектор будет:
z = [l, l l, l l l, ..., l ...n-1 times... l]
Это, безусловно, НЕ распределение Пуассона. Это примерно эквивалентно извлечению одного значения из каждой гистограммы, которую я построил. Причина, по которой ваш график выглядит так, как он выглядит, заключается в том, что более поздние значения в массиве очень высоки, и, конечно же, так оно и есть, конечное значение представляет собой сумму 1000 значений, среднее значение которых близко к 10000! Гистограмма отображает равномерно расположенные ячейки. Если вы установите слишком низкое количество ячеек, вы получите толстый блок. Если вы установите его слишком высоким, вы получите отдельные блоки, каждый из которых содержит одно значение, расположенное примерно в i*lambda
, где i
— индекс элемента массива.
Следует отметить еще один момент; вы не можете требовать, чтобы массив начинался с 0 и заканчивался на 1, если промежуточные значения извлекаются из дистрибутива со средним значением 10000. Если вы не хотите выполнить некоторую нормализацию.