コマンドwblrnd(12.34,1.56)
を使用して、これらのパラメーターを持つワイブル分布内にある 100 の異なる値を取得しています。
しかし、これらの 100 個のポイント/値が、パラメーターによって指定されたものと同じ分布を持つようにしたいと考えています。これは起こりません。
基本的には、以前とまったく同じ分布を与える 100 個の値を取得したいと考えています。
コマンドwblrnd(12.34,1.56)
を使用して、これらのパラメーターを持つワイブル分布内にある 100 の異なる値を取得しています。
しかし、これらの 100 個のポイント/値が、パラメーターによって指定されたものと同じ分布を持つようにしたいと考えています。これは起こりません。
基本的には、以前とまったく同じ分布を与える 100 個の値を取得したいと考えています。
実行する描画の数が無限でない限り、サンプリング元と同じ分布を持つことはできません。
実用的な例を示すために、描画の経験的分布、つまりヒストグラムが適合した 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 に収束するはずがありません。
ウィキペディアで確認できます: ワイブル分布の形状とスケールのパラメーターから平均を取得する方法、つまり、12.34 と 1.56 によって与えられる理論上の平均。
MATLAB で新しい確率分布オブジェクトを使用すると、将来のシーカーに役立つ場合があります。makedist()
これは、 、random()
、および関数の有用性を強調してpdf()
います (ただし、他の関数も機能します)。ドキュメントを参照してください。
最初に確率分布オブジェクトを定義できます (以下に出力と共に示します)。
>> pd = makedist('Weibull',12.34,1.56)
pd =
WeibullDistribution
Weibull distribution
A = 12.34
B = 1.56
次に、理論上mean()
の 、median()
、std()
、またはを取得するのvar()
は簡単です。
>> mean(pd)
ans =
11.0911
>> var(pd)
ans =
52.7623
>> median(pd)
ans =
9.7562
次に、コマンドを使用すると、確率変量を簡単に生成できrandom()
ます。
n = 2500;
X = random(pd,n,1);
注: 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')
参考:ワイブル分布
ランダムなポイントを取得する代わりに、実際に確率 (0 から 1 の間) を指定し、パラメーターA
およびを使用してワイブル分布から値を取得する場合B
、必要なのは逆 CDF です。
X = wblinv(P,A,B)
これは実際にwblrnd
基づいているものです (これは逆サンプリングと呼ばれる手法であり、多くの分布から確率変量を生成するために一般的に使用されます)。でwblrnd
、P = rand(...)
効果的に。ただし、他の方法で確率を選択する場合は、任意の に対応するwblinv
の値を取得できます(ここで、P(X) は確率分布関数または PDF です)。X
P
コマンドの前に使用rand('seed',0);
すると問題が解決しますか?