2014-01-24 91 views
0

我想通過比較三個RV和正態分佈總和的直方圖來證明CLT在matlab中。matlab中心極限定理

這裏是我的代碼:

clc;clear; 
len = 50000; 

%y0 : Exponential Distribution 
lambda = 3; 
y0=-log(rand(1,len))./lambda; 


%y1 : Rayleigh Distribution 
mu = 0; 
sig = 2; 
var1 = mu + sig*randn(1,len); 
var2 = mu + sig*randn(1,len); 
t1 = var1 .^ 2; 
t2 = var2 .^ 2; 
y1 = sqrt(t1+t2); 


% %y2: Normal Distribution 
y2 = randn(1,len); 


%y3 : What result excpected to be: 
mean0 = (sum(y0)+ sum(y1)+ sum(y2))/(len * 3);%how do I calculate this? 
var0 = 1;%how do I calculate this? 
y3 = mean0 + var0*randn(1,len); 
delta = 0.1; 
x3 = min(y3):delta:max(y3); 
figure('Name','Normal Distribution'); 
hist(y3,x3); 


%Central Limit Theorem: 
%what result is: 
res = y0+y1+y2; 
xn = min(res):delta:max(res); 
figure('Name','Final Result'); 
hist(res,xn); 

我有兩個主要問題。

  1. 如何計算均值和方差爲Y3(應該是什麼結果)

  2. 是我的代碼是否正確?

回答

5

由於y0y1y2是行向量,你要做的:

mean0 = mean([y0 y1 y2]); 
variance0 = var([y0 y1 y2]); 

當您創建[y0 y1 y2]要創建在單一載體先前所有的樣品一大載體(如如果他們是一個單一分佈的樣本)。

現在只需將它插入到你想要的函數(均值和方差),如上所示。


關於統計部分:我認爲你有些錯誤。 中心極限定理適用於根據相同分佈分佈的變量的總和。它確實可以是任何分佈D,但是所有變量都必須具有相同的分佈D.您試圖對不同的分佈求和。

該定理說:

CLT

我編寫根據指數分佈分佈變量的例子。 運行它,你會發現當你增加N時,結果分佈趨於預期的正態分佈。對於N = 1,你有你的指數分佈(與正態分佈非常不同),但對於N = 100,你已經有一個非常接近預期正態分佈的分佈(你可以看到平均值和方差基本相同現在)。

CLT對於具有N = 1 Sum of Exponentials for N=1

CLT指數函數對於具有N = 3 Sum of Exponentials for N=3

CLT指數函數對於具有N = 10 Sum of Exponentials for N=10

指數函數CLT for Exponentials與N = 100 Sum of Exponentials for N=100

預期正態分佈(CLT的收斂發佈包) expected normal

clc;clear; 
len = 50000; 
lambda = 3; 

%yA : Exponential Distribution A 
yA=-log(rand(1,len))./lambda; 

%yB : Exponential Distribution B 
yB=-log(rand(1,len))./lambda; 

%yC : Exponential Distribution C 
yC=-log(rand(1,len))./lambda; 

%yD : Exponential Distribution D 
yD=-log(rand(1,len))./lambda; 

%yE : Exponential Distribution E 
yE=-log(rand(1,len))./lambda; 

%yF : Exponential Distribution F 
yF=-log(rand(1,len))./lambda; 

%yG : Exponential Distribution G 
yG=-log(rand(1,len))./lambda; 

%yH : Exponential Distribution H 
yH=-log(rand(1,len))./lambda; 

%yI : Exponential Distribution I 
yI=-log(rand(1,len))./lambda; 

%yJ : Exponential Distribution J 
yJ=-log(rand(1,len))./lambda; 


%y1 : What result you expect it to be (centred Gaussian with same variation as exponential): 
mean0 = 0; 
var0 = var(yA); 
y1 = mean0 + sqrt(var0)*randn(1,len); 
delta = 0.01; 
x1 = min(y1):delta:max(y1); 
figure('Name','Normal Distribution (Expected)'); 
hist(y1,x1); 


%Central Limit Theorem: 
%what result is: 
res1 = (((yA)/1) - mean(yA))*sqrt(1); 
res2 = (((yA+yB)/2) - mean(yA))*sqrt(2); 
res3 = (((yA+yB+yC)/3) - mean(yA))*sqrt(3); 
res4 = (((yA+yB+yC+yD)/4) - mean(yA))*sqrt(4); 
res5 = (((yA+yB+yC+yD+yE)/5) - mean(yA))*sqrt(5); 
res10 = (((yA+yB+yC+yD+yE+yF+yG+yH+yI+yJ)/10) - mean(yA))*sqrt(10); 
delta = 0.01; 
xn = min(res1):delta:max(res1); 
figure('Name','Final Result for N=1'); 
hi st(res1,xn); 
xn = min(res2):delta:max(res2); 
figure('Name','Final Result for N=2'); 
hist(res2,xn); 
xn = min(res3):delta:max(res3); 
figure('Name','Final Result for N=3'); 
hist(res3,xn); 
xn = min(res4):delta:max(res4); 
figure('Name','Final Result for N=4'); 
hist(res4,xn); 
xn = min(res5):delta:max(res5); 
figure('Name','Final Result for N=5'); 
hist(res5,xn); 
xn = min(res10):delta:max(res10); 
figure('Name','Final Result for N=10'); 
hist(res10,xn); 

%for N = 100 
y100=-log(rand(100,len))./lambda; 
res100 = ((sum(y100)/100) - mean(yA))*sqrt(100); 
xn = min(res100):delta:max(res100); 
figure('Name','Final Result for N=100'); 
hist(res100,xn); 
+0

那麼,添加此,直方圖Y3和結果之後具有相同的形狀,但它似乎方差和手段是不一樣的y3和結果... – Arashdn

+0

@Arashdn我已經添加了一些評論和一些額外的代碼給你。希望它能讓你的事情更清晰 – DanielX2010

+1

好的答案。我只想添加以下內容:首先,Matlab永遠不會成爲演示此類事物的工具,它只是表明它適用於某些數據集。這不是一個證明,只是一個線索。其次,計算機是有限的離散機器,他們可以產生一系列看起來像從某些分佈中提取的隨機變量,但它們不能產生真正的隨機獨立值,因此IID假設可能不成立。無論如何,Matlab或Octave是相當不錯的工具,我們只需要記住它們的侷限性。 – jlandercy