Example #1
0
 def computeCore(self, data, tRange):
    [obsP, p] = Bs.getP(data, tRange)
    bs = np.nan*np.zeros(len(p), 'float')
    meanObs = np.mean(obsP)
    for i in range(0, len(self._edges)-1):
       I = np.where((p >= self._edges[i]) & (p < self._edges[i+1]))[0]
       if(len(I) > 0):
          meanObsI = np.mean(obsP[I])
          bs[I] = (meanObsI - meanObs)**2
    return Common.nanmean(bs)
Example #2
0
   def computeCore(self, data, tRange):
      [obsP,p] = Bs.getP(data, tRange)

      # Break p into bins, and comute reliability
      bs = np.nan*np.zeros(len(p), 'float')
      for i in range(0, len(self._edges)-1):
         I = np.where((p >= self._edges[i]) & (p < self._edges[i+1]))[0]
         if(len(I) > 0):
            meanObsI = np.mean(obsP[I])
            bs[I] = (np.mean(p[I]) - meanObsI)**2
      return Common.nanmean(bs)
Example #3
0
   def computeCore(self, data, tRange):
      [obsP,p] = Bs.getP(data, tRange)
      bs = np.nan*np.zeros(len(p), 'float')
      for i in range(0, len(self._edges)-1):
         I = np.where((p >= self._edges[i]) & (p < self._edges[i+1]))[0]
         if(len(I) > 0):
            bs[I] = (np.mean(p[I]) - obsP[I])**2
      bs   = Common.nanmean(bs)
      bsunc = np.mean(obsP)*(1-np.mean(obsP))
      if(bsunc == 0):
         bss = np.nan
      else:
         bss = (bsunc - bs)/bsunc

      return bss
Example #4
0
   def computeCore(self, data, tRange):
      # Compute probabilities based on thresholds
      p0 = 0
      p1 = 1
      if(tRange[0] != -np.inf and tRange[1] != np.inf):
         var0 = data.getPvar(tRange[0])
         var1 = data.getPvar(tRange[1])
         [obs, p0, p1] = data.getScores(["obs", var0, var1])
      elif(tRange[0] != -np.inf):
         var0 = data.getPvar(tRange[0])
         [obs, p0] = data.getScores(["obs", var0])
      elif(tRange[1] != np.inf):
         var1 = data.getPvar(tRange[1])
         [obs, p1] = data.getScores(["obs", var1])
      obsP = self.within(obs, tRange)
      p    = p1 - p0 # Prob of obs within range
      bs = np.nan*np.zeros(len(p), 'float')

      # Split into bins and compute Brier score on each bin
      for i in range(0, len(self._edges)-1):
         I = np.where((p >= self._edges[i]) & (p < self._edges[i+1]))[0]
         if(len(I) > 0):
            bs[I] = (np.mean(p[I]) - obsP[I])**2
      return Common.nanmean(bs)