Showing posts with label Normal Uniform Exponential Matlab plot distributions. Show all posts
Showing posts with label Normal Uniform Exponential Matlab plot distributions. Show all posts

Sunday, June 26, 2011

Probability Distributions

I am playing around with various discrete and continuous distributions for a statistics course assignment. So, I thought of spending few extra minutes and make a matlab script that would plot all of these. Below is the simple matlab script that plots Uniform, Exponential, Normal distributions. The Normal distribution can be generated using inverse transform, box-muller method and the most famous theorem in statistics: The Central Limit theorem.

I want to extend the script to take various parameters and plot more distributions like weibull, poisson etc. but I dont have time right now!



Code:

%% Uniform distribution using 100 instances
u1 = rand(1,100);


%% Uniform distribution using 1000 instances
u2 = rand(1,1000);

%% Exponential distribution using 100 instances
e1 = -log(u1);

%% Exponential distribution using 1000 instances
e2 = -log(u2);

%% Normal distribution using inverse transform method
n1 = norminv(u2,0,1);

%% Normal distribution using box-muller method
n2 = sqrt(-2*log(rand(1,1000))).*cos(2*pi*rand(1,1000));

%% PLOT1 ( Uniform, Exponential, Normal distributions )
figure(1),subplot(3,2,1),hist(u1,10),title('Uniform using 100 instances');
figure(1),subplot(3,2,2),hist(u2,10),title('Uniform using 1000 instances');
figure(1),subplot(3,2,3),hist(e1,10),title('Exponential using 100 instances');
figure(1),subplot(3,2,4),hist(e2,10),title('Exponential using 1000 instances');
figure(1),subplot(3,2,5),hist(n1,10),title('Normal using inverse transform method');
figure(1),subplot(3,2,6),hist(n2,10),title('Normal using Box-Muller method');

%% Triangular distribution
t1 = rand(1,1000);
t2 = rand(1,1000);
t3 = t1 + t2;

%% Central Limit Theorem
n = 12;
for i = 1:n
    t(i,:) = rand(1,1000);
end
n3 = sum(t);

%% PLOT2 ( Trinagular and Normal distributions )
figure(2),subplot(1,2,1),hist(t3),title('Traingular distribution');
figure(2),subplot(1,2,2),hist(n3),title('Normal using central limit theorem');

%% Save to eps files
figure(1),print('-deps','1.eps');
figure(2),print('-deps','2.eps');