首页 > 解决方案 > 是否有用于计算二项分布标准的 Matlab 函数?

问题描述

我有一个二进制向量 V,其中每个条目都描述了整个会话中相关试验的成功 (1) 或失败 (0)。(向量的长度表示会话中的试验次数)。我可以很容易地计算会话的成功率(通过取向量的平均值,即(sum(V)/length(V)))。

但是我还需要知道每个会话的方差或标准。

为了计算,可以使用Matlab std 函数(即取std(V)/length(V))吗?或者,我应该使用特别适合二项分布的东西吗?是否有特定于“成功/失败”分布的 Matlab 标准(或方差)函数?

谢谢

标签: matlabstatistics

解决方案


如果满足二项分布的假设,

  • 固定数量的n次独立伯努利试验,
  • 每个都有恒定的成功概率p

那么我不确定这是必要的,因为参数np可从您的数据中获得。

请注意,我们将成功次数(在n次试验中)建模为随二项式( np)分布分布的随机变量。

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

那么成功概率不变的独立伯努利试验中成功次数的标准差就是.npsqrt(n*p*(1-p))

当然,如果您有多个样本,您可以从数据中评估这一点。请注意,这与std(V). 在您的数据格式中,它需要有多个向量、V1V2V2等(复制),那么成功次数的样本标准偏差将从以下获得。

% Given V1, V2, V3 sets of Bernoulli trials
std([sum(V1) sum(V2) sum(V3)])

如果您已经知道您的参数: np

你可以很容易地获得它。

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. 增加时std不应该减少n吗?

确认与推导:

定义:

定义

然后我们知道
分配

然后,仅从期望方差的定义中,我们可以显示方差(如果添加平方根,则与标准差类似)随n.

方差推导

由于平方根是非递减函数,我们知道标准差也存在相同的关系。


推荐阅读