我有以下gompertz的参数
A <- 100 # A is always 100
mu <- 35
lambda <- 265 # day of the year. Also the start day
我可以使用上述参数运行gompertz,使用以下等式
grofit::gompertz(time,A,mu,lambda)
时间基本上是
lambda:end.day
。
现在的问题是,我知道lambda(开始日),但不知道结束日。我想找到它达到100的最后一天。
例如,在上述示例中,如果我提供
lambda:结束。白天
正如265:270,我还没有达到100。
time <- 265:270
x <- round(grofit::gompertz(time,A,mu,lambda),2)
x
6.60 35.00 66.67 85.51 94.13 97.69
通过多次试验,我知道如果我给出265:277的向量,我将达到100。
time <- 265:277
x <- round(grofit::gompertz(time,A,mu,lambda),2)
x
[1] 6.60 35.00 66.67 85.51 94.13 97.69
[7] 99.10 99.65 99.87 99.95 99.98 99.99
[13] 100.00
我有一个包含lambda(与开始日相同)和mu的数据帧。
df <- data.frame(id = c(1,1,2,2), year = c(1981,1982,1981,1982), mu= c(35,32,33,28), lambda = c(275,278,284,296))
对于每个id和年份,我需要两列:一列称为day first value,它等于lamba,另一列告诉我每天x的值,直到它达到100(end day)。
我如何为每个id和年份实现上述等式,以便我有一个如下的数据框架:
id year day x
1 1981 275 6.6
1 1981 276 35
1 1981 277 66.67
1 1981 278 85.51
1 1981 279 94.13
1 1981 280 97.69
1 1981 281 99.1
1 1981 282 99.65
1 1981 283 99.87
1 1981 284 99.95
1 1981 285 99.98
1 1981 286 99.99
1 1981 287 100
. . . .
. . . .
2 1982 296 8
2 1982 297 33
2 1982 298 45
2 1982 299 63
2 1982 300 61
2 1982 301 73
2 1982 302 81
2 1982 303 91
2 1982 304 94
2 1982 305 98
2 1982 306 99
2 1982 307 100