predicting values into the future
Thank you Bill and Gabor:
I do have a few years of fish sizes data (from larvae to juvenile). If I melt them together how can I create the best model to predict future weights. My weeks go up to 16 right now, but I want to predict weights for week 17 to 20. Based on both of you examples it was easy to fit a model with one year but I can't figure out how to create a model with all the years together. Perhaps my data isn't organized the correct way. See the data below:
mydf <- read.table(textConnection("first second third fourth fifth sixth seventh
0.08 0.003 0.1 0.003 0.003 0.003 0.002
0.3 0.11 0.6 0.06 0.13 0.02 0.12
1.78 0.33 2.1 0.26 0.69 0.23 0.34
2.91 0.63 4 0.76 1.51 0.87 1.08
4.4 1.51 6.2 1.63 2.57 1.27 1.91
5.5 2.34 8.17 2.49 3.2 2.65 2.8
6.69 3.3 9.64 3.6 5 3.91 4.17
7.8 5 12.1 5.5 6.2 4.9 5.2
9.1 6.2 15 7 7.7 6.3 6.7
10.6 7.7 16.5 8.5 9.2 7.8 8.2
12.1 9.2 18 10 11.6 9.4 9.7
13.6 12.2 19.5 12.9 13.3 10.9 11.2
16.8 13.7 22.2 14.4 15 12.9 13.2
18 15.7 23.7 15.9 16 13.9 14.2
20 16.7 26 16.9 16 17.2 17.9
21 18 27.2 18.1 17 18.3 19.1"),header=T)
mydf
mydf$week <- 1:16
mydf <- melt(mydf)
colnames(mydf) <- c('week','year','weights')
attach(mydf)
--- On Sun, 4/5/09, Bill.Venables at csiro.au <Bill.Venables at csiro.au> wrote:
From: Bill.Venables at csiro.au <Bill.Venables at csiro.au> Subject: RE: [R] predicting values into the future To: mazatlanmexico at yahoo.com, r-help at stat.math.ethz.ch Date: Sunday, April 5, 2009, 12:09 AM Here is a bit of an exploration of your data but first a couple of notes. * the information about Excel is probably a bit superfluous here. Some of us have no idea about Excel, and rather hope it can stay that way. * With such a short series, you don't stand much chance of fitting a time series model such as with arima. It's clearly not stationary, too. If you had multiple growth curves you may stand some chance of fitting a correlated model, but with just one, I don't think so. For now, I think you just may have to make the hopeful assumption of independence. You might like to look at this.
________________________________
weightData <- data.frame(weight =
c(2.1,2.4,2.8,3.6,4.1,5.2,6.3),
week = 1:7)
plot(weight ~ week, weightData)
plot(log(weight) ~ week, weightData)
### clearly the log plot seems to linearise things.
### Try an non-linear regression:
wModel <- nls(weight ~ alpha + beta*exp(gamma*week),
weightData,
start = c(alpha = 0.0, beta = 1, gamma =
0.2), trace = TRUE)
#### you should look at the residuals from this to see if
the assumptions
#### look reasonable. With only 7, you can't see much,
though.
#### now suppose you want to predict for another 3 weeks:
newData <- data.frame(week = 1:10)
newData$pweight <- predict(wModel, newData)
plot(pweight ~ week, newData, pch = 4, col =
"red", ylab = "Weight", xlab =
"Week")
with(weightData, points(week, weight))
#### looks OK to me (thought fish cannot keep on growing
exponentailly
#### forever - this is clearly a model with limitations and
you have to
#### be careful when pushing it too far).
#### finally predict on a more continuous scale and add in
the result as
#### a blue line.
lData <- data.frame(week = seq(1, 10, len = 1000))
with(lData, lines(week, predict(wModel, lData), col =
"blue"))
#### Now that we have over-analysed this miniscule data set
to blazes,
#### perhaps it's time for a beer!
__________________________________
Bill Venables
http://www.cmis.csiro.au/bill.venables/
-----Original Message-----
From: r-help-bounces at r-project.org
[mailto:r-help-bounces at r-project.org] On Behalf Of Felipe
Carrillo
Sent: Sunday, 5 April 2009 4:13 PM
To: r-help at stat.math.ethz.ch
Subject: [R] predicting values into the future
Hi:
I have usually used the GROWTH() excel function to do this
but now want to see if I can do this with R.
I want to predict values into the future, possibly with the
predict.arima Function.
I have the following weekly fish weight averages:
weight <-
c("2.1","2.4","2.8","3.6","4.1","5.2","6.3")
week <-
c("1","2","3","4","5","6","7")
I would like to predict what the weight will be by week 10
based on my weight values and make a line plot of all the
weights(including the predicted values). I have two
questions:
1- Should the predicted values be linear or exponential?
2- Is the predict.arima function appropriate to do this?
Thanks in advance.
Felipe D. Carrillo
Supervisory Fishery Biologist
Department of the Interior
US Fish & Wildlife Service
California, USA
______________________________________________
R-help at r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide
http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained,
reproducible code.