MATLAB代码建模细胞复制和死亡

时间:2016-11-27 16:39:26

标签: matlab statistics probability

我们从1个细胞开始。它可以以速率(指数速率)1复制并以速率1死亡。设Y表示细胞数。第一个事件(死亡或复制)以2的比率发生。如果它死亡 - >我们停止,因为我们有0个单元格。 如果它是复制 - >我们将时间更新为t + tau,下一个事件现在以4的速率发生。(因为2个单元格可以复制或死亡)。

由于只能发生2个事件,因此一个细胞发生死亡的概率为1 /(1 + 1),2个细胞发生2 /(2 + 2)等等,复制也相同。这就是为什么我们从0到2绘制一个随机数。如果这个数字> 1,那么一个单元就会死掉,否则就会重复。

  

直观地说,至少有一半的细胞应该死亡,因此   在时间3处0个单元的概率应该是P(Y = 0)> 0.5(实际上是   答案是3/4)。但是,当我将此代码放入for循环并运行它时   1000次,我得到Y = 0的次数是400左右   0.4

t=0;
rr=1; %rate of replication 1 cell -> 2 cells
rd=1; %rate of death 1 cell -> 0 cells
Y=1; %initial number of cells
while t<3 && Y>0 % interested in probabilities of number of cells at time t=0,t=1,t=2,t=3
    r = 2*rand; %draws a random number from 0 to 2
    tau=exprnd(2*Y); %since the total rate of all possible events is replication+death=2 for each cell
    if t+tau < 3 %if the event happens before 3 seconds
        if r>1 %death
        Y=Y-1;
        else Y=Y+1; %otherwise replication
        end 
    elseif t+tau > 3 %if the next event happens after 3 seconds, we are not interested.
        Y; 
        t; 
        break
        end;
    t=t+tau; %update time from t to t+tau
end

1 个答案:

答案 0 :(得分:1)

好吧,在进入调试过程之前,请检查统计信息!

根据中心极限定理,如果我们将y定义为y = 1的随机变量,当Y = 0且y = 0时,则y的平均N次运行应该收敛于P(Y = 0)的均值和std(y)/ sqrt(N)方差。所以我会

  • 在1000次运行中返回几次,看看结果如何变化。
  • 检查10 ^ 5次运行是否表现更好。
  • 准确计算std(y),或者至少绑定它。

如果所有这些都失败了,那么它可能就是一个错误。