【问题标题】:Predicting dates using dates使用日期预测日期
【发布时间】:2017-11-14 05:44:10
【问题描述】:

我想创建一个可以用来预测未来日期的简单模型。我只想使用日期列表,并使用它来最好地预测未来的日期。这是我到目前为止所做的:

sales_modified = data.frame(City=sales$City, SOCreatedOn=sales$SOCreatedOn)
sales_modified = sales_modified[order(sales_modified$City,sales_modified$SOCreatedOn),]
sales_modified = unique(sales_modified)
sales_modified$rowNum = 1:length(sales_modified$City)
ggplot(data = sales_modified[1:119,], aes(x=rowNum, y=SOCreatedOn)) + geom_point(aes(color=City)) + 
  theme(axis.text.x = element_text(angle = 90, hjust = 1)) + facet_wrap(~City)+ geom_smooth(method="lm")

date1 = lm(SOCreatedOn ~ rowNum, data = sales_modified[1:119,])

格式化日期并将其保存在名为sales_modified 的数据框中,该数据框创建两列,一个城市和一个日期。我创建rowNum 列的原因是为了以某种方式巧妙地绘制它并创建模型。我尝试使用lm() 来计算线性模型。如何在不提供任何其他数据的情况下找到下一个未来日期?

编辑: 尝试使用 ARIMA 模型,但当我知道情况并非如此时,它只会导致一个接一个地选择日期(4/27、4/28、4/29)。

timeseries = ts(sales_modified$SOCreatedOn[1:119])
plot.ts(timeseries)

auto.arima(timeseries)
timeseriesarima = arima(timeseries, order = c(2,1,0))
timeseriesforecast = forecast.Arima(timeseriesarima, h = 5)
as.Date(timeseriesforecast$mean[1:5])

【问题讨论】:

    标签: r machine-learning statistics


    【解决方案1】:

    时间序列数据违反了相邻数据点相互独立的假设,简单的线性回归无法正确解释这一点。考虑一个 ARIMA 模型 (?arima)

    【讨论】:

    • 如果日期本身就是我要建模的变量,我该如何使用它?
    【解决方案2】:

    虽然我同意 @Rob 对时间序列违反独立性的担忧,但可能只有您才能最好地评估这一点(一个数据点是否为您提供有关下一个数据点的信息)。

    话虽如此,如果您对 lm 模型的适当性感到满意,则很容易从 lm 模型中预测新响应。查看?predict.lm,并尝试类似

    newdate <- predict(date1, newdata=data.frame(rowNum=120:140))
    

    如果您发现按照@Rob 的建议使用 ARIMA 模型更合适,请查看?predict.Arima。用法类似predict(yourARIMAmodel)

    【讨论】:

    • 好的,我想我想使用一个 ARIMA 模型,但根据我的理解,我需要创建一个包含取决于日期的数据的向量。在我的情况下,我在尝试创建时间序列时会使用什么?
    • 其实我想我明白了,你能检查我的编辑,让我知道我是否正确吗?
    • 不知道你的数据集是如何工作的,我不太确定。代码看起来可能是正确的,但如果它给出的结果没有意义,那么可能还是有问题。也许迁移到 Crossvalidated?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-23
    • 2019-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2019-04-25
    相关资源
    最近更新 更多