code: def _update_cov_model(self, strata_to_update='all'):
          
          if strata_to_update == 'all':
              strata_to_update = self.strata.indices_
          #: Otherwise assume strata_to_update is valid (no duplicates etc.)
  
          #: Update covariance matrices
          #: We usually update only one stratum at a time, so for loop is ok
          n_sampled = np.clip(self.strata._n_sampled, 2, np.inf) #: adding 2 avoids undef. cov
          factor = n_sampled/(n_sampled - 1)
          for k in strata_to_update:
              TP = self._BB_TP.theta_[k]
              PP = self._BB_PP.theta_[k]
              P = self._BB_P.theta_[k]
  
              self.cov_model_[k,0,0] = factor[k] * TP * (1 - TP)
              self.cov_model_[k,0,1] = factor[k] * TP * (1 - PP)
              self.cov_model_[k,0,2] = factor[k] * TP * (1 - P)
              self.cov_model_[k,1,1] = factor[k] * PP * (1 - PP)
              self.cov_model_[k,1,2] = factor[k] * (TP - PP * P)
              self.cov_model_[k,2,2] = factor[k] * P * (1 - P)
              self.cov_model_[k,1,0] = self.cov_model_[k,0,1]
              self.cov_model_[k,2,0] = self.cov_model_[k,0,2]
              self.cov_model_[k,2,1] = self.cov_model_[k,1,2]
docs: strata_to_update : array-like or 'all'
              array containing stratum indices to update