Example #1
0
def tst_glm():
    from scitbx.glmtbx import glm
    from scitbx.array_family import flex
    from numpy.random import poisson, seed
    from math import exp

    seed(0)

    n_obs = 100

    for c in range(1, 100):

        # Test for a constant value
        X = flex.double([1 for i in range(n_obs)])
        X.reshape(flex.grid(n_obs, 1))
        Y = flex.double(list(poisson(c, n_obs)))
        B = flex.double([0])
        P = flex.double([1 for i in range(n_obs)])
        result = glm(X, Y, B, P, family="poisson", max_iter=100)
        assert (abs(c - exp(result.parameters()[0])) < 0.1 * c)

    print('OK')
Example #2
0
def tst_glm():
  from scitbx.glmtbx import glm
  from scitbx.array_family import flex
  from numpy.random import poisson, seed
  from math import exp

  seed(0)

  n_obs = 100

  for c in range(1, 100):

    # Test for a constant value
    X = flex.double([1 for i in range(n_obs)])
    X.reshape(flex.grid(n_obs, 1))
    Y = flex.double(list(poisson(c, n_obs)))
    B = flex.double([0])
    P = flex.double([1 for i in range(n_obs)])
    result = glm(X, Y, B, P, family="poisson", max_iter=100)
    assert(abs(c - exp(result.parameters()[0])) < 0.1*c)


  print 'OK'
Example #3
0
    nobs = 100

    X1 = [1] * nobs
    X2 = [i for i in range(nobs)]
    # X1 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
    # X2 = [0, 0, 1, 2, 4, 5, 4, 3, 2, 0, 0]
    X = flex.double(item for a, b in zip(X1, X2) for item in [a, b])
    X.reshape(flex.grid(nobs, 2))
    # Y = flex.double([poisson(a*X1[i]+c*X2[i],1)[0] for i in range(nobs)])
    Y = flex.double(
        [poisson(c * X1[i] + a * X2[i], 1)[0] for i in range(nobs)])
    B = flex.double([0, 0])
    P = flex.double([1] * nobs)
    B1 = glm33(X, Y, B, P)
    print(list(B1))
    result = glm(X, Y, B, P, max_iter=1000)
    print(list(result.parameters()))

    exit(0)
    # for k in range(10):
    #   X = flex.double([item for i in range(100) for item in [1,i-50]])
    #   X.reshape(flex.grid(100, 2))
    #   Y = flex.double([poisson(a*i+c,1)[0] for i in range(100)])
    #   B = flex.double([0, 0])
    #   P = flex.double([1] * len(Y))

    #   B = glm33(X,Y,B,P)
    #   print exp(B[0]), exp(B[1])

    Y2 = []
    Y3 = []
Example #4
0
  c = 10
  nobs = 100

  X1 = [1] * nobs
  X2 = [i for i in range(nobs)]
  # X1 = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
  # X2 = [0, 0, 1, 2, 4, 5, 4, 3, 2, 0, 0]
  X = flex.double(item for a, b in zip(X1, X2) for item in [a, b])
  X.reshape(flex.grid(nobs, 2))
  # Y = flex.double([poisson(a*X1[i]+c*X2[i],1)[0] for i in range(nobs)])
  Y = flex.double([poisson(c*X1[i]+a*X2[i],1)[0] for i in range(nobs)])
  B = flex.double([0, 0])
  P = flex.double([1] * nobs)
  B1 = glm33(X,Y,B,P)
  print list(B1)
  result = glm(X,Y,B,P, max_iter=1000)
  print list(result.parameters())

  exit(0)
  # for k in range(10):
  #   X = flex.double([item for i in range(100) for item in [1,i-50]])
  #   X.reshape(flex.grid(100, 2))
  #   Y = flex.double([poisson(a*i+c,1)[0] for i in range(100)])
  #   B = flex.double([0, 0])
  #   P = flex.double([1] * len(Y))

  #   B = glm33(X,Y,B,P)
  #   print exp(B[0]), exp(B[1])

  Y2 = []
  Y3 = []
Example #5
0
      flex.double(initial),
      max_iter=1000)
    assert result.converged()
    tt += time() - st

    beta = list(result.parameters())

    print beta

    Y2 = [exp(beta[0]*x[0] + beta[1]*x[1]) for x in X]

    P = [1.0 for x in X]

    result = glm(
      flex.double(X),
      flex.double(Y1),
      flex.double(initial),
      flex.double(P),
      max_iter=1000)
    assert result.converged()

    beta = list(result.parameters())

    print beta

    Y3 = [exp(beta[0]*x[0] + beta[1]*x[1]) for x in X]

    m1 = max(Y1)
    m2 = max(Y2)
    m3 = max(Y3)
    m = ceil(max([m1,m2,m3]))
Example #6
0
                            max_iter=1000)
        assert result.converged()
        tt += time() - st

        beta = list(result.parameters())

        print(beta)

        Y2 = [exp(beta[0] * x[0] + beta[1] * x[1]) for x in X]

        P = [1.0 for x in X]

        result = glm(
            flex.double(X),
            flex.double(Y1),
            flex.double(initial),
            flex.double(P),
            max_iter=1000,
        )
        assert result.converged()

        beta = list(result.parameters())

        print(beta)

        Y3 = [exp(beta[0] * x[0] + beta[1] * x[1]) for x in X]

        m1 = max(Y1)
        m2 = max(Y2)
        m3 = max(Y3)
        m = ceil(max([m1, m2, m3]))