# Thread: Generating Skewed Normal Distributions

1. ## Generating Skewed Normal Distributions

I want to generate Random Normal Distributions with specific degrees of Skewness and Kurtosis. So far I have looked at the following two approaches:

1. Azzalini approach:
http://azzalini.stat.unipd.it/SN/faq.html

I was able to generate a skewed distribution but the skewness parameter was not the same as desired. On analyzing the generated distribution via SAS, the skewness parameter was different from the input parameters that were given to the generator.

2. Fleishman Transformation method :

It seems that this approach can only generate distributions for a narrow range of skewness and kurtosis. This is not the case for my problem.

Does anybody have any other ideas about how this can be done? Any help would be greatly appreciated.

Thanks.

2. Originally Posted by kanny_g
I want to generate Random Normal Distributions with specific degrees of Skewness and Kurtosis. So far I have looked at the following two approaches:

1. Azzalini approach:
http://azzalini.stat.unipd.it/SN/faq.html

I was able to generate a skewed distribution but the skewness parameter was not the same as desired. On analyzing the generated distribution via SAS, the skewness parameter was different from the input parameters that were given to the generator.

2. Fleishman Transformation method :

It seems that this approach can only generate distributions for a narrow range of skewness and kurtosis. This is not the case for my problem.

Does anybody have any other ideas about how this can be done? Any help would be greatly appreciated.

Thanks.

Can you provide me with some specific values (combinations) of skew and kurtosis that you're trying to obtain.

3. Sure. Here it is. I am looking at a skewness range of -15 to +15 and a kurtosis range of -6 to +230. These numbers look big but I got them analyzing real data through SAS. Am I missing something here?

Skewness Kurtosis
-10.5 113.9
0.78 0.4
1.71 3.0
1.19 2.2
-6.76 47.0
0.3 3.3
6.13 57.9
-10.3 112.0
-14.9 232.0

Thanks a ton !

4. Originally Posted by kanny_g
Sure. Here it is. I am looking at a skewness range of -15 to +15 and a kurtosis range of -6 to +230. These numbers look big but I got them analyzing real data through SAS. Am I missing something here?

Skewness Kurtosis
-10.5 113.9
0.78 0.4
1.71 3.0
1.19 2.2
-6.76 47.0
0.3 3.3
6.13 57.9
-10.3 112.0
-14.9 232.0

Thanks a ton !
One more quick question. Can you provide the samples sizes of your data for each combination.

Note: I'm checking a couple of options.

5. Sample size is typically around 250 data points. Here is the complete data:

SampleSize Mean SD Skewness Kurtosis
255 -9.74 130.7 -10.5 113.9
148 -1.41 31.3 0.78 0.4
204 -4.32 33.4 1.19 2.2
204 -4.55 22.6 0.3 3.3
259 -16.4 123.8 -10.3 112.0
247 12.08 96.3 -13.3 199.1
204 -6.87 24.5 6.13 57.9

These are parameters for some data points in the the real data I analyzed. I need to simulate data seperately for each of these data points.

6. Originally Posted by kanny_g
Sample size is typically around 250 data points. Here is the complete data:

SampleSize Mean SD Skewness Kurtosis
255 -9.74 130.7 -10.5 113.9
148 -1.41 31.3 0.78 0.4
204 -4.32 33.4 1.19 2.2
204 -4.55 22.6 0.3 3.3
259 -16.4 123.8 -10.3 112.0
247 12.08 96.3 -13.3 199.1
204 -6.87 24.5 6.13 57.9

These are parameters for some data points in the the real data I analyzed. I need to simulate data seperately for each of these data points.

Okay, the variables with the large values of skew and kurtosis present a problem because they are very close the lower boundary condition where:

Kurtosis>= Skew^2 - 2.

It is difficult to find a quick and easy algorithm to generate those distributions. I would say try the Johnson system, perhaps.

For the distribuitons with the small values of skew and kurtosis I can get those with 5-th order polynomials. Just extend the Fleishman coefficient polynomial out two more terms and use these coefficients that I solved:

skew = 0.3; kurtosis = 3.3
{c1= -0.05243171921603643`, c2= 0.7811026700180478`,
c3= 0.06461180232859669, c4= 0.06523276580688626`
c5= -0.004060027704186753, c6= 0.00044450309226507775`}

skew 0.78; kurtosis 0.4
{c1 = -0.16355778133464555`, c2= 1.115366327438384`,
c3 = 0.1739413624522455`, c4= -0.07233159314494611`,
c5= -0.003461193705866647 c6= 0.004976296626617393`}

skew = 1.71, kurtosis = approx (3.0)
{c1 = -0.3436788177388882`, c2= 0.8432733968093992`,
c3 = 0.4075746641971442`, c4 = 0.009053205398915984`
c5=-0.02129861548608534`, c6= 0.002515834784531765`}

skew = 1.19, kurtosis 2.2
{c1= -0.2222845833539151`, c2 = 0.974167381521758`,
c3 = 0.24822011414014425`, c4=-0.02417034140588818`,
c5= -0.00864517692874305`, c6=0.003774382534529535`}

7. Thanks !...One more question...How did you solve for the Fleishman coefficients ? Can you share the theory behind that? As I mentioned earlier, I have to solve for these coefficients for a lot of data points.

8. Originally Posted by kanny_g
Thanks !...One more question...How did you solve for the Fleishman coefficients ? Can you share the theory behind that? As I mentioned earlier, I have to solve for these coefficients for a lot of data points.

I published an article a few years ago in Computational Statistics and Data Analysis that extended the Fleishman coefficient model from a 3rd order polynomial to a 5-th order polynomial i.e. based on six moments. It broadens the parameter space in skew and kurtosis plane.

I also derived the pdf and cdf for these distributions as well - in an article published in Journal of Statistical Computation and Simulation.

I don't think you'll be able to get the articles on line. So, if you want them just send me a private note an I'll send them to you.

9. ## normal distribution

Hi,

I have a similar question (it is actually a simpler one).

I want to generate probability distributions (values between 0 and 1 and their sum is 1) according to the normal distribution. Let's say I want to generate a distribution of size 10, with mean 0.5 and Standard Deviation of 0.3.

Do you know a matlab command to do it ??

10. Is this matlab function does the work ??

function result = generateDist(size, mean, sigma)
x = 0 : (1/size) : 1;
temp = normpdf(x,mean,sigma);
Sum = sum(temp);
result = temp./Sum;

11. Originally Posted by mister_man2424
Hi,

I want to generate probability distributions (values between 0 and 1 and their sum is 1) according to the normal distribution. Let's say I want to generate a distribution of size 10, with mean 0.5 and Standard Deviation of 0.3.

Any (normal) random number generator will produce numbers that will lie outside your imposed limits of 0 and 1 - given a normally distributed variable with mean of 0.5 and standard deviation of 0.3.

Note: I'm setting aside your restriction that the sum of random deviates equal 1 - which even complicates the matter even more.

12. Thanks Dragan, but I forgot to tell that the values should be picked uniformly. For example, if I want 5 values, they should correspond to 0, 0.2, 0.4, 0.6, 0.8.

13. ## Random sample from skew normal distribution using SAS

hello..
I want to generate 1000 samples of size 100 from Skewed normal distribution with skewness parameter-5 and +5, mean 0 and sigma 1. I also want to generate 1000 samples of size 100 from Skewed t distribution. It will be great if you can provide me the SAS code for this.

Thank you.

14. ## Re: Generating Skewed Normal Distributions

Originally Posted by Dragan
I published an article a few years ago in Computational Statistics and Data Analysis that extended the Fleishman coefficient model from a 3rd order polynomial to a 5-th order polynomial i.e. based on six moments. It broadens the parameter space in skew and kurtosis plane.

I also derived the pdf and cdf for these distributions as well - in an article published in Journal of Statistical Computation and Simulation.

I don't think you'll be able to get the articles on line. So, if you want them just send me a private note an I'll send them to you.

Hi, could you tell me the titles of your articles? Thanks.

15. ## Generating Closed Skew Normal Distribution

Hi Everyone,

I have a similar problem. I want to generate multivariate Closed Skew Normal distribution. Is there any R package that does this job? Or is there any program that generates samples from Closed Skew Normal Distribution.

Any help would be appreciated.