使用带有中心极限定理的 Matlab 的 Biased die 的 PDF 和 CDF

PDF and CDF for Biased die using Matlab with Central Limit Theorem

我正在尝试使用中心极限定理为 10^4 个样本的有偏模卷绘制 PDF 和 CDF。(CLT)

骰子有偏差或不公平,其中偶数面出现的可能性是奇数面的两倍。这是 diefaces = [1,3,2,4,6,2]。在这种情况下,我可以在 Matlab 中使用什么来查找奇数的概率,其中 CLT 其中 Sn = X1 + X2 + ... + Xn , n = 40.

这是我到目前为止所尝试过的方法。我正在努力处理的部分是传递样本,在本例中为 10^4 和 n=40。感谢任何帮助....

clear
% Roll the dice "numberOfRolls" times
numberOfRolls = 10000; % Number of times you roll the dice.
% Biased die with even sides twice as likely as a odd number
diefaces = [1,3,2,4,6,2];
n = 1; % Number of dice.
maxFaceValue = 6;
% Pick a random number from diefaces along with the number of rolls which
% is not working :(
x = diefaces(randperm(numel(diefaces),1),10000)


    S1 = cumsum(x)
    hist1= histogram(S1(1,:),'Normalization','pdf','EdgeColor', 'blue', 'FaceColor',  'blue')

您可以生成 10000 次不公平掷骰的结果,偶数面的概率是奇数面的两倍。

首先,让我们定义骰子的奇数面和偶数面

odd = [1 3 5];
even = [2 4 6];

画出10000个均匀分布的数字。

r = rand(10000,1);

分配一些结果变量

rolls = zeros(10000,1);

如果现在将随机数拆分为 1/3,则奇数和偶数的概率为 1:2。由于(我假设)在奇数和偶数内,概率是均匀的(即,获得 3 的概率与获得 1 的概率相同,依此类推),因此使用均匀的随机数来分配相应的值。

使用逻辑索引

rolls(r>1/3) = even(randi(3,sum(r>1/3),1));
rolls(r<=1/3) = odd(randi(3,sum(r<=1/3),1));

绘制结果

histogram(rolls)

要使用 CLT 生成 PDF 和 CDF,请使用 ,但使用像上面那样生成的分布。

定义您的模具并为您的自定义模具获取有效的 probability mass function (PMF)。您可以通过确保 sum(Prob) 等于 1 来验证 PMF。请注意,通过将 RelChance 设置为 [1 1 1 1 1 1].

可以获得公平的芯片

下面的模面概率为 [1/9 2/9 1/9 2/9 1/9 2/9]

Die = [1 2 3 4 5 6];
RelChance = [1 2 1 2 1 2];            % Relative Chance
Prob = RelChance./sum(RelChance);     % probability mass function for die

您可以使用datasample()模拟掷骰子的结果(需要统计工具箱)。如果绝对必要,可以通过多种方法轻松进行硬编码。

下面的代码从 Die 中多次读取示例 NumRolls probability Prob(ii) 表示 Die(ii).

的概率
% MATLAB R2019a
NumRolls = 13;                        % Number of rolls 
Rolls = datasample(Die,NumRolls,'Weights',Prob);

现在,用它来完成既定的目标。类似于此 post,创建一个数组 X,其中第一行是 X1 的实现,第二行是 X2 的实现,依此类推。这不一定是花哨的。

再次使用 cumsum() 获取各列的累计和。这意味着第一行是 S1=X1 的实现,第二行是 S2=X1+X2 的实现,第 40 行是 S40 = X1 + X2 + ... + X40 的经验样本。

n_max = 40;
NumRolls = 10000;
X = zeros(n_max,NumRolls);
for n = 1:n_max
    X(n,:) = datasample(Die,NumRolls,'Weights',Prob);
end
Sn = cumsum(X);

How to Plot? 至此,由于我们的变量名与流程匹配,剩下的步骤(绘图)与 但有一些小的修改。由于这是离散(非连续)数据,我使用 histogram()'Normalization','probability' 选项生成了下面的图。对 概率密度函数 (PDF) 的引用已相应地重新标记 probability mass function (PMF)


中心极限定理的连续版本 posted