用Matlab求高斯分布的概率

时间:2014-10-30 10:16:14

标签: matlab statistics distribution gaussian

最初的问题是塑造一个24/7全天候使用的灯泡,通常一个灯泡持续25天。一盒灯泡包含12.盒子持续时间超过一年的概率是多少?

我必须使用MATLAB基于指数变量建模高斯曲线。 下面的代码生成一个高斯模型,其中mean = 300,std = sqrt(12)* 25。 我必须使用这么多不同的变量并将它们加起来的原因是因为我应该展示中心极限定理。高斯曲线表示一盒灯泡持续时间为#天的概率,其中300是一个盒子将持续的平均天数。

我无法使用我生成的高斯分数并找到天数> 365的概率。声明1-normcdf(365,300,sqrt(12)* 25)试图找出概率的预期值,我得到的是.2265。 非常感谢任何有关如何根据我生成的高斯来找到天数> 365的概率的提示。

谢谢!!!

  clear all
samp_num=10000000;
param=1/25;
a=-log(rand(1,samp_num))/param;
b=-log(rand(1,samp_num))/param;
c=-log(rand(1,samp_num))/param;
d=-log(rand(1,samp_num))/param;
e=-log(rand(1,samp_num))/param;
f=-log(rand(1,samp_num))/param;
g=-log(rand(1,samp_num))/param;
h=-log(rand(1,samp_num))/param;
i=-log(rand(1,samp_num))/param;
j=-log(rand(1,samp_num))/param;
k=-log(rand(1,samp_num))/param;
l=-log(rand(1,samp_num))/param;
x=a+b+c+d+e+f+g+h+i+j+k+l;


mean_x=mean(x);
std_x=std(x);
bin_sizex=.01*10/param;
binsx=[0:bin_sizex:800];
u=hist(x,binsx);
u1=u/samp_num;

1-normcdf(365,300, sqrt(12)*25)
bar(binsx,u1)
legend(['mean=',num2str(mean_x),'std=',num2str(std_x)]);

2 个答案:

答案 0 :(得分:1)

[f, y]=ecdf(x)将为x中的数据创建empirical cdf。然后,您可以找到第一次穿越365的概率,以获得答案。

答案 1 :(得分:0)

生成N的{​​{1}}个重复项,其中N应为数千或数万。然后是x,标准错误为p-hat = count(x > 365) / N。复制次数越多,估计误差幅度越小。

当我在sqrt[p-hat * (1 - p-hat) / N] = 10,000的JMP中执行此操作时,我最终获得了N 95%CI,这是一箱灯泡持续时间超过一年的真实比例。您的值为0.2265的差异以及10,000个结果的直方图表明实际分布仍然有些偏差。换句话说,对12个指数的总和使用CLT近似将给出稍微偏离的答案。