Predict
Once again, you are over-writing your variable. This time, you are overwriting the entirety of Stand_Height with the timeseries of height. Perhaps you should spend some time with one of the good introductory R resources out there, and think a bit more about your procedure. Sarah
On Fri, Jun 30, 2017 at 11:23 AM, Ahmed Attia <ahmedatia80 at gmail.com> wrote:
Sorry for the confusion, here is the edited question.
The data= Stand_Height (attached) is recorded from 12/1/2009 to
12/31/2015 (25 observations) and the other dataset (leafbiom) is
recorded from 10/7/2009 to 12/29/2016 (daily observations).
I want to use the 25 observations of stand height to predict the daily
stand height from 10/7/2009 to 12/29/2016. The daily stand height will
be multiplied by leaf biomass to produce a new variable.
I agree that a loop is not needed, would the forecast library help or
should I use predict library.
Stand_Height=ts(Stand_Height$height,start=2009,end = 2016,
frequency =365)
plot(forecast(ets(Stand_Height),10))
a=seq(as.Date("2009-12-01"),by="weeks",length=11)
axis(1, at = a, labels = format(a, "%Y %b %d"), cex.axis=0.6)
#Error :$ operator is invalid for atomic vectors
Thanks
Ahmed Attia, Ph.D.
Agronomist & Soil Scientist
On Fri, Jun 30, 2017 at 10:37 AM, Sarah Goslee <sarah.goslee at gmail.com> wrote:
There are a bunch of things wrong here, although without a reproducible example I can't really fix most of them. - You're overwriting SH within the loop. - You're running the regression 2641 times, even though the result never changes. - You're never predicting from your linear model using the other data not in the regression. - Leaf biomass data is never used for anything. I would have thought that you would use leaf biomass as the predictor variable, not Date. - I'm not sure why you want the cumulative sum of stand height; that doesn't make sense to me. I'm guessing you want: height.model <- lm(height ~ leafbiomass, data = Stand_Height) pred.height <- predict(height.model, leafbiom) # not sure about the reasoning behind this SH <- cumsum(pred.height) You don't need a loop. Overwriting SH is the biggest R problem; the rest of my questions have to do with what your objective actually is, like what you are modeling and what you are doing with the predictions. But my sample code might be enough to get you headed in the right direction regardless. Sarah On Fri, Jun 30, 2017 at 9:27 AM, Ahmed Attia <ahmedatia80 at gmail.com> wrote:
Hi folks,
I have 25 stand height observations over 7 years period and daily
leafbiomass data during this period. I want to use the 25 plant height
observations as inputs and predict the daily stand height during the 7
years.
SH=matrix(data=NA , nrow = 2641, ncol = 1)
for (i in 1:2641) {
SH<- predict(lm(height~Date, data=Stand_Height));
dl=leafbiom$Date[i-1];
de=leafbiom$Date[i];
SH[i]=sum(SH[leafbiom$Date==de&leafbiom$Date==dl])
}
SH
The SH output is the prediction of Stand height in 25 observations
only and provides NA for the remaining 2616 iterations.
Thanks for your help.