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