[R] fitting distributions using fitdistr (MASS)

Prof Brian Ripley ripley at stats.ox.ac.uk
Tue May 3 16:36:45 CEST 2011


On Tue, 3 May 2011, Usha wrote:

> Please guide me through to resolve the error message that I get
>
> this is what i have done.
>
>> x1<- rnorm(100,2,1)
>> x1fitbeta<-fitdistr(x1,"beta")
> Error in fitdistr(x1, "beta") : 'start' must be a named list

You have many errors, starting with not reading the posting guide. 
But the main ones seem to be:

(A) A beta distribution has support (0,1).  I bet your data are not 
confined to that interval.  If true (and you failed to give the 
reproducible example the posting guide asked for), then the 
log-likelihood is -Inf ('not finite') for any value of the parameters.

fitdistr() is support software for a book: it is not a tutorial on the 
basics of maximum-likelihood estimation.

(B) As the help says

      For the following named distributions, reasonable starting values
      will be computed if ‘start’ is omitted or only partially
      specified: ‘"cauchy"’, ‘"gamma"’, ‘"logistic"’, ‘"negative
      binomial"’ (parametrized by ‘mu’ and ‘size’), ‘"t"’ and
      ‘"weibull"’.

Since beta is not one of those, you need to specify starting values.

> Yes, I do understand that sometime for the distribution to converge to the
> given set of data, it requires initial parameters of the distribution, to
> start off with. Hence, i tried this
>
>> x1fitbeta<-fitdistr(x1,densfun=dbeta, start=list(shape1=2,shape2=3))
> Error in optim(x = c(1.89074018737135, 1.52649293971978, 2.19950245230280,
> :
>  initial value in 'vmmin' is not finite
>
> I tried with "f" and "chi-square" what i did with  "t". Please find below
> the output.
>
>> x1fitt<-fitdistr(x1,"t")
> Error in fitdistr(x1, "t") : optimization failed
> In addition: Warning messages:
> 1: In log(s) : NaNs produced
> 2: In log(s) : NaNs produced
> 3: In log(s) : NaNs produced
> 4: In log(s) : NaNs produced
> 5: In log(s) : NaNs produced
> 6: In log(s) : NaNs produced
>
>> x1fitt<-fitdistr(x1,"t", df=1)
> Warning messages:
> 1: In log(s) : NaNs produced
> 2: In log(s) : NaNs produced
>
>
>> x1fitf<-fitdistr(x1,"f",start=list(df1=2,df2=3))
> Warning message:
> In df(x, df1, df2, log) : NaNs produced
>> x1fitf
>      df1         df2
>  5.6733242   4.4962519
> (1.3407776) (0.9016752)

No guarantee that your x1 values are positive, either.

>
>> x1fitchi<-fitdistr(x1,"chi-squared",df=3)
> Error in fitdistr(x1, "chi-squared", df = 3) :
>  'start' must be a named list
>
> It is the same as what i gave for beta?!!
>
>> x1fitbeta<-fitdistr(x1,"beta", start=list(shape1=2,shape2=3))
> Error in optim(x = c(1.89074018737135, 1.52649293971978, 2.19950245230280,
> :
>  initial value in 'vmmin' is not finite
>
> What is the right syntax....why do I get error for only some, what are the
> exceptions?
> I dont know how rectify this error. please resolve
>
> Thanks in advance.
>
> --
> View this message in context: http://r.789695.n4.nabble.com/fitting-distributions-using-fitdistr-MASS-tp3492103p3492103.html
> Sent from the R help mailing list archive at Nabble.com.
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> 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.
>

-- 
Brian D. Ripley,                  ripley at stats.ox.ac.uk
Professor of Applied Statistics,  http://www.stats.ox.ac.uk/~ripley/
University of Oxford,             Tel:  +44 1865 272861 (self)
1 South Parks Road,                     +44 1865 272866 (PA)
Oxford OX1 3TG, UK                Fax:  +44 1865 272595


More information about the R-help mailing list