Exemplo n.º 1
0
def checkDistRuntime(tp = 0):
  times = []
  xs = []
  for d in np.logspace(-7,2,100):
    v = make_church_prime_ripl()
    timeStart = time.time()
    if tp == 0:
      v.assume("y", "(student_t %f)" % d)
    elif tp == 1:
      v.assume("y", "(uniform_continuous 0 %f)" % d)
    samples = pu.posterior_samples(v, "y", no_samples=100, no_burns=0, int_mh=1, silent=True)
    vals = map(lambda x:x[1], samples)
    times.append(time.time() - timeStart)
    xs.append(d)
    print d, np.mean(vals), times[-1]

  print xs
  print times

  plt.plot(xs,times, '-x')

  if tp == 0:
    plt.xlabel("Degrees of freedom")
    plt.ylabel("Seconds")
    plt.title("Speed of generating 100 unconditioned student_t samples")
    plt.ylim([0,max(max(times),1)])
  elif tp == 1:
    plt.xlabel("Upper limit of interval (x)")
    plt.ylabel("Seconds")
    plt.title("Speed of generating 100 unconditioned (uniform_continuous 0 x) samples")
    plt.xscale("log")
    plt.ylim([0,max(max(times),1)])
  plt.show()
Exemplo n.º 2
0
def testCont(ys, sample, burn, lag):
  pals = [0,0.5,1,2,5,10,20]
  with open("contConvRT",'w') as f:
    for i1 in range(len(pals)):
      for i2 in range(len(pals))[i1:]:
        for i3 in range(len(pals))[i2:]:
          for i4 in range(len(pals))[i3:]:
            p1 = pals[i1]
            p2 = pals[i2]
            p3 = pals[i3]
            p4 = pals[i4]
            v = make_church_prime_ripl()
            timeStart = time.time()
            rest = 100.0 - (p1 + p2 + p3 + p4)
            if p1 > 0:
              v.assume("d1", "(uniform_continuous 0 " + str(p1) + ")")
            else:
              v.assume("d1", "0")
            if p2 > 0:
              v.assume("d2", "(uniform_continuous 0 " + str(p2) + ")")
            else:
              v.assume("d2", "0")
            if p3 > 0:
              v.assume("d3", "(uniform_continuous 0 " + str(p3) + ")")
            else:
              v.assume("d3", "0")
            if p4 > 0:
              v.assume("d4", "(uniform_continuous 0 " + str(p4) + ")")
            else:
              v.assume("d4", "0")
            v.assume("r", "(uniform_continuous 2 " + str(rest) + ")")
            v.assume("d", "(+ d1 d2 d3 d4 r)")#(uniform_continuous 0 5) (uniform_continuous 0 1))")
            v.assume("y", "(lambda () (student_t d))")

            [v.observe("(y)", str(ys[i])) for i in range(len(ys))]
            samples = pu.posterior_samples(v, "d", no_samples=sample, no_burns=burn, int_mh=lag)
            vals = map(lambda x:x[1], samples)
            print rest, p1, p2, p3, p4, np.mean(vals), np.var(vals), time.time() - timeStart
            f.write("==== " + str((rest,p1,p2,p3,p4,time.time() - timeStart)) + "\n" + str(vals))
            f.flush()
Exemplo n.º 3
0
def repeatCont(ys, sample, burn, lag):
  with open("contRepeats10F",'w') as f:
    means = []
    times = []
    for j in range(10):
      v = make_church_prime_ripl()
      timeStart = time.time()
      v.assume("d1", "(uniform_continuous 0 99.9978)")
      v.assume("d2", "(uniform_continuous 0 0.001)")
      v.assume("d3", "(uniform_continuous 0 0.001)")
      v.assume("d4", "(uniform_continuous 0 0.0001)")
      v.assume("d5", "(uniform_continuous 0 0.0001)")
      v.assume("d", "(+ d1 d2 d3 d4 d5)")
      v.assume("y", "(lambda () (student_t d))")

      [v.observe("(y)", str(ys[i])) for i in range(len(ys))]
      samples = pu.posterior_samples(v, "d", no_samples=sample, no_burns=burn, int_mh=lag)
      vals = map(lambda x:x[1], samples)
      means.append(np.mean(vals))
      times.append(time.time() - timeStart)
      print j, means[-1], times[-1]
      f.write(str((j, means[-1], times[-1])) + "\n")
      f.flush()
    f.write(str(("Total: ", np.mean(means), np.mean(times))))
Exemplo n.º 4
0
def runModel(v, ys, mType, sample, burn, lag, fnAdd = "", timeTest = False, silentSamp = False):
  timeStart = time.time()
  if mType == "cont":
    v.assume("d", "(uniform_continuous 2 100)")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "cont5var":
    v.assume("d1", "(uniform_continuous 2 100)")
    v.assume("d2", "(uniform_continuous 0 0.001)")
    v.assume("d3", "(uniform_continuous 0 0.001)")
    v.assume("d4", "(uniform_continuous 0 0.0001)")
    v.assume("d5", "(uniform_continuous 0 0.0001)")
    v.assume("d", "(+ d1 d2 d3 d4 d5)") #(uniform_continuous 0 5) (uniform_continuous 0 1))")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "contBin":
    v.assume("f1", "(* 0.5 (categorical 0.5 0.5))")
    v.assume("r", "(uniform_continuous 0 0.5)")
    v.assume("d", "(+ f1 r)")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "contBin3":
    v.assume("f0", "(* 0.5 (uniform_discrete 0 2))")
    v.assume("f1", "(* 0.25 (uniform_discrete 0 2))")
    v.assume("f2", "(* 0.125 (uniform_discrete 0 2))")
    v.assume("r", "(uniform_continuous 0 0.125)")
    v.assume("d", "(+ 2 (* 98 (+ f0 f1 f2 r)))")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "contBin7":
    v.assume("f0", "(* 0.5 (uniform_discrete 0 2))")
    v.assume("f1", "(* 0.25 (uniform_discrete 0 2))")
    v.assume("f2", "(* 0.125 (uniform_discrete 0 2))")
    v.assume("f3", "(* 0.0625 (uniform_discrete 0 2))")
    v.assume("f4", "(* 0.03125 (uniform_discrete 0 2))")
    v.assume("f5", "(* 0.015625 (uniform_discrete 0 2))")
    v.assume("f6", "(* 0.0078125 (uniform_discrete 0 2))")
    v.assume("r", "(uniform_continuous 0 0.0078125)")
    v.assume("d", "(+ 2 (* 98 (+ f0 f1 f2 f3 f4 f5 f6 r)))")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "contMix":
    v.assume("d1", "(uniform_continuous 2 97)")
    v.assume("d2", "(uniform_continuous 0 1)")
    v.assume("d3", "(uniform_continuous 0 2)") 
    v.assume("d", "(+ d1 d2 d3)") #(uniform_continuous 0 5) (uniform_continuous 0 1))")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "flip":
    v.assume("d0", "(uniform_continuous 0 1)")
    v.assume("f0", "(uniform_discrete 0 2)")
    v.assume("f1", "(* 2 (uniform_discrete 0 2))")
    v.assume("f2", "(* 4 (uniform_discrete 0 2))")
    v.assume("f3", "(* 8 (uniform_discrete 0 2))")
    v.assume("f4", "(* 16 (uniform_discrete 0 2))")
    v.assume("f5", "(* 32 (uniform_discrete 0 2))")
    v.assume("f6", "(* 64 (uniform_discrete 0 2))")
    v.assume("d", "(+ (+ (+ d0 f0) (+ f1 f2)) (+ (+ f3 f4) (+ f5 f6)))") #(uniform_continuous 0 5) (uniform_continuous 0 1))")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "disc1":
    v.assume("d", "(uniform_discrete 2 50)")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "disc2":
    v.assume("d", "(/ (uniform_discrete 20 60) 10)")
    v.assume("y", "(lambda () (student_t d))")
  elif mType == "disc21":
    v.assume("d", "(uniform_discrete 20 60)")
    v.assume("y", "(lambda () (student_t (/ d 10)))")
  else:
    raise Exception("Unknown model type: " + mType)

  [v.observe("(y)", str(ys[i])) for i in range(len(ys))]
  samples = pu.posterior_samples(v, "d", no_samples=sample, no_burns=burn, int_mh=lag, silent = silentSamp)

  if timeTest:
    return time.time() - timeStart
  print '\n'.join([str(samples[i][1]) for i in range(len(samples)) if i%10==0])
  #v.infer(11000000)
  vals = map(lambda x:x[1], samples)
  print "Sample mean: ", np.mean(vals), " Sample Stdev: ", np.std(vals)
  pu.save_samples(samples, os.getcwd(), fnAdd+mType)
Exemplo n.º 5
0
def genTdf(v):
  v.assume("y", "(student_t 4)")
  samples = pu.posterior_samples(v, "y", no_samples=1000, no_burns=0, int_mh=1)