I'm fitting the t-distribution to financial data and I know of two methods to do this using R:

(A) fitdistr(mydata, "t")


        m              s              df     
  2.608111e-05   8.305111e-03   4.425103e+00 
 (6.110566e-04) (6.754816e-04) (1.375033e+00)

I believe this is using the MLE method.

(B) stdFit(MYDATA)


mean           sd           nu 
3.079664e-05 1.127648e-02 4.228209e+00 

They don't look too far apart but there still is a difference.


1. What method does (B) use to estimate the parameters? Is it the method of moments?

2. Which method provides a higher level of accuracy?

3. I know that mean is a location parameter, sd is a scale parameter and nu is degrees of freedom. Do these parameters have a definition of some sort, e.g a formula, or are they simply referred to as location, scale and degrees of freedom?

4. How can I show that the moments of the t distribution are the following?

mean = μ,

variance = enter image description here

skewness = 0

kurtosis = enter image description here

I've researched this online and many have said it is very complicated. Moment generating function does not work and my knowledge of methods of moments and MLE is very limited.


1 Answer 1


fGarch::stdFit uses the same method as MASS:fitdistr: maximum likelihood estimation. However, they use different parametrizations of the likelihood. The parameters in the output are linked in this way:

$$\text{df} = \nu$$ $$\text{mean} = m$$ $$\text{sd} = \sqrt{s^2 \frac{\nu}{\nu-2}}$$

The one on the left (fGarch::stdFit) is a parametrization in terms of the moments, while the one on the right (MASS::fitdistr) is in terms of the transformation from the usual standard Student-t. They are equivalent, but the moment parametrization may be less confusing (I have often seen the mistake that scale parameter = standard deviation, which is not the case for Student-t, unlike the normal distribution).

For the Student-t distribution, the MLE is obtained from a numerical optimization of the likelihood. As such, it requires a starting guess for the parameters, and when you don't provide one, a default is computed for you. MASS::fitdistr uses an initial guess for location using the median, one for the scale using interquartile range, and 10 for the degrees of freedom. fGarch::stdFit bases its initial guess on the mean, standard deviation, and 4 degrees of freedom.

Since they use the same general method (aside from the initial guess and the parametrization),the results should be essentially the same in general, once you convert from one parametrization to the other. They may vary depending on which initial guess is more appropriate for your data, and whatever (different) numerical difficulties may arise during the optimization.

Your 4th question feels like a different question which should be asked separately.

  • $\begingroup$ I see, since I've already used stdFit, I'll just carry on using that as my project is based on moments. Just a few follow up questions: How does stdFit use the moments for parametrization, in terms of getting that initial assessment to the output? If standard deviation is not a scale parameter then what would it be? $\endgroup$
    – Humza Ali
    Mar 24, 2017 at 5:35
  • $\begingroup$ @Humza Ali You can look inside the function to get the full details (e.g. by calling edit (stdFit)). I didn't say that standard deviation "wasn't a scale parameter"; what I said was that the scale parameter $s$, as in $X = m + sT$ for standard Student-t $T$, is not the standard deviation of $X$ (it's given by the expression involving $\nu$ above). $\endgroup$
    – Chris Haug
    Mar 24, 2017 at 9:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.