我在R中获得适当绘图的代码似乎不起作用(我是R的新手,并且在编码方面遇到困难)。
基本上,使用beta-delta模型形式的时间折扣的概念,我们应该计算从0到365的每个延迟的10美元的主观价值。
家庭作业的背景是,我们必须考虑一个重要的例外情况,即如果奖励是立即奖励,则不会有折扣,但是,如果发生任何延误,则会同时存在指数折扣和延误罚款。
我创建了一个名为 BetaDeltaValuesOf10 的变量,该变量长366个元素,代表从0到365的每个延迟的$ 10主观值。
使用 for循环和 if-else语句,代码需要具有以下属性:
1)如果延迟为0,则主观值为客观幅度(应保存为 BetaDeltaValuesOf10 的适当元素。
2)否则,以指数折扣率计算主观值,假定= .98,并应用.8的延迟惩罚,然后将其保存到 BetaDeltaValuesOf10 的适当元素中。
为帮助我们创建代码而提供的标准代码如下:
BetaDeltaValuesOf10 = 0
Delays = 0:365
使用指数折扣模型获取主观价值/偏好的代码(方程):
ExponentialDecayValuesOf10 = .98^Delays*10
0.98 是折扣率,介于0和1之间。
延迟是将来提供较晚奖励的时间段
10 是$ 10的主观价值
使用beta-delta模型获得主观价值的代码(公式):
0.8*0.98^Delays*10
0.8 是延迟惩罚
我为满足上述属性而想出的代码如下:
for(t in 1:length(Delays)){BetaDeltaValuesOf10 = 0.98^0*10
if(BetaDeltaValuesOf10 == 0){0.98^t*10}
else {0.8*0.98^t*10}
}
因此,我尝试了代码,但未收到任何错误。但是,当我尝试绘制代码结果时,我的图表变成空白。
为进行绘图,我使用了代码:
plot(BetaDeltaValuesOf10,type = 'l', ylab = 'DiscountedValue')
我相信我的代码实际上是错误的,这就是为什么我的情节没有得到适当的结果。 请让我知道该守则的修正案,如果社区需要任何澄清,我会尽力澄清。
答案 0 :(得分:0)
result <- double(length=366)
delays <- 0:365
val <- 10
delta <- 0.98
penalty <- 0.8
for(t in seq_along(delays)) {
result[t] <- val * delta^delays[t] * penalty^(delays[t]>0)
}
plot(x=delays, y=result, pch=20)