由于y0、y1 和y2 是行向量,你必须这样做:
mean0 = mean([y0 y1 y2]);
variance0 = var([y0 y1 y2]);
当您创建 [y0 y1 y2] 时,您正在创建一个大向量,其中所有之前的样本都在一个向量中(就好像它们是来自一个单一分布的样本一样)。
现在只需将其插入您想要的函数(均值和方差),如上所示。
关于统计部分:我认为你搞错了一些事情。
中心极限定理适用于按相同分布分布的变量之和。它确实可以是任何分布 D,但所有变量必须具有相同的分布 D。您正在尝试对不同的分布求和。
定理说:
我为根据指数分布分布的变量编写了一个示例。
运行它,你观察到当你增加 N 时,得到的分布趋向于预期的正态分布。对于 N=1,您有指数分布(与正态分布非常不同),但对于 N=100,您已经有一个非常接近预期正态分布的分布(您可以看到均值和方差基本相同)现在)。
用于 N=1 的指数的 CLT
用于 N=3 的指数的 CLT
用于 N=10 的指数的 CLT
用于 N=100 的指数的 CLT
预期正态分布(CLT的收敛分布)
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);