我目前正在开展一个学校项目,要求我在一组给定的数据中对R进行时间序列预测。我已经查找了无数关于如何执行此操作的示例,但我找到的每个示例都包含一个记录数据的数据集,例如,在15年的过程中每月一次。我教授给我的数据集记录了每0.001秒的数据,并且同一秒内有多个数据条目。例如,在数据的末尾有五个不同的条目,为.02500秒。
我对单变量时间序列的理解是一个时间序列,它在特定的时间段内进行测量,例如每个月或每千分之一秒。每当我尝试对数据集(adeno
)进行时间序列预测时,我会在代码下面看到如下所示的错误。
> fit <- auto.arima(adeno)
Error in auto.arima(adeno) :
auto.arima can only handle univariate time series
谁能告诉我哪里出错了,或者我是否误解了什么?我曾尝试使用R中的ts()命令将数据集转换为时间序列,但我必须做错事,因为即使在此之后它也表示它不是一个非单变量的时间序列。
答案 0 :(得分:3)
错误意味着它所说的,auto.arima
只能处理单变量时间序列。由于您提到您的数据集对于每个时间单位都有多个条目,因此如果您使用ts
进行转换,则它是一个多变量时间序列。你可以按照以下方式做点什么:
adenoTS = ts(adeno)
arima_fit = auto.arima(adenoTS[,1])
为了解决评论部分中的第二个问题,我使用了airquality
数据集进行演示:
require(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
时间单位。什么&#34;时间单位&#34;在这种情况下,意味着取决于您在airTS = ts(airquality)
步骤中定义时间序列的方式。在这里,我没有打算正确转换它,但您可以在start =
中添加frequency =
和ts()
参数来指定ts的开始时间和频率。
plot
的{{1}}方法可让您绘制预测结果。请参阅forecast
。
答案 1 :(得分:0)
尽管我的数据集中每个时间单位都没有多个条目,但这纯粹是单变量的,该功能无法正常工作。
在auto.arima参数中添加[,1]有助于解决问题: autoarima1 <-auto.arima(TR_2015_2019_ts [,1])