From f47d0eb8eecdd8d4a5fffcc1bab5e58efe418937 Mon Sep 17 00:00:00 2001
From: Walmes Zeviani <walmes@ufpr.br>
Date: Thu, 12 May 2016 15:30:59 -0300
Subject: [PATCH] Corrige problema de offset.

---
 R/gcnt.R | 8 +++++++-
 R/pgnz.R | 8 +++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/R/gcnt.R b/R/gcnt.R
index 91f5cc8..6e157ba 100644
--- a/R/gcnt.R
+++ b/R/gcnt.R
@@ -238,6 +238,11 @@ dgcnt <- function(y, lambda, alpha) {
 #'
 #' @importFrom stats glm.fit model.frame model.matrix model.offset model.response poisson
 gcnt <- function(formula, data, start = NULL, ...) {
+    if (!requireNamespace("bbmle", quietly = TRUE)){
+        stop(paste("`bbmle` \u00e9 necess\u00e1rio para",
+                   "essa fun\u00e7\u00e3o. Por favor, instale-o."),
+             call. = FALSE)
+    }
     frame <- model.frame(formula, data)
     terms <- attr(frame, "terms")
     y <- model.response(frame)
@@ -247,9 +252,10 @@ gcnt <- function(formula, data, start = NULL, ...) {
         m0 <- glm.fit(x = X, y = y, offset = off, family = poisson())
         start <- c("alpha" = 0, m0$coefficients)
     }
+    off <- if (is.null(off)) { NULL } else { exp(off) }
     bbmle::parnames(llgcnt) <- names(start)
     model <- bbmle::mle2(minuslogl = llgcnt, start = start,
-                         data = list(y = y, X = X, offset = exp(off)),
+                         data = list(y = y, X = X, offset = off),
                          vecpar = TRUE, ...)
     return(model)
 }
diff --git a/R/pgnz.R b/R/pgnz.R
index 5493108..4a352ea 100644
--- a/R/pgnz.R
+++ b/R/pgnz.R
@@ -216,6 +216,11 @@ dpgnz <- function(y, lambda, alpha) {
 #'
 #' @importFrom stats glm.fit model.frame model.matrix model.offset model.response poisson
 pgnz <- function(formula, data, start = NULL, ...) {
+    if (!requireNamespace("bbmle", quietly = TRUE)){
+        stop(paste("`bbmle` \u00e9 necess\u00e1rio para",
+                   "essa fun\u00e7\u00e3o. Por favor, instale-o."),
+             call. = FALSE)
+    }
     frame <- model.frame(formula, data)
     terms <- attr(frame, "terms")
     y <- model.response(frame)
@@ -225,9 +230,10 @@ pgnz <- function(formula, data, start = NULL, ...) {
         m0 <- glm.fit(x = X, y = y, offset = off, family = poisson())
         start <- c("alpha" = 0, m0$coefficients)
     }
+    off <- if (is.null(off)) { NULL } else { exp(off) }
     bbmle::parnames(llpgnz) <- names(start)
     model <- bbmle::mle2(minuslogl = llpgnz, start = start,
-                         data = list(y = y, X = X, offset = exp(off)),
+                         data = list(y = y, X = X, offset = off),
                          vecpar = TRUE, ...)
     return(model)
 }
-- 
GitLab