【发布时间】:2016-10-13 06:13:56
【问题描述】:
我一直试图弄清楚如何定义方程和参数以运行具有 4 个变量的卡尔曼滤波器(fkf 包)。我正在使用的模型是扩展资本资产定价模型,变量是因变量:Rpt(超额投资组合回报)和三个自变量:Rmt(优于每月回报)、SMB(规模因子)和 ILLIQ(流动性不足)因素)。该数据包括 22 只股票连续 5 年的月度数据。该链接提供了数据集外观的概念,以便于参考。 Portfolio returns。这是前三只股票的数据集:3 first stocks
加载上面的数据集(完整),我已经能够运行卡尔曼滤波器,只有一个变量,上面的 Rpt。但是,如何向模型添加更多变量?我正在努力定义正确的论点和方程式。有人能帮忙吗?以下是我到目前为止的代码。
namibia1 <- read.delim(file.choose(), header=T)
attach(namibia1)
namibia1_ts <- ts(as.numeric(namibia1[,1]), frequency=12, start=c(2011,1), end=c(2015,12))
namibia1_ts <- ts(as.numeric(namibia1[,1]), frequency=12, start=c(2011,1), end=c(2015,12))
y <- namibia1_ts
dt <- ct <- matrix(0)
Tt <- matrix(1)
a0 <- y[1]
P0 <- matrix(1)
Zt <- matrix(c(1), ncol=60)
fit.fkf <- optim(c(HHt = var(y, na.rm=TRUE)*.5,
GGt = var(y, na.rm=TRUE)*.5),
fn = function(par, ...){ -fkf(HHt = matrix(par[1]) },
GGt = matrix(par[2]), ...)$logLik,
yt = rbind(y),
a0 = a0, P0 = P0, dt = dt, ct = ct, Zt = Zt, Tt = Tt,
check.input = FALSE)
更准确地说,我正在努力将转换和测量方程定义为矩阵,如果是,如何定义?这似乎是一件很容易做到的事情,但到目前为止它对我来说还没有奏效。
【问题讨论】:
标签: r kalman-filter