Модель DCC Garch в R - Матричная ошибка умножения: проблема с обратной матрицей - PullRequest
0 голосов
/ 06 ноября 2018

Я пытаюсь запустить модель DCC Garch для 4 переменных, но сталкиваюсь с проблемой при запуске последней строки моего кода, соответствующей модели.

Таким образом, я ищу решение этой проблемы, что-то не так в моем коде? Это мой набор данных? Я совсем новичок в R и вроде бы борюсь с этим.

Я видел похожий пост, но данный ответ не просветил меня, поэтому я публикую свой собственный пример

Вот мой код с проблеском моих данных:

library(xts)
library(quantmod)
library(rmgarch)
library(rugarch)

MV<-read.csv(file = "Book17.csv", header = TRUE, sep = ";",dec = ".",stringsAsFactors = F)
head(MV) 


MV$Dates<-strptime(x=as.character(MV$Dates),format = "%d/%m/%Y %H:%M")


library(xts)
MV1<-xts(MV[-1], order.by=MV$Dates)
head(MV1) 


sapply(MV1, mode)
sapply(MV1, class)

str(MV1)

MV1$BTC_returns=diff(log(MV1$BTC))
MV1$XBTV8_returns=diff(log(MV1$XBTV8))
MV1$XBTX8_returns=diff(log(MV1$XBTX8))
MV1$BTCV8_returns=diff(log(MV1$BTCV8))
head(MV1) 


MV2 <- data.frame(MV1$BTC_returns, MV1$XBTV8_returns, MV1$XBTX8_returns, MV1$BTCV8_returns)

head(MV2)
                    BTC_returns XBTV8_returns XBTX8_returns BTCV8_returns
2018-09-04 07:30:00   -0.000262     -0.000262     -0.000262     -0.000262
2018-09-04 08:00:00    0.001732      0.001732      0.001732      0.001732
2018-09-04 08:30:00    0.001180      0.001180      0.001180      0.001180
2018-09-04 09:00:00    0.000442      0.000442      0.000442      0.000442
2018-09-04 09:30:00    0.003010      0.003010      0.003010      0.003010
2018-09-04 10:00:00   -0.002305     -0.002305     -0.002305     -0.002305

m = ncol(MV2)
uspec.n = multispec(replicate(m, ugarchspec(mean.model = list(armaOrder = c(1,0)))))

multf = multifit(uspec.n, MV2)


spec1 = dccspec(uspec = uspec.n, dccOrder = c(1, 1), distribution = 'mvnorm')


 MV_fit = dccfit(spec1, data = MV2, fit.control = list(eval.se = TRUE), fit = multf)

Запустив эту последнюю строку, я получу следующее сообщение об ошибке:

MV_fit = dccfit(spec1, data = MV2, fit.control = list(eval.se = TRUE), fit = multf)

error: matrix multiplication: problem with matrix inverse; suggest to use solve() instead
...