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