【发布时间】:2021-02-24 02:47:00
【问题描述】:
我的数据由 17 个样本的 30 年可观察值组成。下面的 test 数据框将样本深度最小化为三个,但保留了时间序列长度。目前,当我将年份锚定到 1991 年时,我的代码仅返回第一列所需的计算。注意:由于公式中的滞后,1991 年是第一个可能的计算。我希望能够为每个样本在所有年份迭代地运行计算。
test <-tibble(Year=c(1988:2017),value=c(runif(30)),value.2=c(runif(30)),value.3=c(runif(30)))
index=1991
x <-test[test$Year ==index,"value"]
lag.3 <-test[test$Year ==index-3,"value"]
lag.2 <-test[test$Year ==index-2,"value"]
lag.1 <-test[test$Year ==index-1,"value"]
lead.3 <-test[test$Year ==index+3,"value"]
lead.2 <-test[test$Year ==index+2,"value"]
lead.1 <-test[test$Year ==index+1,"value"]
average_lag_3 =(lag.1 +lag.2 +lag.3)/3
average_lead_3 = (lead.1 +lead.2 +lead.3)/3
var.x <- ((((lag.3 +lag.2+lag.1)*(x-average_lag_3)^2)/2)+(((lead.3 +lead.2+lead.1)*(index-average_lead_3)^2)/2))/2
dscore <- average_lag_3 - average_lead_3/(sqrt(var.x)*sqrt(2/3))
【问题讨论】:
-
期望的输出是什么?你只关心
dscore,还是你也想要var.x?还有什么? -
在
var.x计算中,你需要使用index - average_lag_3还是你的意思是说x-average_lag_3??
标签: r loops iteration lag lead