我可以使用rpois在不同的平均值下产生随机数

时间:2018-03-09 12:34:00

标签: r

我想编写一个函数来做一些计算。在这个函数中,我想使用rpois在不同的均值y1下产生随机数n1*2.4。我觉得这个功能无法实现我的目标,所以我想知道如何编辑我的功能。

myfunC1 <- function(t1) {
    t1 = seq(1, 3000, 1)
    n1 <- 13.8065 / (1 + exp(-(t1 - 11.8532) / 26.4037))
    y1 <- rpois(1, n1 * 2.4)
    c <- log(2.7 / 2.4) * (y1 / n1 - (2.7 - 2.4) / (log(2.7) - log(2.4)))
    result <- c
}

我还想知道如何在不使用for循环的情况下编写函数来计算以下语句。 y和Lt在本声明中已为人所知。

G [吨] = MAX {0,0.85 * G [T-1] + L [吨]}

1 个答案:

答案 0 :(得分:0)

您的功能有些变化:

myfunC1<-function(t1) {
  n1<-13.8065/(1+exp(-(t1-11.8532)/26.4037))
  y1<-unlist(lapply(n1*2.4, rpois, n=1))
  c<-log(2.7/2.4)*(y1/n1-(2.7-2.4)/(log(2.7)-log(2.4)))
  return(c)
}

你的输出:

    t1<-seq(1,10,1)
    myfunC1(t1)
 [1] -0.043210706  0.076575495  0.006905820 -0.139863770 -0.045328088  0.006866088 -0.037032547 -0.079171724
 [9] -0.083574188  0.018280450

关于问题的第二部分,您可以使用类似这样的方法:

L<-runif(10,1,10)
G<-runif(10,1,10)

myfunC2<-function(G,L,t)
{
  return(max(0,0.85*G[t−1]+L[t]))
}

unlist(lapply(rep(1:length(L)),myfunC2, G=G, L=L))
 [1]  0.000000 14.094739  7.489582 14.268056 16.318365  9.115776 11.729936  7.091494 16.030881  9.289892