【问题标题】:Standalone R and R - SQL give different results独立的 R 和 R - SQL 给出不同的结果
【发布时间】: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


【解决方案1】:

我会为以后遇到问题的人回答这个问题:

根据您的操作系统和运行时,R 引擎中的执行似乎有所不同。我通过在我的 PC 和使用 RStudio 和 Microsoft R Open 的服务器上运行独立 R 并在我的 PC 和服务器上的数据库中运行 R 来测试这一点。我还测试了所有不同的运行时。

如果有人想测试自己的,可以在工具 - 全局选项 - 常规 - R 版本(适用于 RStudio)中更改 R 运行时

所有测试返回的结果略有不同。这并不意味着结果是错误的(至少在我的情况下,因为我预测的是真实的业务数据并且结果有很大的间隔)。

这可能不是一个实际的解决方案,但我希望我能像我一样防止有人恐慌一周。

【讨论】:

    猜你喜欢
    • 2021-03-14
    • 2020-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多