code: def test_kalman_covariates_multivariate(self):
      kf = KalmanFilter(dim_x=3)
  
      sine_ts = tg.sine_timeseries(length=30, value_frequency=0.1)
      noise_ts = tg.gaussian_timeseries(length=30) * 0.1
      series = sine_ts.stack(noise_ts)
  
      covariates = -series.copy()
  
      kf.fit(series, covariates=covariates)
      prediction = kf.filter(series, covariates=covariates)
  
      assert kf.dim_u == 2
      assert prediction.width == 2
      assert prediction.n_samples == 1
  
imports: import numpy
  import pandas
  from nfoursid import kalman, state_space
  from sklearn.gaussian_process.kernels import RBF, ExpSineSquared
  from darts import TimeSeries
  from darts.metrics import rmse
  from darts.models.filtering.gaussian_process_filter import GaussianProcessFilter
  from darts.models.filtering.kalman_filter import KalmanFilter
  from darts.models.filtering.moving_average_filter import MovingAverageFilter
  from darts.utils import timeseries_generation
label_desc: Use image node_id 3 for calling the TestKalmanFilter obj's underlying member method code with example usage: obj.test_kalman_covariates_multivariate() without return types