def __init__(self, X, dist='OLS', alphas=[0.05, 0.01], log=True): self.X, self.xLen, self.dist, self.permute, self.zero_prob, self.alphas, self.dfd, self.dfn = X, len( X.names), dist, self.permute_REG, 0.0, alphas, len( X.names) - 1, len(X.array) - len(X.names) #F_KEY = {'TW': sfams.Tweedie(link=slinks.log), 'PO': sfams.Poisson(link=slinks.log), 'NB': sfams.NegativeBinomial(link=slinks.log), 'GA': sfams.Gamma(link=slinks.log), 'NO': sfams.Gaussian(link=slinks.log)} F_KEY = { 'TW': sfams.Tweedie(), 'PO': sfams.Poisson(), 'NB': sfams.NegativeBinomial(), 'GA': sfams.Gamma(), 'NO': sfams.Gaussian() } if self.dist.upper() == 'OLS': self.reg, self.execute = sm.OLS, self.execute_REG elif self.dist.upper()[0] == 'G': self.reg, self.execute, self.family = scm.ZeroInflatedNegativeBinomialP, self.execute_GIN, F_KEY[ 'NB'] elif self.dist.upper()[0] != 'Z': self.execute, self.permute, self.family = self.execute_GLM, self.permute_GLM, F_KEY[ self.dist.upper()[0:2]] else: if self.dist.upper()[0:3] in ['ZIP', 'ZPO']: self.reg, self.execute, self.family = CUSTOM_ZPO, self.execute_ZIN, F_KEY[ 'PO'] elif self.dist.upper()[0:3] in ['ZIN', 'ZNB']: self.reg, self.execute, self.family = CUSTOM_ZNB, self.execute_ZIN, F_KEY[ 'NB'] elif self.dist.upper()[0:3] in ['ZGP', 'ZGP']: self.reg, self.execute, self.family = CUSTOM_ZGP, self.execute_ZIN, F_KEY[ 'GP']
def setup_class(cls): # adjusted for Gamma, not in test_gee.py vs = Independence() family = families.Gamma(link=links.log) np.random.seed(987126) #Y = np.random.normal(size=100)**2 Y = np.exp(0.1 + np.random.normal(size=100)) # log-normal X1 = np.random.normal(size=100) X2 = np.random.normal(size=100) X3 = np.random.normal(size=100) groups = np.random.randint(0, 4, size=100) D = pd.DataFrame({"Y": Y, "X1": X1, "X2": X2, "X3": X3}) mod1 = GEE.from_formula("Y ~ X1 + X2 + X3", groups, D, family=family, cov_struct=vs) cls.result1 = mod1.fit() mod2 = GLM.from_formula("Y ~ X1 + X2 + X3", data=D, family=family) cls.result2 = mod2.fit(disp=False)