我目前正在为学校开展一个项目,该项目要求我在 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() 命令将数据集转换为时间序列,但我一定做错了什么,因为即使在那之后它也说它不是单变量时间序列。
错误意味着它所说的,
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
。
虽然我的数据集每个时间单位没有多个条目,但它是纯粹的单变量,该函数不起作用。
在 auto.arima 参数中添加 [,1] 有助于解决问题:: 自动阿里马1 <- auto.arima(TR_2015_2019_ts [,1])
@acylam 非常感谢你,我对这个问题的理解在很大程度上得到了澄清L 如果我需要更多帮助,我会回复您。希望你能再次善良!!
@亚历克塞尔 非常感谢 !我会尝试一下然后回来