【发布时间】:2023-04-06 02:30:01
【问题描述】:
我正在研究打算在 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 Server,下两行来自 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}, -, {})
RStudio 返回: TBATS(0.463, {0,0}, -, {})
这解释了预测值的差异,但问题仍然存在,因为它们应该是相同的。
【问题讨论】:
-
您需要粘贴几行记录以便我们了解您的数据
-
我已经添加了数据样本,很抱歉这个错误。
-
第三列中的逗号是什么意思
-
只是小数,它在原始数据中是句号,但是当我出于某种原因从 csv 复制它时,它变成了逗号。我会修复它以防止将来出现混乱。
-
当您在 RStudio @KristijanTornič 中进行测试时,您会针对哪个 R 运行时运行; Microsoft R Server、Microsoft R Open 还是 CRAN R?如果您使用 CRAN R,您能否尝试将 RStudio 指向 SQL Server R 运行时,看看您的结果是什么。
标签: sql-server r sql-server-2016