首页 > 解决方案 > R中的for循环错误我找不到

问题描述

我有以下要计算的模型 在此处输入图像描述

在此处输入图像描述

我的数据如下:

D0= 100
variance = 3
T = 20
uf = 0.3
ue = 0.7
CRRA = 0.1
theta = 0.7
Q = 1
X1=1

# DIVIDENDS:
epsilon <- c(0,0, 6, rep(0,18))

DD_t <- D0
for (t in 2:(T+1)) {
    DD_t[t] <- epsilon[t]+DD_t[t-1]
}

# PRICE in t0 t1 t2
PP_t<- c(rep(0,21))
PP_t[1] <- DD_t[1] - 0.1*(3^2)*(18 + (1/0.3))
PP_t[2] <- DD_t[2] + (ue/uf)*theta^(1-1) - CRRA*(variance^2)*Q*(T-1-1 + (1/uf))
PP_t[3] <- DD_t[3] + (ue/uf)*theta^(2-1) - CRRA*(variance^2)*Q*(T-2-1 + (1/uf))

直到这里,一切都是正确的。现在,我想计算 P_3 到 P_20,不幸的是,下面的代码产生了错误的解决方案。

# PRICE in t3 t4 to t20

for (t in 3:(T-1)) {
    t1 <- (t + 1)

    XX_t <- 0
    for (k in 1:(t-1)) {
    XX_t <- XX_t + (theta^(k-1))*(PP_t[t1-k]-PP_t[t1-k-1]) 
    }

    XX_t <- (1-theta)*XX_t + theta^(t-1)*1
    PP_t[t1] <- DD_t[t1] + XX_t*(ue/uf) - CRRA*(variance^2)*Q*(T - t - 1 + (1/uf))
}

这给我的是:

PP_t

 [1]  80.80000  83.13333  89.33333  95.22667  98.26400  98.66093  97.36051  95.53206  94.15252  93.77109  94.47277  95.99211  97.89801  99.77274 101.33323 102.47560 103.25258
[18] 103.81069 104.31816 104.90794   0.00000

但是,正确的解决方案如下所示:

 [1]  80.80000    83.13333  89.33333  94.08333  96.66333  97.22033  96.46413  95.28555  94.43488  94.33895  95.07011  96.43089  98.09417  99.74021 101.15038 102.24238 103.05407
[18] 103.69603 104.29659 104.95801 105.73360

不幸的是,我在我的代码中找不到错误。它必须是轻微的,因为这些值并没有那么遥远。

标签: rloops

解决方案


推荐阅读