【问题标题】:R Studio - How to predict row-by-row and use previous prediction in next one - linear modelR Studio - 如何逐行预测并在下一个线性模型中使用先前的预测
【发布时间】:2020-08-26 12:16:00
【问题描述】:

抱歉,如果不清楚,命名时遇到问题。

基本上,我有一个预测销售额的线性模型,其中一个因素是前 10 天的销售额。因此,在预测下个月时,我需要该月每一天的“前 10 天销售额”的估计数字。

我想使用模型来生成这些数字 - 因此,对于我尝试预测的第一天,我有过去 10 天的实际销售数字。在那之后的一天,我有 9 天的真实数据,加上生成的一个预测数字。之后的一天,8天的真实数据和2天的生成等等。

不太确定如何实现这一点,希望能提供任何帮助。非常感谢。

【问题讨论】:

    标签: r loops linear-regression lm predict


    【解决方案1】:

    Kathy,从...获取您的前 10 个数据点。用它播种你的预测。

    initialization <- c(9.463, 9.704, 10.475, 8.076, 8.221, 8.509, 
                10.083, 9.572, 8.447, 10.081)
    
    prediction = initialization
    

    这是一个使用最后 10 个值的愚蠢预测函数:

    predFn <- function(vec10){
      stopifnot(length(vec10) == 10)
      round(mean(vec10) + 1 , 3)
    }
    

    虽然我平时喜欢用map家族,但这个好像是想成为loop

    for(i in 11:20){
      lo = i - 10
      hi = i - 1
      prediction[i] <- predFn(prediction[lo:hi])
    }
    

    我们得到了什么?

    prediction
    #  [1]  9.463  9.704 10.475  8.076  8.221  8.509 10.083  9.572  8.447 10.081 10.263 10.343 10.407 10.400 10.633 10.874 11.110 11.213
    # [19] 11.377 11.670
    

    【讨论】:

    • 我对线性模型知之甚少。但是,如果我理解正确,您的完整问题不仅仅是向前推断单个向量。相反,您有一个包含 5 列的数据框,您需要根据从 9 天前到今天的 5 个值来预测明天的所有 5 个值。并且您想知道如何将预测连续附加到数据框的底部。正确的?如果我的回答对您有帮助,您可以点赞,甚至接受。
    • 抱歉,我觉得我的问题不是很清楚 - 不,我有一个数据框,比如说 5 行,我想预测明天、后天的所有 5 个值,等基于过去的 10 行。
    • 所以你从一个数据框开始。它有一个 date 列加上 5 列 x 10 行。您有一个线性模型 (LM),它采用 10 行并预测下一行。 LM 已经设置了它的系数,并且 LM 预测 5 列中的每一列的下一个值。对吗?
    • 来吧,凯西。如果有人花时间帮助你,你至少能做的就是投票。你不是新手。
    【解决方案2】:

    首先想到的是使用预测数据的移动平均线。尽管您仅对预测数据进行平均,但这是一个开始的地方。

    moving.average = 0
    
    test.dat = rnorm(100, 10,2)
    
    for(i in 1:30){
      moving.average[i] = mean(test.dat[i:i+10])
    }
    

    希望对你有帮助

    【讨论】:

    • 感谢您的回复。绝对更难捍卫,但只是作为创建他预测数据的估计。你知道我如何能够实现这一点来首先获得预测数据吗?我正在努力生成预测数据,因为我想使用之前的预测逐行进行。
    • 如果您还没有建立回归,您将需要这些系数来建立预测数据集。 Lm最基本的是:lm(y~x, data = Matrix)
    • 我已经建立了回归,但我试图找到一种方法,不必逐一预测每一行 - 我的回归输入是过去 10 天销售额的总和,所以我想找到一种方法来预测第一个输出,然后在下一个预测中使用它,等等。抱歉,如果不清楚
    猜你喜欢
    • 2021-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    相关资源
    最近更新 更多