From: David Winsemius <dwinsemius_at_comcast.net>

Date: Fri, 25 Jun 2010 08:28:45 -0400

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. Received on Fri 25 Jun 2010 - 12:31:47 GMT

Date: Fri, 25 Jun 2010 08:28:45 -0400

On Jun 25, 2010, at 7:09 AM, phani kishan wrote:

> On Fri, Jun 25, 2010 at 1:54 PM, Paul Hiemstra

*> <p.hiemstra_at_geo.uu.nl> wrote:
**>
**>> On 06/25/2010 10:02 AM, phani kishan wrote:
**>>
**>>> Hey,
**>>> I have a data frame x which consists of say 10 vectors. I
**>>> essentially want
**>>> to find out the best fit exponential smoothing for each of the
**>>> vectors.
**>>>
**>>> The problem while I'm getting results when i say
**>>>
**>>>
**>>>> lapply(x,ets)
**>>>>
**>>>>
**>>> I am getting an error when I say
**>>>
**>>>
**>>>> myprint
**>>>>>
**>>>>>
**>>>> function(x)
**>>> {
**>>> for(i in 1:length(x))
**>>> {
**>>> ets(x[i],model="AZZ",opt.crit=c("amse"))
**>>>
**>>>
**>> Hi,
**>>
**>> Please provide a reproducible example, as stated in the posting
**>> guide. My
**>> guess is that replacing x[i] by x[[i]] would solve the problem.
**>> Double
**>> brackets return a vector in stead of a data.frame that has just
**>> column i.
**>>
**> Hey Paul,
**> As requested.
**> My example data frame
**>
**> sdata:
**> SKU1 SKU2 SKU3 SKU4
**> 1 583.8 574.6 1106.9
**> 648.1
**> 2 441.7 552.8 1021.3
**> 353.6
**> 3 454.2 555.7 998.3
**> 306.4
**> 4 569.7 507.6 811.1
**> 360.7
**> 5 512.3 620.0 1046.3
**> 713.9
**> 6 580.8 668.2 732.0
**> 490.9
**> 7 648.5 766.9 653.4
**> 422.1
**> 8 617.4 657.1 602.1
**> 190.8
**> 9 826.8 767.3 640.5
**> 324.1
**> 10 1163.0 657.6 429.6
**> 181.1
**> 11 643.5 788.9 569.1
**> 331.9
**> 12 846.9 568.6 425.1
**> 224.6
**> 13 580.7 582.9 434.2
**> 226.9
**>
**> now when I apply
**> lapply(sdata,ets)
**> I get a result as:
**> $SKU1
**> ETS(A,N,N)
**>
**> Call:
**> ets(y = x, model = "AZZ")
**>
**> Smoothing parameters:
**> alpha = 0.3845
**>
**> Initial states:
**> l = 533.3698
**>
**> sigma: 181.7615
**>
**> AIC AICc BIC
**> 172.6144 173.8144 173.7443
**>
**> $SKU2
**> ETS(A,N,N)
**>
**> Call:
**> ets(y = x, model = "AZZ")
**>
**> Smoothing parameters:
**> alpha = 0.5026
**>
**> Initial states:
**> l = 567.821
**>
**> sigma: 86.7074
**>
**> AIC AICc BIC
**> 153.3704 154.5704 154.5003
**>
**> $SKU3
**> ETS(A,A,N)
**>
**> Call:
**> ets(y = x, model = "AZZ")
**>
**> Smoothing parameters:
**> alpha = 1e-04
**> beta = 1e-04
**>
**> Initial states:
**> l = 1189.2221
**> b = -64.3776
**>
**> sigma: 85.4153
**>
**> AIC AICc BIC
**> 156.9800 161.9800 159.2398
**>
**> $SKU4
**> ETS(A,A,N)
**>
**> Call:
**> ets(y = x, model = "AZZ")
**>
**> Smoothing parameters:
**> alpha = 1e-04
**> beta = 1e-04
**>
**> Initial states:
**> l = 566.9001
**> b = -27.8818
**>
**> sigma: 127.2654
**>
**> AIC AICc BIC
**> 167.3475 172.3475 169.6073
**>
**> Now when I run the same using:
**> myfun<-function(x)
**> {
**> for(i in 1:length(x))
**> {
**> ets(x[i])
**>>
**>> }
**> }
**> I got the error as mentioned before. Now on modifying it to
**> myfun<-function(x)
**> {
**> for(i in 1:length(x))
**> {
**> return(ets(x[[i]])
**> }
**> }
**> I only got the output as
**> ETS(A,N,N)
**>
**> Call:
**> ets(y = x[[i]], model = "AZZ", opt.crit = c("amse"))
**>
**> Smoothing parameters:
**> alpha = 0.3983
**>
**> Initial states:
**> l = 516.188
**>
**> sigma: 181.8688
**>
**> AIC AICc BIC
**> 172.6298 173.8298 173.7597
**>
**> I think its considering whole dataframe as a series.
*

Doubtful. It is quietly calculating all of the requested models but you did not do anything with them inside the loop (which is a function). You could have assigned them to something permanent or printed them (or both):

ets_x <- list()

*> for(i in 1:length(x))
**> {
**> print(ets(x[[i]]); ets_x <- c(ets_x, ets(x[[i]])
**> }
**> }
*

ets_x

> As said my objective it to essentially come up with a best

*> exponential model
**> for each of the SKU's in the dataframe. However I want to be able to
**> extract
**> information like mse, mape etc later. So kindly suggest.
**>
**> Thanks in advance,
**> Phani
**>
**>
*

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. Received on Fri 25 Jun 2010 - 12:31:47 GMT

Archive maintained by Robert King, hosted by
the discipline of
statistics at the
University of Newcastle,
Australia.

Archive generated by hypermail 2.2.0, at Fri 25 Jun 2010 - 12:40:37 GMT.

*
Mailing list information is available at https://stat.ethz.ch/mailman/listinfo/r-help.
Please read the posting
guide before posting to the list.
*