Desislava Kavrakova
2008-Sep-12 20:00 UTC
[R] Error in solve.default(Hessian) : system is computationally singular
Hello everyone, I'm trying to estimate the parameters of the returns series attached using the GARCH code below, but I get the following error message: Error in solve.default(Hessian) : system is computationally singular: reciprocal condition number = 0 Error in diag(solve(Hessian)) : error in evaluating the argument 'x' in selecting a method for function 'diag' Can anyone help me with this? I don't understand what the problem is. Many thanks, Desislava Kavrakova Code: garchfitS<-function(x){ x<<-ts(x) r<<-0.05/365 n<<-length(x) Mean = mean(x); Var = var(x); S = 1e-6 param = c(alpha0 = Var, alpha = 0.1, beta = 0.8) lowerB = c(alpha0 = S^2, alpha = S, beta = S) upperB = c(alpha0 = 100*Var, alpha = 1-S, beta = 1-S) llh<-function(p){ alpha0<-p[1] alpha<-p[2] beta<-p[3] hh<-Var for (i in 2:n){ hh[i]<-alpha0+alpha*(x[i-1]-r+0.5*hh[i-1])^2+beta*hh[i-1] } hh<-ts(hh) h<-sqrt(abs(hh)) z<-(x-r+0.5*hh)/h -(-(sum(0.5*(log(hh[2:n])+(z[2:n])^2)))) } fit<-nlminb(param, llh, lower=lowerB, upper=upperB) Hessian<-hessian(llh,fit$par) se.coef = sqrt(diag(solve(Hessian))) tval = fit$par/se.coef matcoef = cbind(fit$par,se.coef, tval, 2*(1-pnorm(abs(tval)))) dimnames(matcoef) = list(names(tval), c(" Estimate", " Std. Error", " t value", "Pr(>|t|)")) printCoefmat(matcoef, digits = 6, signif.stars = TRUE) }
rkevinburton at charter.net
2008-Sep-13 00:22 UTC
[R] Error in solve.default(Hessian) : system is computationally singular
I don't have a solution but I receive the same error when trying to fit a GARCH model using the garchFit in the fGarch package. Kevin ---- Desislava Kavrakova <dkavrakova at yahoo.com> wrote:> Hello everyone, > I'm trying to estimate the parameters of the returns series attached using the GARCH code below, but I get the following error message: > > > Error in solve.default(Hessian) : > system is computationally singular: reciprocal condition number = 0 > Error in diag(solve(Hessian)) : > error in evaluating the argument 'x' in selecting a method for function 'diag' > > Can anyone help me with this? I don't understand what the problem is. > > Many thanks, > Desislava Kavrakova > > > Code: > > garchfitS<-function(x){ > x<<-ts(x) > r<<-0.05/365 > n<<-length(x) > > Mean = mean(x); Var = var(x); S = 1e-6 > param = c(alpha0 = Var, alpha = 0.1, beta = 0.8) > lowerB = c(alpha0 = S^2, alpha = S, beta = S) > upperB = c(alpha0 = 100*Var, alpha = 1-S, beta = 1-S) > > llh<-function(p){ > alpha0<-p[1] > alpha<-p[2] > beta<-p[3] > hh<-Var > for (i in 2:n){ > hh[i]<-alpha0+alpha*(x[i-1]-r+0.5*hh[i-1])^2+beta*hh[i-1] > } > hh<-ts(hh) > h<-sqrt(abs(hh)) > z<-(x-r+0.5*hh)/h > -(-(sum(0.5*(log(hh[2:n])+(z[2:n])^2)))) > } > > fit<-nlminb(param, llh, lower=lowerB, upper=upperB) > Hessian<-hessian(llh,fit$par) > se.coef = sqrt(diag(solve(Hessian))) > tval = fit$par/se.coef > matcoef = cbind(fit$par,se.coef, tval, 2*(1-pnorm(abs(tval)))) > dimnames(matcoef) = list(names(tval), c(" Estimate", > " Std. Error", " t value", "Pr(>|t|)")) > printCoefmat(matcoef, digits = 6, signif.stars = TRUE) > } > > >