我每天都有关于网站访客数量的时间序列 . 我的系列从 01/06/2014
开始直到今天 14/10/2015
所以我希望预测未来的访客人数 . 如何用R读取我的系列?我在想:
series <- ts(visitors, frequency=365, start=c(2014, 6))
如果是的话,在运行我的时间序列模型后 arimadata=auto.arima()
我想预测接下来6o天的访客号码,我该怎么做?
h=..?
forecast(arimadata,h=..),
h
的 Value 应该是什么?在此先感谢您的帮助
5 回答
ts
规范是错误的;如果您将此设置为每日观察,那么您需要指定2014年的哪一天是6月1日,并在start
中指定:请注意,我将
start
指定为c(2014, as.numeric(format(inds[1], "%j")))
. 所有复杂的一点都在于解决6月1日的哪一天:一旦你有了这个,你就在那里:
鉴于我提供的随机数据,这似乎是合适的...
您需要为
auto.arima()
选择适合您数据的参数 .请注意,x轴标签指的是一年的0.5(一半) .
通过动物园这样做
通过使用 zoo 包创建的
zoo
对象可能更容易做到这一点:请注意,您现在不需要指定任何
start
或frequency
info;只需使用之前Date
对象中的inds
计算 .继续像以前一样
该情节虽然会引起问题,因为x轴是自纪元(1970-01-01)以来的天数,所以我们需要抑制该轴的自动绘图然后绘制我们自己的 . 这很简单,因为我们有
inds
这只产生一些标记的刻度;如果你想要更多控制,告诉R你想要的标记和标签:
这里我们每3个月绘制一次 .
时间序列对象不适用于创建每日时间序列 . 我建议你使用动物园图书馆 .
下面是一个分步指南,用于预测R中多个季节性的日常数据 . 除非时间序列很长,最简单的方法是简单地将频率属性设置为7 .
那么任何通常的时间序列预测方法都应该产生合理的预测 . 例如
如果时间序列足够长,可以超过一年,那么可能需要考虑年度季节性以及每周季节性 . 在这种情况下,需要一个多季节模型,如TBATS .
这应该捕捉每周模式以及更长的年度模式 . 365.25期是允许闰年的一年的平均长度 . 在某些国家/地区,可能需要替代或额外的年份长度 .
捕捉与复活节或中国新年等移动事件相关的季节性变得更加困难 . 即使有月度数据,这也可能很棘手,因为节日可能在3月或4月(复活节)或1月或2月(农历新年)下降 . 通常的季节性模型不允许这样做 . 处理移动假日效果的最佳方法是使用虚拟变量 . 但是,ETS和TBATS模型都不允许协变量 . 可以使用与TBATS相同形式但具有多个误差源和协变量的状态空间模型,但是我们没有任何R代码可以做到这一点 .
相反,我们可以使用具有ARIMA错误的回归模型,其中回归项包括任何虚拟假日效应以及更长的年度季节性 . 除非有数十年的数据,否则通常可以合理地假设年度季节性形状每年都保持不变,因此可以使用傅里叶项来模拟年度季节性 . 假设我们使用K = 5傅立叶项来模拟年度季节性,并且假日虚拟变量在向量假期中,在holidayf中有100个未来值 . 然后,以下代码将适合适当的模型 .
可以通过最小化拟合模型的AIC来选择阶数K.
152号码是01-06-2014,因为它从152号开始,因为频率= 365要预测60天,h = 60 .
这是我如何创建一个时间序列,当我得到一些日常观察时,缺少相当多的观察 . @ gavin-simpson给了我很大的帮助 . 希望这可以节省一些人的悲伤 .
原始数据看起来像这样:
为了创建一个包含这些数据的时间序列,我创建了一个“虚拟”数据框,每个日期有一行并将其与现有数据框合并:
此数据框可以转换为时间序列 . 缺少日期是
NA
.