Probability Scilab中计算几何离散随机变量累积分布函数的程序问题

Probability Scilab中计算几何离散随机变量累积分布函数的程序问题,probability,scilab,cumulative-sum,Probability,Scilab,Cumulative Sum,我写了一个程序,显示了几何分布的随机离散变量的累积分布函数和PMF图。但我遇到了一个问题:PMF的所有概率之和不是1,而是非常接近1。当我看到这一点时,我切换到Matlab,在那里我使用了函数:geocdf。因此,我观察到CDF的第一个值,取p0.6,n=10,是0.84,而不是预期的0.6。你能帮我找出我的程序出了什么问题吗?以下是我在Scilab中编写的脚本: n = input('n = '); tab = zeros(2, n); p = input('p = ');//prob

我写了一个程序,显示了几何分布的随机离散变量的累积分布函数和PMF图。但我遇到了一个问题:PMF的所有概率之和不是1,而是非常接近1。当我看到这一点时,我切换到Matlab,在那里我使用了函数:geocdf。因此,我观察到CDF的第一个值,取p0.6,n=10,是0.84,而不是预期的0.6。你能帮我找出我的程序出了什么问题吗?以下是我在Scilab中编写的脚本:

   n = input('n = '); 
tab = zeros(2, n);
p = input('p = ');//probability
q = 1 - p;

for k = 1:n   
    tab(1,k) = k;
    tab(2,k) = (q^(k - 1))*p;  
end

subplot(1,2,1);
plot(tab(1,:), tab(2,:), "-");


F = cumsum(tab(2, :));//cumulative distribution
subplot(1,2,2);
plot2d2(tab(1,:), F);

disp([tab' F']);
Mean = 1/p;
Variance = q/(p^2);

mprintf('\nMedia = %g, Dispersia = %g', Mean, Variance);
PMF的所有概率之和不是1

您不可能添加所有概率,因为几何分布将非零概率分配给所有正整数。如果将总和计算到n=10,则概率之和明显小于1。如果最多运行20次,则输出中的累积值将四舍五入为1:

1.     0.6          0.6        
2.     0.24         0.84       
3.     0.096        0.936      
4.     0.0384       0.9744     
5.     0.01536      0.98976    
6.     0.006144     0.995904   
7.     0.0024576    0.9983616  
8.     0.0009830    0.9993446  
9.     0.0003932    0.9997379  
10.    0.0001573    0.9998951  
11.    0.0000629    0.9999581  
12.    0.0000252    0.9999832  
13.    0.0000101    0.9999933  
14.    0.0000040    0.9999973  
15.    0.0000016    0.9999989  
16.    0.0000006    0.9999996  
17.    0.0000003    0.9999998  
18.    0.0000001    0.9999999  
19.    4.123D-08    1.0000000  
20.    1.649D-08    1.0000000  
CDF的第一个值,取p0.6,n=10,0.84,而不是预期的0.6

几何分布有两种版本,如本文开头所述。您的代码遵循第一个约定,集合1、2、3……支持PMF,。。。。Matlab的
geocdf
使用第二种约定,PMF支持0,1,2,3。。。
geocdf(1,0.6)
的输出为0.84,表示0和1的概率之和。
geocdf(0,0.6)
的输出为0.6