예제 #1
0
def hmm():
  states = []
  states.append(stocPy.stocPrim("categorical", (sProbs,), obs=True, part=pind))
  for i in range(1,17):
    #print states
    states.append(stocPy.stocPrim("categorical", (tProbs[states[i-1]],), obs=True, part=pind))
    stocPy.normal(eMeans[states[i]], 1, cond=obs[i-1])
예제 #2
0
def marsaglia(mean, var):
  x = stocPy.stocPrim("uniform", (-1, 2), part=pind) #ss params are start and length of interval
  y = stocPy.stocPrim("uniform", (-1, 2), part=pind)
  s = x*x + y*y
  #print sampleInd, depth, x, y, s
  if s < 1:
    return mean + (math.sqrt(var) * (x * math.sqrt(-2 * (math.log(s) / s))))
  else:
    return marsaglia(mean, var)
예제 #3
0
def dpmLazy():
  crp = stocPy.crp(1.72)
  sds = {}
  ms = {}
  for i in range(len(obs)):
    c = crp(i)
    if c not in ms:
      sds[c] = math.sqrt(10 * stocPy.stocPrim("invgamma", (1, 0, 10), part=4))
      ms[c] = stocPy.stocPrim("normal", (0, sds[c]), part=4)
    stocPy.normal(ms[c], sds[c], obs[i])
  obsLens.append(len(ms))
예제 #4
0
def dpmEager():
  crp = stocPy.crp(1.72, 10)
  sds = {}
  ms = {}
  cs = {}
  for ps in range(len(crp)):
    sds[ps] = math.sqrt(10 * stocPy.stocPrim("invgamma", (1, 0, 10), part=2))
    ms[ps] = stocPy.stocPrim("normal", (0, sds[ps]), part=2)
    for p in crp[ps]:
     cs[p] = ps

  for i in range(len(obs)):
    stocPy.normal(ms[cs[i]], sds[cs[i]], obs[i])
  obsLens.append(len(ms))
예제 #5
0
def categorical(ps): #scipy.stats has no categorical. Should implement this in StocPy eventually.
  assert(abs(sum(ps) - 1) < 0.0001)
  c = stocPy.stocPrim("uniform", (0,1), part=pind) 
  s = 0
  for i in range(len(ps)):
    s += ps[i]
    if s > c:
      return i
  assert(False) #shouldn't ever get here
예제 #6
0
def normal8DecU20():
  n = stocPy.stocPrim("randint", (0, 21))
  var = 1.0
  ms = []
  for i in range(n):
    ms.append(stocPy.normal(0, math.sqrt(var/(2**(i+1))), obs=True))
  ms.append(stocPy.normal(0, math.sqrt(var/(2**n)), obs=True))
  m = 10000 * ss.norm.cdf(sum(ms), loc = 0, scale = 1)
  for datum in normalData:
    stocPy.normal(m, 1, datum)
예제 #7
0
def lettersPerDayPart10(): # generative model
  expectedLetters = stocPy.stocPrim("uniform",(0, 20), obs=True, part=10) # prior on the number of letters
  for datum in noLetters:
    stocPy.poisson(expectedLetters, cond=datum) # conditioning on the data we have
예제 #8
0
def normal8Part2():
  m = stocPy.stocPrim("uniform", (0, 10000), obs=True, part=10)
  for datum in normalData:
    stocPy.normal(m, 1, datum)
예제 #9
0
def normal8Part():
  m = stocPy.stocPrim("uniform", (0, 10000), obs=True, part=stocPy.stocPrim("randint", (0, 21)))
  for datum in normalData:
    stocPy.normal(m, 1, datum)
예제 #10
0
def normal8():
  m = stocPy.stocPrim("uniform", (0, 10000), obs=True)
  for datum in normalData:
    stocPy.normal(m, 1, datum)