code: def first_prediction(self, singular_value):
          
          if not self.predictions:
              raise Exception("ErrVar.first(): no predictions are set")
          if singular_value > self.jco.ncol:
              zero_preds = {}
              for pred in self.predictions_iter:
                  zero_preds[("first", pred.col_names[0])] = 0.0
              return zero_preds
          self.log("calc first term parameter @" + str(singular_value))
          first_term = self.I_minus_R(singular_value).T * self.parcov *\
                       self.I_minus_R(singular_value)
          if self.predictions:
              results = {}
              for prediction in self.predictions_iter:
                  results[("first",prediction.col_names[0])] = \
                      float((prediction.T * first_term * prediction).x)
              self.log("calc first term parameter @" + str(singular_value))
              return results
docs: get the null space term (first term) contribution to prediction error variance
              at a singular value.  used to construct error variance dataframe
  
          Parameters
          ----------
          singular_value : int
              singular value to calc first term at
  
          Returns
          -------
          dict : dict
              dictionary of ("first",prediction_names),error variance pairs at singular_value