def _altModelMixedEffectNonLinear1Kernel(self, G1, approx, link, penalty): if self.forcefullrank: assert False, 'Not working, call Danilo' assert False, "Not implemented yet." else: glmm1 = inference.getGLMM(approx, link, self.Y, G1, None, penalty=penalty) glmm1.setX(self.X) glmm1.sety(self.Y) glmm1.setG(G1) glmm1.optimize() assert glmm1.sig02 >= 0.0 and glmm1.sign2 >= 0 if glmm1.sig02 + glmm1.sign2 <= NP.sqrt(NP.finfo(NP.float).eps): h2 = NP.nan else: h2 = glmm1.sig02 / (glmm1.sig02 + glmm1.sign2) a2 = NP.nan lik1 = {'nLL':-glmm1.marginal_loglikelihood(), 'h2':h2, 'a2':a2} lik1['sig02'] = glmm1.sig02 lik1['sig12'] = glmm1.sig12 lik1['sign2'] = glmm1.sign2 for i in range(len(glmm1.beta)): lik1['beta' + str(i)] = glmm1.beta[i] stat = 2.0*(self.model0['nLL'] - lik1['nLL']) return (lik1,stat)
def _nullModelMixedEffectNonLinear2Kernel(self, G0, approx, link, penalty): if self.forcefullrank: assert False, "Not implemented yet." else: glmm0 = inference.getGLMM(approx, link, self.Y, G0, None, penalty=penalty) glmm0.setX(self.X) glmm0.setG(G0) glmm0.sety(self.Y) glmm0.optimize() self.model0 = {} if glmm0.sig02 + glmm0.sign2 <= NP.sqrt(NP.finfo(NP.float).eps): h2 = NP.nan else: h2 = glmm0.sig02 / (glmm0.sig02 + glmm0.sign2) self.model0['h2'] = h2 self.model0['a2'] = 0.0 self.model0['nLL'] = -glmm0.marginal_loglikelihood() self.model0['sig02'] = glmm0.sig02 self.model0['sig12'] = glmm0.sig12 self.model0['sign2'] = glmm0.sign2 for i in range(len(glmm0.beta)): self.model0['beta' + str(i)] = glmm0.beta[i]
def _nullModelMixedEffectNonLinear1Kernel(self, approx, link, penalty): if self.forcefullrank: assert False, "Not implemented yet." else: glmm0 = inference.getGLMM(approx, link, self.Y, None, None, penalty=penalty) glmm0.setX(self.X) glmm0.sety(self.Y) glmm0.optimize() self.model0 = {} self.model0['h2']=0.0 self.model0['a2']=NP.nan self.model0['nLL']=-glmm0.marginal_loglikelihood() self.model0['sig02'] = glmm0.sig02 self.model0['sig12'] = glmm0.sig12 self.model0['sign2'] = glmm0.sign2 for i in range(len(glmm0.beta)): self.model0['beta' + str(i)] = glmm0.beta[i]
def _altModelMixedEffectNonLinear2Kernel(self, G1, approx, link, penalty): if self.forcefullrank: assert False, "Not implemented yet." else: glmm1 = inference.getGLMM(approx, link, self.Y, self.G0, G1, penalty=penalty) glmm1.setX(self.X) glmm1.sety(self.Y) glmm1.setG(self.G0, G1) glmm1.optimize() assert glmm1.sig02 >= 0.0 and glmm1.sig12 >= 0.0 and glmm1.sign2 >= 0 if glmm1.sig02 + glmm1.sig12 + glmm1.sign2 <= NP.sqrt( NP.finfo(NP.float).eps): # in this case we don't have enough precision to calculate the # proportion between sig02+sig12 and the total or it does not make sense # because the covariance of the posterior tends to zero h2 = NP.nan else: h2 = (glmm1.sig02 + glmm1.sig12) / (glmm1.sig02 + glmm1.sig12 + glmm1.sign2) if glmm1.sig02 + glmm1.sig12 <= NP.sqrt(NP.finfo(NP.float).eps): a2 = NP.nan else: a2 = glmm1.sig12 / (glmm1.sig02 + glmm1.sig12) lik1 = {'nLL': -glmm1.marginal_loglikelihood(), 'h2': h2, 'a2': a2} lik1['sig02'] = glmm1.sig02 lik1['sig12'] = glmm1.sig12 lik1['sign2'] = glmm1.sign2 for i in range(len(glmm1.beta)): lik1['beta' + str(i)] = glmm1.beta[i] stat = 2.0 * (self.model0['nLL'] - lik1['nLL']) return (lik1, stat)
def _altModelMixedEffectNonLinear2Kernel(self, G1, approx, link, penalty): if self.forcefullrank: assert False, "Not implemented yet." else: glmm1 = inference.getGLMM(approx, link, self.Y, self.G0, G1, penalty=penalty) glmm1.setX(self.X) glmm1.sety(self.Y) glmm1.setG(self.G0, G1) glmm1.optimize() assert glmm1.sig02 >= 0.0 and glmm1.sig12 >= 0.0 and glmm1.sign2 >= 0 if glmm1.sig02 + glmm1.sig12 + glmm1.sign2 <= NP.sqrt(NP.finfo(NP.float).eps): # in this case we don't have enough precision to calculate the # proportion between sig02+sig12 and the total or it does not make sense # because the covariance of the posterior tends to zero h2 = NP.nan else: h2 = (glmm1.sig02+glmm1.sig12) / (glmm1.sig02 + glmm1.sig12 + glmm1.sign2) if glmm1.sig02 + glmm1.sig12 <= NP.sqrt(NP.finfo(NP.float).eps): a2 = NP.nan else: a2 = glmm1.sig12 / (glmm1.sig02+glmm1.sig12) lik1 = {'nLL':-glmm1.marginal_loglikelihood(), 'h2':h2, 'a2':a2} lik1['sig02'] = glmm1.sig02 lik1['sig12'] = glmm1.sig12 lik1['sign2'] = glmm1.sign2 for i in range(len(glmm1.beta)): lik1['beta' + str(i)] = glmm1.beta[i] stat = 2.0*(self.model0['nLL'] - lik1['nLL']) return (lik1,stat)