威布尔分布样本

问题描述 投票:0回答:5

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

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

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

matlab distribution weibull
5个回答
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')

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

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


0
投票

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


0
投票

根据wblrnd documentation获得的100个值遵循Weibull分布,参数为12.34和1.56,您应该:

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

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

mean(wind_velocity)

希望这是你需要的。 问候


0
投票

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

X = wblinv(P,A,B)

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


0
投票

未来的求助者可能会在MATLAB中使用新的概率分布对象。这突出了makedistrandompdf函数的实用性(尽管其他人也有效)。见documentation

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

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

  Weibull distribution
    A = 12.34
    B =  1.56

然后轻松获得理论上的meanmedianstdvaris。

>> 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

© www.soinside.com 2019 - 2024. All rights reserved.