【问题标题】:Seasonal Forecasting in RR中的季节性预测
【发布时间】:2014-11-05 00:17:01
【问题描述】:

我正在尝试使用前几个赛季的数据来预测个别棒球运动员的 RBI。目前,我在 3 年内每年使用 6 个月的数据(18 个数据点)。

我正在尝试找出一种方法来建立一个时间序列,该时间序列将识别出 4 月至 9 月(2012 年、2013 年、2014 年)的数据,然后预测 2015 年 4 月至 9 月的数据。

这是我正在使用的数据示例:

   RBI    BA   OBP
1    7 0.284 0.376
2   10 0.400 0.469
3   17 0.317 0.398
4   13 0.304 0.398
5    6 0.263 0.323
6   13 0.284 0.350
7   10 0.286 0.355
8    1 0.231 0.268
9    7 0.339 0.471
10   7 0.223 0.273
11  13 0.280 0.355
12  11 0.278 0.307
13  10 0.307 0.391
14   7 0.200 0.239
15   5 0.235 0.313
16  11 0.349 0.390
17   7 0.265 0.308
18   7 0.191 0.224

1-6 是 2012 年 4 月 - 9 月, 7-12 是 2013 年 4 月 - 9 月, 13-18 是 2014 年 4 月 - 9 月

当我尝试这样做时,我尝试设置这样的时间序列:

ts(rbi.csv, frequency = 6, start=c(2012,4))

这显然是错误的。 谢谢您的帮助。

【问题讨论】:

  • 以上数据仅适用于一名玩家吗?
  • @rnso 是的,该数据仅适用于一名玩家

标签: r forecasting


【解决方案1】:

你可以做这样的事情。 mydf 是你的数据框

year <- rep(c(2012:2014), each = 6)
month <- month.name[4:9]

mydf$time <- paste(month, " ", year, sep = "")

#   RBI    BA   OBP           time
#1    7 0.284 0.376     April 2012
#2   10 0.400 0.469       May 2012
#3   17 0.317 0.398      June 2012
#4   13 0.304 0.398      July 2012
#5    6 0.263 0.323    August 2012
#6   13 0.284 0.350 September 2012
#7   10 0.286 0.355     April 2013
#8    1 0.231 0.268       May 2013
#9    7 0.339 0.471      June 2013
#10   7 0.223 0.273      July 2013
#11  13 0.280 0.355    August 2013
#12  11 0.278 0.307 September 2013
#13  10 0.307 0.391     April 2014
#14   7 0.200 0.239       May 2014
#15   5 0.235 0.313      June 2014
#16  11 0.349 0.390      July 2014
#17   7 0.265 0.308    August 2014
#18   7 0.191 0.224 September 2014

数据

mydf <- structure(list(RBI = c(7L, 10L, 17L, 13L, 6L, 13L, 10L, 1L, 7L, 
7L, 13L, 11L, 10L, 7L, 5L, 11L, 7L, 7L), BA = c(0.284, 0.4, 0.317, 
0.304, 0.263, 0.284, 0.286, 0.231, 0.339, 0.223, 0.28, 0.278, 
0.307, 0.2, 0.235, 0.349, 0.265, 0.191), OBP = c(0.376, 0.469, 
0.398, 0.398, 0.323, 0.35, 0.355, 0.268, 0.471, 0.273, 0.355, 
0.307, 0.391, 0.239, 0.313, 0.39, 0.308, 0.224)), .Names = c("RBI", 
"BA", "OBP"), class = "data.frame", row.names = c("1", "2", "3", 
"4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", 
"16", "17", "18"))

【讨论】:

    【解决方案2】:

    用图预测:

    mydf$month = as.numeric(rownames(mydf))
    
    mydf$scaledrbi = scale(mydf$RBI)
    mydf$scaledba = scale(mydf$BA)
    mydf$scaledobp = scale(mydf$OBP)
    
    mm = melt(mydf[,-(1:3)], id='month')
    
    ggplot(mm, aes(x=month, y=value, group=variable, color=variable))+stat_smooth()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-21
      • 2015-05-03
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2020-06-27
      • 2016-07-26
      相关资源
      最近更新 更多