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.
>>
>>
>>
>> Ahmed Attia, Ph.D.
>> Agronomist & Soil Scientist
>>
> --
> Sarah Goslee
> http://www.functionaldiversity.org
Seems like you need to start by learning R. Lots of good online tutorials exist -- have you spent time with any? And possibly also spend some time with a basic statistics text or a statistical expert to clarify your goals and methodology. Cheers, Bert Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Fri, Jun 30, 2017 at 8: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. >>> >>> >>> >>> Ahmed Attia, Ph.D. >>> Agronomist & Soil Scientist >>> >> -- >> Sarah Goslee >> http://www.functionaldiversity.org > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.
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.
> On Jun 30, 2017, at 9:13 AM, Sarah Goslee <sarah.goslee at gmail.com> wrote: > > 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 toAlso. Nothing attached made it back to the list readership, although it probably did make it to Sarah Goslee. Attachments should have the file extension `.txt` so that your mail client can give it the proper MIME-type. The only MIME-type that the server accepts for data is 'plain text". So, .... You should also spend more time reading the Mailing list Info page and the Posting Guide. -- David.>> 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. > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > 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.David Winsemius Alameda, CA, USA