code: def get_empirical_ar_params(train_datas, params):
      
      assert isinstance(train_datas, list) and len(train_datas) > 0
      datadimension = train_datas[0].shape[1]
      assert params["nu_0"] > datadimension + 1
  
      # Initialize the observation parameters
      obs_params = dict(nu_0=params["nu_0"],
                        S_0=params['S_0'],
                        M_0=params['M_0'],
                        K_0=params['K_0'],
                        affine=params['affine'])
  
  
      # Fit an AR model to the entire dataset
      obs_distn = AutoRegression(**obs_params)
      obs_distn.max_likelihood(train_datas)
  
      # Use the inferred noise covariance as the prior mean
      # E_{IW}[S] = S_0 / (nu_0 - datadimension - 1)
      obs_params["S_0"] = obs_distn.sigma * (params["nu_0"] - datadimension - 1)
      obs_params["M_0"] = obs_distn.A.copy()
  
      return obs_params
docs: Estimate the parameters of an AR observation model
      by fitting a single AR model to the entire dataset.