Skip to content

Help with function "fitdistr" in "MASS"

7 messages · Saji Ren, Brian Ripley, Bernardo Rangel Tura +1 more

#
Hi, R users:

I want to fit my data into a normal distribution by using the command
"fitdistr" in "MASS".
I changed my data class from "ts" to "numeric" by
but after using "fitdistr", I got the result below
mean    sd 
  NA     NA  
 (NA)   (NA) 

the help doc of "fitdistr" does not mention anything about that, thus I need
your help.

Thank you in advanced,
Saji from Shanghai
#
I check my data again, and find that:
1. when the class of "mydata" is ts, I can't compute the sd of it. R returns
'NA'.
2. when I change the class from ts into numeric, R still can't compute the
sd of the data.

Any suggestion?
#
Please read the footer of this message.  ?fitdistr says

        x: A numeric vector.

and setting the class does not make it a numeric vector (it is just a 
label).  And fitdistr early on does

     if (missing(x) || length(x) == 0L || mode(x) != "numeric")
         stop("'x' must be a non-empty numeric vector")

so you do have a non-empty numeric vector.

It is likely that your data contains NAs, in which case the quoted 
result is correct.  But despite the posting guide we have no details 
of your 'mydata' and have to guess.
On Sat, 2 Jan 2010, Saji Ren wrote:

            
The help page is not intended to be a very basic statistics/R textbook.

  
    
#
On Sat, 2010-01-02 at 23:20 -0800, Saji Ren wrote:
Hi Sajj,

You hava NA in your data

try: fitdistr(na.exclude(mydata),"normal")
1 day later
#
Thank you,man. the problem solved.
Plus. when I got the parameters of the data.
And I used the "truehist(mydata)" to get a histogram of the data,
How can I draw a line of the distribution of the estimated parameters in the
histogram plot?

for example:
mean         sd    
   4.052594   75.620350 
 ( 1.420743) ( 1.004617)
After that, I got the histogram of mydata.
And I want plot a extra line of the density of a normal distribution of
mean=4.052594 and sd=75.620350 in the histogram plot?

thank you
Bernardo Rangel tura wrote:

  
    
#
Saji Ren wrote:
add this:

curve(dnorm(x, mean=4.052594, sd=75.620350), add=TRUE)

  -Peter Ehlers