多元马尔可夫切换模型-R函数

时间:2018-10-26 14:50:24

标签: function qml replication switching markov

我目前正在尝试复制有关股市收益相关性的论文,更具体地说,我正在对3个股指使用Markov转换模型来查看是否存在两种不同的状态。我正在使用BHHH算法最大化似然函数以估计10个参数。但是,当我使用数据集作为起点执行函数时,出现以下错误:

  

warnMessage(t1,ft1,i)中的Blockquote错误:     函数值必须是'numericGradient'的数字

基本上,似然函数由两部分组成,我首先尝试估计gkt的第一个部分,该文章可以在以下文章https://onlinelibrary.wiley.com/doi/pdf/10.1111/1468-0300.00047的第65页中找到。

我的代码如下

g_function <- function(param){
      mu_0 <- param[1]
      h_0 <- param[2]
      mu_1 <- param[3]
      h_1 <- param[4]
      mu_2 <- param[5]
      h_2 <- param[6]
      rho_01 <- param[7]
      rho_12 <- param[8]
      rho_02 <- param[9]
      v <- param[10]
      g <- lgamma((v+nrow(returns2))/2)*(sqrt(pi*(v-2))*gamma(v/2))**(-nrow(returns2))*((1 + returns2*matrix(c(h_0,rho_01,rho_02,
                                                                                                                   rho_01,h_1,rho_12,
                                                                                                                   rho_02,rho_12,h_2), ncol = 3, byrow = TRUE)**(-1)*returns2)/(v-2))**(-(v+nrow(returns2))/2)*matrix(c(h_0,rho_01,rho_02, rho_01,h_1,rho_12, rho_02,rho_12,h_2), ncol = 3, byrow = TRUE)**(1/2)
    }

    x <- maxLik(logLik = g_function, start = c(mu_0 = mean(returns$SP500), mu_1 = mean(returns$DAX), mu_2 = mean(returns$FTSE100), h_0 = var(returns$SP500), h_1 = var(returns$DAX), h_2 = var(returns$FTSE100), rho_01 = cor(returns$SP500, returns$DAX), rho_12 = cor(returns$DAX, returns$FTSE100), rho_02 = cor(returns$SP500, returns$FTSE100), v = 3), method = "BHHH")

我对功能不是很满意,请解释一下原因...非常感谢您的帮助!

0 个答案:

没有答案