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 :
http://www.springerlink.com/content/...ext.pdf?page=1
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.
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 !
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`}
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.
Appreciate your help.
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,
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 ??
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;
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.
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.
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.
Waiting for reply ..
Thank you.
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.
Thanks a lot in advance.
Tweet |