我有一系列数字,范围从65到60。在每个步骤中,我们减少1/12
[1] 65.00000 64.91667 64.83333 64.75000 64.66667 64.58333 64.50000 64.41667 64.33333 64.25000 64.16667
[12] 64.08333 64.00000 63.91667 63.83333 63.75000 63.66667 63.58333 63.50000 63.41667 63.33333 63.25000
[23] 63.16667 63.08333 63.00000 62.91667 62.83333 62.75000 62.66667 62.58333 62.50000 62.41667 62.33333
[34] 62.25000 62.16667 62.08333 62.00000 61.91667 61.83333 61.75000 61.66667 61.58333 61.50000 61.41667
[45] 61.33333 61.25000 61.16667 61.08333 61.00000 60.91667 60.83333 60.75000 60.66667 60.58333 60.50000
[56] 60.41667 60.33333 60.25000 60.16667 60.08333 60.00000
对于每一步,我们将计算一个函数。
因此使用以下代码创建for循环:
a <- seq(65, 60, (-1/12))
v <- a*0
w <- a*0
mu10<-0.0067
mu12<-0.5
mu20<-1.03*mu10
mu21<-3
r<-log(1+0.01)
b1<-(-1500)
b2<-25000*0.15*12
c10<-45000*10
c20<-45000*10
h<-1/12
v[1] <- h*(b1+mu10*c10+mu12)
w[1] <- h*(b2+mu20*c20+mu21)
for (t in 2:length(a)){
v[t] <- v[t-1]+h*(-r*v[t-1]+b1+mu10*(c10-v[t-1])+mu12*(w[t-1]-v[t-1]))
w[t] <- w[t-1]+h*(-r*w[t-1]+b2+mu20*(c20-w[t-1])+mu21*(v[t-1]-w[t-1]))
}
我们想要做的是通过计算时间特征来计算60岁时的功能值。所以只需计算v[60]
和w[60]
这段代码我没有问题,它完全按我希望的方式完成。
问题是变量mu10
我在上面定义为mu10<-0.0067
然而,它应定义为:mu10(t)= alpha + beta * exp(gamma * t)
其中t应该是来自65.00000 64.91667 64.83333 64.75000......60.00000
的序列
我想用mu10(t)替换我的mu10,这是我在这里定义的公式。然后mu10(t)将替换for循环中的mu10。
我希望他们看起来像这样:
v[t] <- v[t-1]+h*(-r*v[t-1]+b1+mu10[t]*(c10-v[t-1])+mu12*(w[t-1]-v[t-1]))
左边的pt应该与mu10(t)中的t相同,也许是显而易见的,但只是想说清楚。
我上下尝试了一下,但感觉不对。我已将参数定义为:
gamma<-0.044
alpha<-(-0.0073)
beta<-0.0009
我只是需要帮助以平滑的方式计算mu10(t)
,以便它可以包含在for循环中。