def identify_outliers(scale_errors,needs_sort,bin,x):
  # Useful constants
  roottwo = 1.414213562373095
  madfac = 1.482602218505602
  n = len(x)
  # Get the residuals
  y = median_model(needs_sort,bin,x)
  res = []
  for i in range(n):
    res.append(y[i][1] - x[i][1])
  # Scale the errors
  if scale_errors == 1:
    maderror = madfac*median_deviation(res)
    errors = [row[2] for row in x] 
    mederror = median_(errors)
    sigmafac = maderror/mederror
    print 'Scaling errors by ',sigmafac
  else:
    sigmafac = 1.0
  # Number of sigmas to clip
  sigmas = coolmath.inverf(1.0-(1.0/n))
  # Identify outliers
  outlier=[0 for i in range(n)]
  for i in range(n):
    if abs(res[i]) >= sigmas*sigmafac*x[i][2]:
      outlier[i] = 1
    else:
      outlier[i] = 0
  print 'Number of outliers = ',sum(outlier),' [',100.0*sum(outlier)/n,'%]'
  return outlier
Exemple #2
0
def identify_outliers(scale_errors, needs_sort, bin, x):
    # Useful constants
    roottwo = 1.414213562373095
    madfac = 1.482602218505602
    n = len(x)
    # Get the residuals
    y = median_model(needs_sort, bin, x)
    res = []
    for i in range(n):
        res.append(y[i][1] - x[i][1])
    # Scale the errors
    if scale_errors == 1:
        maderror = madfac * median_deviation(res)
        errors = [row[2] for row in x]
        mederror = median_(errors)
        sigmafac = maderror / mederror
        print 'Scaling errors by ', sigmafac
    else:
        sigmafac = 1.0
    # Number of sigmas to clip
    sigmas = coolmath.inverf(1.0 - (1.0 / n))
    # Identify outliers
    outlier = [0 for i in range(n)]
    for i in range(n):
        if abs(res[i]) >= sigmas * sigmafac * x[i][2]:
            outlier[i] = 1
        else:
            outlier[i] = 0
    print 'Number of outliers = ', sum(
        outlier), ' [', 100.0 * sum(outlier) / n, '%]'
    return outlier
def truncatedgaussian_sample(xmin, xmax, mu, sigma, x):
    roottwo = 1.414213562373095
    temp = math.erfc((-xmin + mu) / (roottwo * sigma)) + x * (
        math.erfc((-xmax + mu) / (roottwo * sigma)) - math.erfc((-xmin + mu) / (roottwo * sigma))
    )
    y = mu + roottwo * sigma * coolmath.inverf(-1.0 + temp)
    return y
Exemple #4
0
import math
import coolmath

print 'x = ?'
x = float(raw_input())
y = coolmath.inverf(x)
print 'inverf(x) = ',y
print 'erf[inverf(x)] = ',math.erf(y)
Exemple #5
0
import math
import coolmath

print 'x = ?'
x = float(raw_input())
y = coolmath.inverf(x)
print 'inverf(x) = ', y
print 'erf[inverf(x)] = ', math.erf(y)
def cappedgaussian_sample(xmin, mu, sigma, x):
    roottwo = 1.414213562373095
    temp = math.erfc((-xmin + mu) / (roottwo * sigma)) + x * (2.0 - math.erfc((-xmin + mu) / (roottwo * sigma)))
    y = mu + roottwo * sigma * coolmath.inverf(-1.0 + temp)
    return y
def gaussian_sample(mu, sigma, x):
    roottwo = 1.414213562373095
    y = mu + roottwo * sigma * coolmath.inverf(-1.0 + 2.0 * x)
    return y