I'm performing a Mincer Zarnowitz to test the goodness of fit of a time series regression. The test (https://eranraviv.com/volatility-forecast-evaluation-in-r/) boils down to, first, running a regression of the observations on the fitted values, and second, a joint test that the intercept of the regression is 0, and the coefficient of the fitted values is 1.
I attached the first 20 observations of my vectors of observations (obs
) and fitted values (fit
) - it gives the same error with the whole dataset. Using R
, I first run the regression (MZ2
) of obs
on fit
, and save it. Then I use the linearHypothesis
function in the package car
to test the joint hypotheses above. The rank of the matrix (MZ2$model
) is maximal (2), so the matrix is invertible. Yet I receive the error Error in solve.default(vcov.hyp) : system is computationally singular: reciprocal condition number = 6.22676e-17
. The code runs for the single hypothesis test.
I don't understand why I get this error. The summary vcov
option should have returned the same error to compute the asymptotic (robust) standard errors, but it doesn't.
Any idea on this error? Thank you.
obs <-c(13964892, 10615134, 12066946, 8394110, 8991798, 12456120, 8981580,
9261421, 12976910, 19263428, 6453574, 9025350, 12455365, 9711284,
14876416, 11643567, 8383892, 10234233, 7601169, 10136608)
fit <- c(12478069, 11826724, 10706274, 10573869, 10413272, 10789469,
9401626, 10067159, 12939216, 11535966, 10890038, 10634312, 11122152,
11309619, 10877766, 10330747, 10034014, 10912567, 9204140, 9532570)
MZ2 <- lm(obs ~ fit)
summary(MZ2, vcov = vcovHC, type = "HC3")
# Call:
# lm(formula = obs ~ fit)
#
# Residuals:
# Min 1Q Median 3Q Max
# -4605688 -1518159 -543282 1318148 7130691
#
# Coefficients:
# Estimate Std. Error t value Pr(>|t|)
# (Intercept) -7039028.9827 6717707.9500 -1.048 0.3086
# fit 1.6619 0.6209 2.676 0.0154 *
# ---
# Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#
# Residual standard error: 2565000 on 18 degrees of freedom
# Multiple R-squared: 0.2847, Adjusted R-squared: 0.2449
# F-statistic: 7.163 on 1 and 18 DF, p-value: 0.0154
#
# JOINT TEST
#
require(car)
linearHypothesis(MZ2, c("(Intercept) = 0", "fit = 1"))
Error in solve.default(vcov.hyp) :
system is computationally singular: reciprocal condition number = 6.22676e-17
In addition: Warning message:
In constants(lhs, cnames_symb) : NAs introduced by coercion
> MZ2$rank
[1] 2
#
# UNIVARIATE TESTS
#
linearHypothesis(MZ2, c("(Intercept) = 0"))
Linear hypothesis test
Hypothesis:
(Intercept) = 0
Model 1: restricted model
Model 2: obs ~ fit
Res.Df RSS Df Sum of Sq F Pr(>F)
1 19 125618245448671
2 18 118396383219614 1 7221862229057 1.098 0.3086
> linearHypothesis(MZ2, c("fit = 1"))
Linear hypothesis test
Hypothesis:
fit = 1
Model 1: restricted model
Model 2: obs ~ fit
Res.Df RSS Df Sum of Sq F Pr(>F)
1 19 125870444423604
2 18 118396383219614 1 7474061203991 1.1363 0.3005