M
mmoroz
I tried a couple of standard ways to generate random numbers that
follow Student's t-distribution. Something is very wrong, and I don't
know what.
Start with a simple example. In column A, I put 1000 uniformly
distributed on (0,1) numbers, using RAND(). Then I apply to them the
function TINV. E.g., in cell B1, I have
=IF(A1<0.5,-TINV(2*A1,df),TINV(2*(1-A1),df))
where df is my degrees of freedom. I fixed df = 5.
I obtain a column of (presumably) t-distributed numbers. I then check
their excess kurtosis (as calculated by the KURT() function). As I was
repeating this exercise using new random numbers, I found the sample
kurtosis jumps around ~2.9 with a standard deviation of ~1.1. The
theoretical value for the excess kurtosis of t distribution is 6 / (df
- 4) = 6, and the theoretical stdev of the sample kurtosis itself is
sqrt(24/1000) ~ 0.15. So I am puzzled as to why the excess kurtosis is
so incredibly far off. Also puzzled by why it's so unstable.
I then replaced Excel's rand() worksheet function with the
Mersenne-Twister implementation in NtRand
http://www.numtech.com/NtRand/.
Similar result (the sample excess kurtosis jumps wildly but still very
far below the theoretical value of 6).
I then added another column of random uniform (0,1) numbers (in column
C), and tried using instead the formula:
=NORMSINV(A1)/SQRT(df/GAMMAINV(C1,df/2,2))
Similar result.
I tried usign 60,000 instead of 1000 numbers. Now the theoretical stdev
of the sample kurtosis is just 0.02.
Similar result.
I checked the variance and skewness, and those match their values ( df
/ df - 2 = 1.667 and 0 respectively) very closely.
I checked the normal distribution, and its kurtosis matches the
theoretical perfectly.
I know I'm doing something wrong, but what? =(
Thanks....
follow Student's t-distribution. Something is very wrong, and I don't
know what.
Start with a simple example. In column A, I put 1000 uniformly
distributed on (0,1) numbers, using RAND(). Then I apply to them the
function TINV. E.g., in cell B1, I have
=IF(A1<0.5,-TINV(2*A1,df),TINV(2*(1-A1),df))
where df is my degrees of freedom. I fixed df = 5.
I obtain a column of (presumably) t-distributed numbers. I then check
their excess kurtosis (as calculated by the KURT() function). As I was
repeating this exercise using new random numbers, I found the sample
kurtosis jumps around ~2.9 with a standard deviation of ~1.1. The
theoretical value for the excess kurtosis of t distribution is 6 / (df
- 4) = 6, and the theoretical stdev of the sample kurtosis itself is
sqrt(24/1000) ~ 0.15. So I am puzzled as to why the excess kurtosis is
so incredibly far off. Also puzzled by why it's so unstable.
I then replaced Excel's rand() worksheet function with the
Mersenne-Twister implementation in NtRand
http://www.numtech.com/NtRand/.
Similar result (the sample excess kurtosis jumps wildly but still very
far below the theoretical value of 6).
I then added another column of random uniform (0,1) numbers (in column
C), and tried using instead the formula:
=NORMSINV(A1)/SQRT(df/GAMMAINV(C1,df/2,2))
Similar result.
I tried usign 60,000 instead of 1000 numbers. Now the theoretical stdev
of the sample kurtosis is just 0.02.
Similar result.
I checked the variance and skewness, and those match their values ( df
/ df - 2 = 1.667 and 0 respectively) very closely.
I checked the normal distribution, and its kurtosis matches the
theoretical perfectly.
I know I'm doing something wrong, but what? =(
Thanks....