I've got some data which I want to fit it to a skew normal distribution given by


where $\phi(z)=\frac{1}{\sqrt{2\pi}}e^{-\frac{1}{2}z^2}$,$\Phi(z)=\int_{-\infty}^{z}\phi(t)dt$ and $\lambda$ is a factor that control skewness.

Question is: how should i do to fit my data to such a formula?Other words ,which method can i use to estimate the $\mu,\sigma$ and $\lambda$?

Any insights or suggestions will be appreciated!


1 Answer 1


You can use MLE (maximum likelihood estimation), see also the links in comments, where there are given some formulas for method of moments. The easy way out is to use the sn package in R (on CRAN). sn use MLE (maximum likelihood estimation).

Since you didn't give any data or context, I will just simulate some data, and show the use of the package:

    set.seed(7*11*13) #My public seed
    testdata <- data.frame(X=rsn(100, omega=3, alpha=0.5))
    mod <- selm(X ~ 1, data=testdata)
    Call: selm(formula = X ~ 1, data = testdata)
    Number of observations: 100 
    Family: SN 
    Estimation method: MLE
    Log-likelihood: -249.2581 
    Parameter type: CP 
    CP residuals:
         Min       1Q   Median       3Q      Max 
    -6.54250 -2.11290 -0.01777  2.18490  8.39505 
    Regression coefficients
         estimate std.err z-ratio Pr{>|z|}
    mean   1.7614  0.2927  6.0170        0
    Parameters of the SEC random component
           estimate std.err
    s.d.    2.92717   0.208
    gamma1  0.06278   0.257  
  • 1
    $\begingroup$ To add one thing: to get the parameters in the parameterization used by the sn::dsn density function for the skew normal in the sn package, you can use extractSECdistr(mod). The model summary shows a different parameterization. $\endgroup$
    – Björn
    Jul 23, 2021 at 14:33

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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