R中forecast()函数的默认序列和测试集大小是多少?

R中forecast()函数的默认序列和测试集大小是多少?,r,time-series,dataset,training-data,forecast,R,Time Series,Dataset,Training Data,Forecast,我在数据中使用了TBATS模型,当我应用forecast()函数时,它会自动预测未来两年的数据。我没有指定任何训练集或测试集,那么我如何知道它用于预测未来两年的数据量呢 我处理的数据是优步2016年1月至2020年1月的旅行时间数据。我有18个城市的每日数据(抽样频率=1),每个城市有不同的样本量(从1422天到1459天不等) 我已经将旅行时间向量设置为msts对象,因为它具有多个季节性,TBATS模型使用它 当我计算RMSE、MAE、MAPE和MSE时,通常会得到非常低的值,所以我如何知道

我在数据中使用了TBATS模型,当我应用forecast()函数时,它会自动预测未来两年的数据。我没有指定任何训练集或测试集,那么我如何知道它用于预测未来两年的数据量呢

我处理的数据是优步2016年1月至2020年1月的旅行时间数据。我有18个城市的每日数据(抽样频率=1),每个城市有不同的样本量(从1422天到1459天不等)

我已经将旅行时间向量设置为
msts
对象,因为它具有多个季节性,TBATS模型使用它

当我计算RMSE、MAE、MAPE和MSE时,通常会得到非常低的值,所以我如何知道TBATS是在哪个数据上训练的

这是我的密码:

data <- read.csv('C:/users/Datasets/Final Datasets/final_a.csv', TRUE, ",")
y <- msts(data$MeanTravelTimeSeconds, start=c(2016,1), seasonal.periods=c(7.009615384615385, 30.5, 91.3, 365.25))

fit <- tbats(y)
plot(fit)
fc <- forecast(fit)
autoplot(fc, ylab = "Travel Time in Seconds")

# Check residuals (ACF and histogram)
checkresiduals(fc)

# RMSE
rmse <- sqrt(fit$variance)

# MAE
res <- residuals(fit)
mae <- mean(abs(res))

# MAPE
pt <- (res)/y
mape <- mean(abs(pt))

# MSE (Mean Squared Error)
mse <- mean(res^2)
如果我必须手动选择测试和训练集,我应该如何修改代码才能做到这一点?

如果您使用
forecast(fit)
,那么您得到的是训练数据中的拟合值

如果您也想使用测试集,请参见下面的示例。使用拟合模型预测地平线h,并与已知数据集进行比较

library(forecast)

# Training Data
n_train <- round(length(USAccDeaths) * 0.8)
train <- head(USAccDeaths, n_train)

# Test Data
n_test <- length(USAccDeaths) - n_train
test <- tail(USAccDeaths, n_test)

# Model Fit
fit <- tbats(train)

# Forecast for the same horizion as the test data
fc <- forecast(fit, n_test)

# Point Forecasts 
fc$mean
#            Jan       Feb       Mar       Apr       May       Jun       Jul
# 1977                      7767.513  7943.791  8777.425  9358.863 10034.996
# 1978  7711.478  7004.621  7767.513  7943.791  8777.425  9358.863 10034.996
#            Aug       Sep       Oct       Nov       Dec
# 1977  9517.860  8370.509  8706.441  8190.262  8320.606
# 1978  9517.860  8370.509  8706.441  8190.262  8320.606

test # for comparison with the point forecasts
#        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
# 1977              7726  8106  8890  9299 10625  9302  8314  8850  8265  8796
# 1978  7836  6892  7791  8192  9115  9434 10484  9827  9110  9070  8633  9240

如果您使用
预测(拟合)
,您将从训练数据中获得拟合值

如果您也想使用测试集,请参见下面的示例。使用拟合模型预测地平线h,并与已知数据集进行比较

library(forecast)

# Training Data
n_train <- round(length(USAccDeaths) * 0.8)
train <- head(USAccDeaths, n_train)

# Test Data
n_test <- length(USAccDeaths) - n_train
test <- tail(USAccDeaths, n_test)

# Model Fit
fit <- tbats(train)

# Forecast for the same horizion as the test data
fc <- forecast(fit, n_test)

# Point Forecasts 
fc$mean
#            Jan       Feb       Mar       Apr       May       Jun       Jul
# 1977                      7767.513  7943.791  8777.425  9358.863 10034.996
# 1978  7711.478  7004.621  7767.513  7943.791  8777.425  9358.863 10034.996
#            Aug       Sep       Oct       Nov       Dec
# 1977  9517.860  8370.509  8706.441  8190.262  8320.606
# 1978  9517.860  8370.509  8706.441  8190.262  8320.606

test # for comparison with the point forecasts
#        Jan   Feb   Mar   Apr   May   Jun   Jul   Aug   Sep   Oct   Nov   Dec
# 1977              7726  8106  8890  9299 10625  9302  8314  8850  8265  8796
# 1978  7836  6892  7791  8192  9115  9434 10484  9827  9110  9070  8633  9240

请参阅
帮助(“forecast.tbats”)
,参数
h
。谢谢!所以fc$fitted-y会给出预测值和真实值之间的距离,不是吗?而且
help(“forecast.tbats”)
告诉我,训练集的大小是最大季节性的两倍,但它是在我的数据集的哪个片段上训练的?这可能是头两年,两年中或过去2年。参见<代码>帮助(“预测。TBATS”),参数<代码> H < /代码>谢谢!所以fc$fitted-y会给出预测值和真实值之间的距离,不是吗?而且
help(“forecast.tbats”)
告诉我,训练集的大小是最大季节性的两倍,但它是在我的数据集的哪个片段上训练的?这可能是头两年,两年中或过去2年,谢谢!澄清一下:这是否意味着我的预测值是fc$平均值?如果是,fc$fitted在这种情况下是什么意思?
fc$fitted
是拟合值-拟合模型应用于训练数据。因此,当我计算RMSE、MAE等时,仅使用
forecast(fit)
(不将我的数据分为训练集和测试集),我应该使用哪些值作为预测值和真实值?我刚看到你在编辑。橙色线和黑色线的区别是什么?在这种情况下,黑色线是y(真值),橙色线是拟合值(训练数据)。但是,训练数据如何与真实值不同呢?很抱歉,我不能完全理解训练集、拟合值、预测和它们所代表的行之间的区别。训练数据,黑线,是y-真实数据。拟合值是y减去误差项(y_t-e_t)。谢谢!澄清一下:这是否意味着我的预测值是fc$平均值?如果是,fc$fitted在这种情况下是什么意思?
fc$fitted
是拟合值-拟合模型应用于训练数据。因此,当我计算RMSE、MAE等时,仅使用
forecast(fit)
(不将我的数据分为训练集和测试集),我应该使用哪些值作为预测值和真实值?我刚看到你在编辑。橙色线和黑色线的区别是什么?在这种情况下,黑色线是y(真值),橙色线是拟合值(训练数据)。但是,训练数据如何与真实值不同呢?很抱歉,我不能完全理解训练集、拟合值、预测和它们所代表的行之间的区别。训练数据,黑线,是y-真实数据。拟合值为y减去误差项(y_t-e_t)。
autoplot(USAccDeaths) + autolayer(fc) + autolayer(fitted(fit))
#autoplot(USAccDeaths) +  autolayer(fitted(fit))