在Python中获得泊松对时间序列先前值的期望

问题描述

我有一些时间序列数据(在Pandas数据框中), d(t)

time   1   2   3   4   ... 99  100
d(t)   5   3   17  6   ... 23  78

我想获取数据的时移版本,例如 d(t-1)

time   1   2   3   4   ... 99  100
d(t)   5   3   17  6   ... 23  78
d(t-1) NaN 5   3   17  6   ... 23

但是很复杂。除了简单地对数据进行时移外,我还需要基于泊松分布的移位获取期望值。因此,我需要E( d(tj))代替 d(ti),其中 j 〜Poisson( i )。

在Python中有有效的方法吗?

理想情况下,我可以使用 i 作为参数动态生成结果(可以在优化中使用)。

numpy的Poisson函数似乎与从Poisson生成绘图有关,而不是提供可用于计算期望值的PMF。如果可以生成PMF,则可以执行以下操作:

for idx in len(d(t)):
    Ed(t-i) = np.multiply(d(t)[:idx:-1],PMF(Poisson,i)).sum()

但是我不知道该使用什么实际功能,或者是否有比遍历索引更简单的方法。这种方法也不会轻易让我通过 i 进行优化。

解决方法

您可以使用scipy.stats.poisson来获取PMF。 这是一个示例:

from scipy.stats import poisson

mu = 10

# Declare 'rv' to be a poisson random variable with λ=mu
rv = poisson(mu)

# poisson.pmf(k) = (e⁻ᵐᵘ * muᵏ) / k!
print(rv.pmf(4)) 

有关scipy.stats.poisson的更多信息,请选中此doc