コード例 #1
0
    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']
コード例 #2
0
    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)