我正在研究我打算在SQL server 2016(数据库内)中使用的月度数据的预测模型。
我创建了一个简单的TBATS模型进行测试:
dataset <- msts(data = dataset[,3],
start = c(as.numeric(dataset[1,1]),
as.numeric(dataset[1,2])),
seasonal.periods = c(1,12))
dataset <- tsclean(dataset,
replace.missing = TRUE,
lambda = BoxCox.lambda(dataset,
method = "loglik",
lower = -2,
upper = 1))
dataset <- tbats(dataset,
use.arma.errors = TRUE,
use.parallel = TRUE,
num.cores = NULL
)
dataset <- forecast(dataset,
level =c (80,95),
h = 24)
dataset <- as.data.frame(dataset)
数据集是从我使用SQL查询创建的.csv文件导入的。
后来,我在SQL server中使用了相同的代码,输入与我用于.csv文件的查询相同(意味着数据完全相同)
然而,当我执行脚本时,我注意到我得到了不同的结果。所有数字看起来都很好并且非常有意义,SQL和独立R都给出了预测表,但两个表之间的所有数字都有几个百分点(平均约为3%)。
对此有解释吗?我真的很困扰我,因为我需要最好的结果。
编辑:这是我的数据看起来更容易理解的方式。它基本上是3列表:年,月,交易价值(数字随机化,因为数据被分类)。总而言之,我有9年的数据。
2008 11 1093747561919.38
2008 12 816860005030.31
2009 1 341394536377.06
2009 2 669993867646.25
2009 3 717585597605.75
2009 4 627553319006.03
2009 5 984146176491.78
2009 6 605488762214.33
2009 7 355366795222.40
2009 8 549252969698.07
2009 9 598237364101.23
这是结果的一个例子。前两行来自SQL服务器,后两行来自RStudio。
t Point Lo80 Hi80
1 872379.7412 557105.271 1187654.211
2 1093817.266 778527.1078 1409107.424
1 806050.6884 517606.464 1094494.913
2 1031845.483 743387.015 1320303.95
编辑2:我仔细检查了每个部分的代码,并且我发现结果的差异发生在TBATS模型中。
SQL服务器返回: TBATS(0.684,{0,0}, - ,{&lt; 12,5&gt;})
RStudio返回: TBATS(0.463,{0,0}, - ,{&lt; 12,5&gt;})
这解释了预测值的差异,但问题仍然存在,因为它们应该是相同的。
答案 0 :(得分:0)
对于将来遇到问题的人,我会回答这个问题:
似乎R引擎中的执行存在差异,具体取决于您的操作系统和运行时。我通过在我的PC和服务器上运行独立R来测试这个,使用RStudio和Microsoft R Open并在我的PC和服务器上运行数据库中的R.我还测试了所有不同的运行时间。
如果有人想测试它们,可以在工具 - 全局选项 - 常规 - R版本(对于RStudio)中更改R运行时
所有测试都返回了略有不同的结果。这并不意味着结果是错误的(至少在我的情况下,因为我预测实际业务数据和结果的间隔很宽)。
这可能不是一个实际的解决方案,但我希望我可以像我一样阻止某人恐慌一周。