r - 预测的准确性测试

标签 r forecasting

我找到了一个网站,它准确地解释了我需要为我的数据做什么,但它不在 R 中。谁能建议我如何在 R 中创建它?

http://people.duke.edu/~rnau/three.htm

我需要找到 MSE、MAE、MAPE、ME、MPE、SSE 来测试预测的准确性,这个页面是我发现的最接近解释如何做的页面。

data<-c(79160.56266,91759.73029,91186.47551,106353.8192,70346.46525,80279.15139,82611.60076,131392.7209,93798.99391,105944.7752,103913.1296,154530.6937,110157.4025,117416.0942,127423.4206,156751.9979,120097.8068,121307.7534,115021.1187,150657.8258,113711.5282,115353.1395,112701.9846,154319.1785,116803.545,118352.535)
forecasts<-c(118082.3,157303.8,117938.7,122329.8) # found using arima

(如果你把这个问题记下来,你能具体解释一下原因吗)

最佳答案

以下是一些使用数据集 UKNonDurables 帮助您入门的示例。来自包裹AER .此包装随书 Applied Econometrics with R ,这是一本很好的应用计量经济学入门书,特别适合没有扎实编程背景的人。

library(forecast)
library(AER) 
##
data("UKNonDurables")
## alias for convenience
Data <- UKNonDurables
## split data into testing and training
train <- window(
  Data,
  end=c(1975,4))
test <- window(
  Data,
  start=c(1976,1))
## fit a model on training data
aaFit <- auto.arima(
  train)
## forcast training model over
## the testing period
aaPred <- forecast(
  aaFit,
  h=length(test))
##
> plot(aaPred)

enter image description here
## extract point forecasts
yHat <- aaPred$mean
## a few functions:
## mean squared (prediction) error
MSE <- function(y,yhat)
{
  mean((y-yhat)**2)
}
## mean absolute (prediction) error
MAE <- function(y,yhat)
{
  mean(abs(y-yhat))
}
## mean absolute percentage (prediction) error
MAPE <- function(y,yhat,percent=TRUE)
{
  if(percent){
    100*mean(abs( (y-yhat)/y ))
  } else {
    mean(abs( (y-yhat)/y ))
  }
}
##
> MSE(test,yHat)
[1] 9646434
> MAE(test,yHat)
[1] 1948.803
> MAPE(test,yHat)
[1] 3.769978

所以就像我说的,上述部分或全部函数可能存在于基础 R 或外部包中,但它们通常是简单的公式,实现起来很简单。尝试解决这些问题和/或调整它们以更好地满足您的需求。

编辑:
正如 Hyndman 先生在下面指出的,他的包裹 forecast包括功能 accuracy ,它提供了一种非常方便的方法来总结时间序列模型的 GOF 度量。使用上述相同的数据,您可以轻松评估 forecast 的拟合度。训练和测试期间的对象:
> round(accuracy(aaPred,Data),3)
                   ME     RMSE      MAE   MPE  MAPE  MASE  ACF1 Theil's U
Training set    2.961  372.104  277.728 0.001 0.809 0.337 0.053        NA
Test set     1761.016 3105.871 1948.803 3.312 3.770 2.364 0.849     1.004

(其中使用 round(...,3) 只是为了输出适合这篇文章)。或者,如果您只想检查预测期间的这些度量,您可以调用如下代码:
> accuracy(yHat,test)
               ME     RMSE      MAE      MPE     MAPE      ACF1 Theil's U
Test set 1761.016 3105.871 1948.803 3.312358 3.769978 0.8485389  1.004442

关于r - 预测的准确性测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25870027/

相关文章:

r - R 中不同类型的聚合

r - 在 R 中使用随机森林进行时间序列预测

r - 如何在ARIMA预测模型中指定newxreg?

r - 离散值到连续尺度

r - 将多个数据框拆分、应用和合并为一个数据框

r - 如何告诉先知不要预测负值

r - 使用 R 对多个项目进行 Prophet 预测

使用 as.POSIXlt/ct 进行 R 预测

r - ggplot2:如何总结计数? stat_summary 或 stat_bin

r - 如何选择一列中的行并将其作为列转换为新表?