2014-11-05 121 views
0

我正在尝试使用上一季的数据来预测单个棒球选手的打点数。目前,我每3年使用6个月的数据(18个数据点)。R的季节性预测

我试图找出一种方法来设置一个时间序列,将认识到,数据是四月 - (2014 2012年,2013年)九月,然后预测4月 - 2015年

九月下面是数据的样本,我使用:

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为4月 - 2012年9月, 7-12为4月 - 2013年9月, 13-18是四月金正日动态 - 2014年

月当我试图做到这一点我想建立一个时间序列是这样的:

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

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

+0

是上面只有一个球员的数据? – rnso 2014-11-05 01:03:33

+0

@rnso是的,该数据仅适用于一名球员 – smortime 2014-11-05 01:23:07

回答

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 

DATA

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