我目前正在为学校开展一个项目,该项目要求我在 R 中对一组给定的数据执行时间序列预测。我查阅了无数关于如何执行此操作的示例,但我找到的每个示例都包含一个记录数据的数据集,例如,在 15 年的时间里每月一次。我的教授给我的数据集每 .001 秒记录一次数据,同一秒有多个数据条目。例如,在数据末尾有 0.02500 秒的五个不同条目。
我对单变量时间序列的理解是在特定时间段(例如每月或每千分之一秒)进行测量的时间序列。每当我尝试对数据集 (adeno
) 进行时间序列预测时,我都会收到如下代码所示的错误。
> fit <- auto.arima(adeno)
Error in auto.arima(adeno) :
auto.arima can only handle univariate time series
谁能告诉我哪里出错了,或者我是否误解了什么?我尝试使用 R 中的 ts() 命令尝试将数据集转换为时间序列,但我一定做错了什么,因为即使在那之后它也说它不是单变量时间序列。
最佳答案
错误意味着它所说的,auto.arima
can only handle univariate time series。由于您提到您的数据集每个时间单位都有多个条目,如果您使用 ts
转换它,它就是一个多变量时间序列。你可以按照以下方式做一些事情:
adenoTS = ts(adeno)
arima_fit = auto.arima(adenoTS[,1])
为了解决您在评论部分的第二个问题,我使用airquality
数据集进行演示:
library(forecast)
# Convert as time series
airTS = ts(airquality)
# Plot multivariate ts
plot(airTS[,1:4])
# Run auto.arima on a single ts
arima_fit = auto.arima(airTS[,3])
# Forecast for the next 10 time units
arima_forecast = forecast(arima_fit, h = 10)
# Plot forecasts
plot(arima_forecast)
forecast
包中的 forecast()
允许您预测下一个 h
时间单位。在这种情况下,“时间单位”的含义取决于您在 airTS = ts(airquality)
步骤中定义时间序列的方式。这里我没有费心去正确转换它,但是你可以在 ts()
中添加 start =
和 frequency =
参数来指定开始你的时间和频率。
forecast
的plot
方法可让您绘制预测结果。请参阅 ?plot.forecast
。
关于r - R 中的时间序列预测,单变量时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43622486/