R的季节预测

时间:2014-11-05 00:17:02

标签: r forecasting

我正在尝试使用前几季的数据来预测个别棒球运动员的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))

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

2 个答案:

答案 0 :(得分:0)

你可以这样做。 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"))

答案 1 :(得分:0)

使用图表预测:

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()

enter image description here