[英]Is there a Matlab function for calculating std of a binomial distribution?
我有一個二進制向量 V,其中每個條目都描述了整個 session 中相關試驗中的成功 (1) 或失敗 (0)。 (向量的長度表示會話中的試驗次數)。 我可以很容易地計算出 session 的成功率(通過取向量的平均值,即 (sum(V)/length(V)))。
但是我還需要知道每個 session 的方差或標准。
為了計算,是否可以使用 Matlab std function (即采用 std(V)/length(V))? 或者,我應該使用特別適合二項分布的東西嗎? 是否存在特定於“成功/失敗”分布的 Matlab 標准(或方差)function?
謝謝
如果滿足二項分布的假設,
那么我不確定這是必要的,因為參數n
和p
可從您的數據中獲得。
請注意,我們將 model成功次數(在n次試驗中)作為隨二項式( n , p )分布分布的隨機變量。
n = length(V);
p = mean(V); % equivalently, sum(V)/length(V)
% the mean is the maximum likelihood estimator (MLE) for p
% note: need large n or replication to get true p
那么在n
具有恆定成功概率p
的獨立伯努利試驗中成功次數的標准差就是sqrt(n*p*(1-p))
。
當然,如果您有多個樣本,您可以從數據中評估這一點。 請注意,這與std(V)
不同。 在您的數據格式中,它需要有多個向量, V1
, V2
, V2
等(復制),那么成功次數的樣本標准偏差將從以下獲得。
% Given V1, V2, V3 sets of Bernoulli trials
std([sum(V1) sum(V2) sum(V3)])
如果您已經知道您的參數: n , p
你可以很容易地獲得它。
n = 10;
p = 0.65;
pd = makedist('Binomial',n, p)
std(pd) % 1.5083
或者
sqrt(n*p*(1-p)) % 1.5083
如前所述。
標准差是否隨n增加?
OP 問:
有些事情困擾着我。如果 std =
sqrt(n*p*(1-p))
,那么它會隨着n
增加。 當n
增加時,std 不應該減少嗎?
確認與推導:
定義:
然后,僅從期望和方差的定義中,我們就可以顯示方差(如果添加平方根,則與標准差類似)隨着n
的增加而增加。
由於平方根是非遞減的 function,我們知道同樣的關系適用於標准差。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.