def glmer(self, formula, family, lmerVar="glmer1"): if os.path.exists(".rbridge-glmer.csv"): os.remove(".rbridge-glmer.csv") # Peform lmer self.write("library(lmerTest)") s = self.call("(%s <- glmer(%s, family=%s))" % (lmerVar, formula, family)) self.write('write.csv(summary(%s)$coef, ".rbridge-glmer.csv")' % lmerVar) while not os.path.exists(".rbridge-glmer.csv"): time.sleep(0.1) # Try this a few times, because sometimes the csv hasn't been written # yet for i in range(10): try: dm = CsvReader(".rbridge-glmer.csv").dataMatrix() break except: time.sleep(1) dm.rename("f0", "effect") dm.rename("Estimate", "est") dm.rename("Std. Error", "se") dm.rename("Z value", "z") dm.rename("Pr(>|z|)", "p") dm = dm.addField("estProb", dtype=float) dm["estProb"] = 1.0 / (1.0 + np.exp(-dm["est"])) return dm
def anova(self, model1, model2, anovaVar="aov1"): """ Performs a model comparison using the R `anova()` function. The models should be fitted and given a name first, using `RBridge.lmer()`. Arguments: model1 -- The name of the first model. model2 -- The name of the first model. Keyword arguments: anovaVar -- The R variable to store the `anova()` output in. (default='aov1') Returns: A DataMatrix with the output for the model comparison. """ if os.path.exists(".rbridge-anova.csv"): os.remove(".rbridge-anova.csv") self.write("%s <- anova(%s, %s)" % (anovaVar, model1, model2)) self.call('write.csv(%s, ".rbridge-anova.csv")' % anovaVar) while not os.path.exists(".rbridge-anova.csv"): time.sleep(0.1) # Try this a few times, because sometimes the csv hasn't been written # yet for i in range(10): try: dm = CsvReader(".rbridge-anova.csv").dataMatrix() break except: time.sleep(1) dm.rename("f0", "model") return dm
def lmer(self, formula, lmerVar="lmer1"): """ descL Performs a linear mixed-effects model, using the `lmer()` function from `lme4`. arguments: formula: desc: An R-style mixed-effects formula. type: str keywords: lmerVar: desc: The R variable to store the `lmer()` output in. type: str returns: desc: A DataMatrix with the model output. type: DataMatrix """ if os.path.exists(".rbridge-lmer.csv"): os.remove(".rbridge-lmer.csv") # Peform lmer self.write("library(lmerTest)") s = self.call("(%s <- lmer(%s))" % (lmerVar, formula)) self.write('write.csv(summary(%s)$coef, ".rbridge-lmer.csv")' % lmerVar) while not os.path.exists(".rbridge-lmer.csv"): time.sleep(0.1) # Try this a few times, because sometimes the csv hasn't been written # yet for i in range(10): try: dm = CsvReader(".rbridge-lmer.csv").dataMatrix() break except: time.sleep(1) dm.rename("f0", "effect") dm.rename("Estimate", "est") dm.rename("Std. Error", "se") dm.rename("t value", "t") dm.rename("Pr(>|t|)", "p") return dm