威布尔分布样本

时间:2013-06-06 15:08:42

标签: matlab distribution weibull

我正在使用命令wblrnd(12.34,1.56)来获取具有这些参数的Weibull分布中的100个不同值。

但是我希望那些100点/值具有与参数给出的相同的分布。这不会发生。

基本上我想要的是,获得100个值,这些值给出了我以前完全相同的分布。

5 个答案:

答案 0 :(得分:4)

除非您执行的绘制数量为无限,否则您不能使用与您抽样的分布相同的分布。

为了给你一个实际的例子,你可以比较抽签的经验分布,即直方图,与拟合的pdf相匹配:

subplot(121)
sample = wblrnd(12.34,1.56,100,1);    
histfit(sample,100,'wbl')
title('100 draws')

subplot(122)
sample = wblrnd(12.34,1.56,1e5,1);    
histfit(sample,100,'wbl')
title('100,000 draws')

enter image description here

另请注意,平均值和标准差不是wblrnd(A,B)的参数。换句话说,mean(sample)不应该收敛到12.34。

您可以查看wikipedia: weibull distribution如何从形状和比例参数中检索平均值,即12.34和1.56给出的理论平均值。

答案 1 :(得分:0)

在命令之前使用rand('seed',0);会纠正您的问题吗?

答案 2 :(得分:0)

根据wblrnd documentation获得100个参数为12.34和1.56的威布尔分布值,您应该这样做:

wind_velocity = wblrnd(12.34 , 1.56 , 1 , 100);

这将返回1x100值的向量,从第1天到第100天 要获得这100天的平均速度,请执行以下操作:

mean(wind_velocity)

希望这是你所需要的。
此致

答案 3 :(得分:0)

如果不是获取随机点而是实际想要指定概率(在0和1之间)并从具有参数AB的Weibull分布中获取值,那么您想要的是逆CDF:

X = wblinv(P,A,B)

这实际上是wblrnd所基于的(它是一种称为inverse sampling的技术,通常用于从许多分布中生成随机变量)。在wblrndP = rand(...)有效。但是,如果您想通过其他方法选择概率,wblinv允许您获取与X对应的P值(其中P(X)是概率分布函数) ,或PDF)。

答案 4 :(得分:0)

在MATLAB中使用新的概率分布对象对于将来的搜索者可能有用。这突出显示了makedistrandompdf函数的效用(尽管其他函数也可以)。参见documentation

您可以先定义概率分布对象(如下所示,带有输出)。

>> pd = makedist('Weibull',12.34,1.56)
pd = 
  WeibullDistribution

  Weibull distribution
    A = 12.34
    B =  1.56

然后容易地获得理论上的meanmedianstdvar

>> mean(pd)
ans =
   11.0911
>> var(pd)
ans =
   52.7623
>> median(pd)
ans =
    9.7562

然后使用random命令很简单地生成随机变量。

n = 2500;    
X = random(pd,n,1);

Weibull Distribution

注意:R2013a中引入的概率分布对象。

figure, hold on, box on
histogram(X,'Normalization','pdf','DisplayName','Empirical (n = 2500)')
plot([0:.01:50],pdf(pd,[0:.01:50]),'b-','LineWidth',2.5,'DisplayName','Theoretical')  

参考:Weibull distribution