问题描述
我有一些时间序列数据(在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。