code: def test_midas_analytical(self):
      vol = MIDASHyperbolic()
      resids = self.resid
      backcast = vol.backcast(resids)
      var_bounds = vol.variance_bounds(resids)
      params = np.array([0.1, 0.9, 0.4])
      forecast = vol.forecast(
          params, resids, backcast, var_bounds, horizon=10, start=0
      )
      weights = vol._weights(params)
      arch_params = np.r_[params[0], params[1] * weights]
      expected = _simple_direct_gjrgarch_forecaster(
          resids, arch_params, 22, 0, 0, backcast, var_bounds, 10
      )
      assert_allclose(forecast.forecasts, expected)
  
imports: import numpy
  from numpy.random import RandomState
  from numpy.testing import assert_allclose
  import pandas
  import pytest
  from arch.univariate import arch_model
  from arch.univariate.distribution import Normal, StudentsT
  from arch.univariate.mean import ConstantMean
  from arch.univariate.volatility import APARCH, EGARCH, FIGARCH, GARCH, HARCH, BootstrapRng, ConstantVariance, EWMAVariance, FixedVariance, MIDASHyperbolic, RiskMetrics2006
label_desc: Use image node_id 35 for calling the TestVarianceForecasts obj's underlying member method code with example usage: obj.test_midas_analytical() without return types