R 中的时间序列预测,单变量时间序列

问题描述 投票:0回答:3

我目前正在为学校开展一个项目,该项目要求我在 R 中对给定的数据集执行时间序列预测。我查找了无数关于如何执行此操作的示例,但我找到的每个示例都包含一个记录数据的数据集,例如,在 15 年的时间里每月一次记录数据。我的教授给我的数据集每0.001秒记录一次数据,同一秒有多个数据条目。例如,在数据末尾有 0.02500 秒的五个不同条目。

我对单变量时间序列的理解是在特定时间段进行测量的时间序列,例如每月或每千分之一秒。每当我尝试对数据集进行时间序列预测 (

adeno
) 时,我都会在代码下收到如下所示的错误。

> fit <- auto.arima(adeno)
Error in auto.arima(adeno) : 
  auto.arima can only handle univariate time series

谁能告诉我哪里出了问题或者我是否误解了什么?我尝试过使用 R 中的 ts() 命令将数据集转换为时间序列,但我一定做错了什么,因为即使在那之后它也说它不是单变量时间序列。

r time-series
3个回答
6
投票

错误意味着它所说的,

auto.arima
只能处理单变量时间序列。由于您提到您的数据集每个时间单位都有多个条目,因此如果您使用
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)
步骤中如何定义时间序列。这里我没有费心去正确地转换它,但是你可以在
start =
中添加
frequency =
ts()
参数来指定 ts 的开始时间和频率。

plot
forecast
方法可让您绘制预测结果。请参阅
?plot.forecast


1
投票

虽然我的数据集每个时间单位没有多个条目,但它是纯粹的单变量,该函数不起作用。

在 auto.arima 参数中添加 [,1] 有助于解决问题:: 自动阿里马1 <- auto.arima(TR_2015_2019_ts [,1])


0
投票

@acylam 非常感谢你,我对这个问题的理解在很大程度上得到了澄清L 如果我需要更多帮助,我会回复您。希望你能再次善良!!

@亚历克塞尔 非常感谢 !我会尝试一下然后回来

© www.soinside.com 2019 - 2024. All rights reserved.