【发布时间】:2022-06-22 10:53:26
【问题描述】:
我想使用 Nowcasting-package 中的动态因子模型 (DFM) 进行 伪样本外练习在R中。
首先让我为您提供一个使用来自 Nowcasting-package 的数据的可复制示例。
library(nowcasting)
data(NYFED)
NYFED$legend$SeriesName
base <- NYFED$base
blocks <- NYFED$blocks$blocks
trans <- NYFED$legend$Transformation
frequency <- NYFED$legend$Frequency
delay <- NYFED$legend$delay
vintage <- PRTDB(mts = BRGDP$base, delay = BRGDP$delay, vintage = "2015-06-01")
base <- window(vintage, start = c(2005,06), frequency = 12)
x <- Bpanel(base = base, trans = BRGDP$trans)
GDP <- base[,which(colnames(base) == "PIB")]
GDP_qtr <- month2qtr(x = GDP, reference_month = 3)
y <- diff(diff(GDP_qtr,4))
y <- qtr2month(y)
data <- cbind(y,x)
frequency <- c(4,rep(12,ncol(x)))
nowca <- nowcast(formula = y~., data = data, r = 1, q = 1 , p = 1, method = "2s_agg",
frequency = frequency)
summary(nowca$reg)
nowca$yfcst
nowcast.plot(nowca, type = "fcst")
此代码运行良好,并创建了预测和带有 GDP、样本内拟合和样本外预测的三个步骤的图。
但是,我想用这个包做一个完整的伪样本外预测练习。换句话说,我想使用这个 nowcast 函数生成的预测来创建多点预测。
我已经编写了可复制代码来做到这一点。它使用和以前一样的数据,但现在数据逐渐输入到模型中。
nowcasts_dfm <- rep(NA,nrow(data))
for (i in 12:nrow(data)){
data <- ts(data[1:i,], start=c(2005,06), frequency=12)
nowca <- nowcast(formula = y~., data = data, r = 1, q = 1 , p = 1, method = "2s_agg",
frequency = frequency)
nowcasts_dfm[i] <- now$yfcst[,3][!is.na(now$yfcst[,3])][1]
}
因此,这个伪样本外使用从前 12 个观察值开始的扩展窗口。然后它会扩展以覆盖整个样本。 但是,我收到一条错误消息。
Error in eigen(cov(x)) : infinite or missing values in 'x'
可以帮我解决这个问题吗?您如何使用此软件包编写扩展窗口伪样本外预测练习?
或者有没有更好的方法在 R 中编写扩展窗口动态因子模型 (DFM)?
谢谢!
【问题讨论】:
标签: r loops forecasting modeling kalman-filter