二項分布の確率質量関数と累積分布関数を計算する必要があります。これを行うためにMATLABを使用したいと思います(生のMATLAB、ツールボックスなし)。これらは自分で計算できますが、事前定義された関数を使用することを望んでいたため、何も見つかりませんでした。何かありますか?
function x = homebrew_binomial_pmf(N,p)
x = [1];
for i = 1:N
x = [0 x]*p + [x 0]*(1-p);
end
二項分布の確率質量関数と累積分布関数を計算する必要があります。これを行うためにMATLABを使用したいと思います(生のMATLAB、ツールボックスなし)。これらは自分で計算できますが、事前定義された関数を使用することを望んでいたため、何も見つかりませんでした。何かありますか?
function x = homebrew_binomial_pmf(N,p)
x = [1];
for i = 1:N
x = [0 x]*p + [x 0]*(1-p);
end
関数NCHOOSEKを使用して、二項係数を計算できます。これにより、特定の値と次のk値のセットの確率質量関数の値を計算する関数を作成できます。Np
function pmf = binom_dist(N,p,k)
nValues = numel(k);
pmf = zeros(1,nValues);
for i = 1:nValues
pmf(i) = nchoosek(N,k(i))*p^k(i)*(1-p)^(N-k(i));
end
end
確率質量関数をプロットするには、次のようにします。
k = 0:40;
pmf = binom_dist(40,0.5,k);
plot(k,pmf,'r.');
累積分布関数は、 CUMSUMを使用して確率質量関数から見つけることができます。
cummDist = cumsum(pmf);
plot(k,cummDist,'r.');
注:NCHOOSEKから返される二項係数が大きい場合、精度が失われる可能性があります。非常に優れた代替手段は、MathWorksFileExchangeでJohnD'Erricoから提出されたVariablePrecisionIntegerArithmeticを使用することです。あなたの数を彼のタイプに変換することによって、あなたは精度の損失を避けることができます。vpi
オクターブは、分布pdf、cdf、分位数の優れたコレクションを提供します。それらはオクターブから変換するendif必要がありますが、これは比較的簡単です(変換end、変換など)。たとえば、二項累積分布関数についてはオクターブbinocdfを参照してください。!=~=
二項分布のCDFのように見えますが、私の最善の策は不完全なベータ関数betaincです。
PDFの場合
x=1:15
p=.45
c=binopdf(x,15,p)
plot(x,c)
同様にCDF
D=binocdf(x,15,p)
plot(x,D)