我正在构建一个timeseries PyBats模型,使用泊松分布来表示观测值的分布。我的模型实例化如下所示
model = define_dglm(
Y=data.actual.values,
X=None,
family="poisson",
k=1,
prior_length=8,
dates=data["month"],
ntrend=2,
seasPeriods=[],
seasHarmComponents=[],
nsamps=10000,
)
其中data.actual.values
是整数的numpy数组。在实例化模型之后,为了使用pybats预测未来,我运行了
forecast_samples = model.forecast_path(k=steps_to_forecast, X=X_future, nsamps=10000)
并获取以下错误:
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/opt/conda/lib/python3.8/site-packages/pybats/dglm.py", line 289, in forecast_path
return forecast_path_copula(self, k, X, nsamps, **kwargs)
File "/opt/conda/lib/python3.8/site-packages/pybats/forecast.py", line 211, in forecast_path_copula
return forecast_path_copula_sim(mod, k, lambda_mu, lambda_cov, nsamps, t_dist, nu)
File "/opt/conda/lib/python3.8/site-packages/pybats/forecast.py", line 326, in forecast_path_copula_sim
return np.array(list(map(lambda prior: mod.simulate_from_sampling_model(prior, nsamps),
File "/opt/conda/lib/python3.8/site-packages/pybats/forecast.py", line 326, in <lambda>
return np.array(list(map(lambda prior: mod.simulate_from_sampling_model(prior, nsamps),
File "/opt/conda/lib/python3.8/site-packages/pybats/dglm.py", line 477, in simulate_from_sampling_model
return np.random.poisson(rate, [nsamps])
File "mtrand.pyx", line 3573, in numpy.random.mtrand.RandomState.poisson
File "_common.pyx", line 824, in numpy.random._common.disc
File "_common.pyx", line 621, in numpy.random._common.discrete_broadcast_d
File "_common.pyx", line 355, in numpy.random._common.check_array_constraint
ValueError: lam value too large
我尝试将我的Y
数组转换为浮点数,并尝试用1替换所有0值,但得到相同的错误。是什么导致了这个错误
问题在于超过了
numpy.random.poisson
中允许的最大值。看起来任何大于np.random.poisson(1E19)
的值都会导致此错误您可以尝试以下几点:
model.a
)和协方差矩阵(model.R
)是什么,以确保它们是合理的。如果它们不是,您可以手动更改它们李>dlm
模型对log(Y)进行建模李>希望这对我有帮助
谢谢, 艾萨克
相关问题 更多 >
编程相关推荐