1

二項分布の確率質量関数と累積分布関数を計算する必要があります。これを行うためにMATLABを使用したいと思います(生のMATLAB、ツールボックスなし)。これらは自分で計算できますが、事前定義された関数を使用することを望んでいたため、何も見つかりませんでした。何かありますか?

function x = homebrew_binomial_pmf(N,p)
    x = [1];
    for i = 1:N
       x = [0 x]*p + [x 0]*(1-p);
    end
4

4 に答える 4

1

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

于 2009-12-11T18:07:37.550 に答える
1

オクターブは、分布pdf、cdf、分位数の優れたコレクションを提供します。それらはオクターブから変換するendif必要がありますが、これは比較的簡単です(変換end、変換など)。たとえば、二項累積分布関数についてはオクターブbinocdfを参照してください。!=~=

于 2009-12-11T20:43:02.860 に答える
0

二項分布のC​​DFのように見えますが、私の最善の策は不完全なベータ関数betaincです。

于 2009-12-11T19:12:10.710 に答える
-1

PDFの場合

x=1:15
p=.45

c=binopdf(x,15,p)

plot(x,c)

同様にCDF

D=binocdf(x,15,p) 

plot(x,D)
于 2016-03-11T04:33:41.903 に答える