R bsts预测不一致

R bsts预测不一致,r,time-series,bayesian,R,Time Series,Bayesian,每当我使用相同的预测数据在bsts模型上多次运行预测函数时,我会得到不同的答案。所以我的问题是,如果我保持预测数据集不变,有没有办法返回一致的答案 使用iris数据集的示例(我知道这不是时间序列,但它将说明我的观点) iris\u train您可以创建一个函数,每次指定seed(set.seed是不必要的…): represtable\u predict我遇到了同样的问题。要修复它,需要在嵌入式C代码中设置随机种子。我将包装好的文件分叉,并在此处进行了修改: 仅对于包安装,请在build文件夹中

每当我使用相同的预测数据在bsts模型上多次运行预测函数时,我会得到不同的答案。所以我的问题是,如果我保持预测数据集不变,有没有办法返回一致的答案

使用iris数据集的示例(我知道这不是时间序列,但它将说明我的观点)


iris\u train您可以创建一个函数,每次指定
seed
set.seed
是不必要的…):


represtable\u predict我遇到了同样的问题。要修复它,需要在嵌入式C代码中设置随机种子。我将包装好的文件分叉,并在此处进行了修改:

仅对于包安装,请在build文件夹中下载bsts_0.7.1.1.tar.gz。如果已安装bsts,请通过以下方式将其替换为此版本:

remove.packages("bsts")
# assumes working directory is whre file is located
install.packages("bsts_0.7.1.1.tar.gz", repos=NULL, tyype="source")
如果您没有安装BST,请先安装它以确保所有依赖项都存在。(这可能需要分别安装Rtools、动臂和动臂钉板。)


此包版本仅修改bsts中的predict函数,所有代码应按原样工作。每次调用predict时,它会自动将随机种子设置为1。如果希望预测发生变化,则每次都需要显式设置predict参数。

我遇到了相同的问题。 问题来自于仅在模型定义中设置种子

要解决问题,必须在predict函数中设置种子,例如:


iris_predict我按照您的建议运行了原始代码并添加了set.seed,但iris_predict$mean的结果仍然不同……我忘了提到我必须能够多次运行predict函数并始终获得相同的结果,设置种子不会发生这种情况。我编辑了我的答案…
set。没有必要设置种子。对于可复制的行为,每次都需要在
bsts
中指定
seed
iris_predict <- predict(iris_bsts, newdata = iris_test, burn = burn)
iris_predict$mean
reproducible_predict <- function(S) {
    iris_bsts <- bsts(formula = Sepal.Length ~ ., data = iris_train, state.specification = ss, seed = S, family = 'gaussian', niter = 500)
    burn <- SuggestBurn(0.1,iris_bsts)
    iris_predict <- predict(iris_bsts, newdata = iris_test, burn = burn)
    return(iris_predict$mean)
}

reproducible_predict(1)
[1] 7.043592 6.212780 6.789205 6.563942 6.746156
reproducible_predict(1)
[1] 7.043592 6.212780 6.789205 6.563942 6.746156

reproducible_predict(200)
[1] 7.013679 6.173846 6.763944 6.567651 6.715257
reproducible_predict(200)
[1] 7.013679 6.173846 6.763944 6.567651 6.715257
remove.packages("bsts")
# assumes working directory is whre file is located
install.packages("bsts_0.7.1.1.tar.gz", repos=NULL, tyype="source")