[R] MASS fitdistr with plyr or data.table?

Justin Haynes jtor14 at gmail.com
Wed Apr 27 22:55:57 CEST 2011


I am trying to extract the shape and scale parameters of a wind speed
distribution for different sites.  I can do this in a clunky way, but
I was hoping to find a way using data.table or plyr.  However, when I
try I am met with the following:

set.seed(144)
weib.dist<-rweibull(10000,shape=3,scale=8)
weib.test<-data.table(cbind(1:10,weib.dist))
names(weib.test)<-c('site','wind_speed')

fitted<-weib.test[,fitdistr(wind_speed,'weibull'),by=site]

Error in class(ans[[length(byval) + jj]]) = class(testj[[jj]]) :
  invalid to set the class to matrix unless the dimension attribute is
of length 2 (was 0)
In addition: Warning messages:
1: In dweibull(x, shape, scale, log) : NaNs produced
...
10: In dweibull(x, shape, scale, log) : NaNs produced

(the warning messages are normal from what I can tell)

or using plyr:

set.seed(144)
weib.dist<-rweibull(10000,shape=3,scale=8)
weib.test.too<-data.frame(cbind(1:10,weib.dist))
names(weib.test.too)<-c('site','wind_speed')

fitted<-ddply(weib.test.too,.(site),fitdistr,'weibull')

Error in .fun(piece, ...) : 'x' must be a non-empty numeric vector

those sound like similar errors to me, but I can't figure out how to
make them go away!

to prove I'm not crazy:

fitdistr(weib.dist,'weibull')$estimate
   shape    scale
2.996815 8.009757
Warning messages:
1: In dweibull(x, shape, scale, log) : NaNs produced
2: In dweibull(x, shape, scale, log) : NaNs produced
3: In dweibull(x, shape, scale, log) : NaNs produced
4: In dweibull(x, shape, scale, log) : NaNs produced

Thanks

Justin



More information about the R-help mailing list