[R] Predict

Sarah Goslee sarah.goslee at gmail.com
Fri Jun 30 18:13:09 CEST 2017


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.



More information about the R-help mailing list