Commit cb109285 authored by Eduardo E. R. Junior's avatar Eduardo E. R. Junior

Retira argumento offset e complementa documentação em 'cmp'

 - Retira a inclusão de offset na log-verossimilhança, pois a
   inclusão desse termo foi inadequada. Incorporar offset nos
   modelos COM-Poisson não é tão trivial.
 - Importa funções de pacote básicos do R, para evitar problemas
   caso essas funções não tenham sido carregadas.
 - Adéqua documentação seguindo os exemplos de 'pgnz' e 'gcnt' no
   ramo walmes.
parent 2253d73d
Pipeline #4541 failed with stage
......@@ -15,3 +15,9 @@ import(latticeExtra)
import(multcomp)
importFrom(grDevices,extendrange)
importFrom(lattice,xyplot)
importFrom(stats,glm.fit)
importFrom(stats,model.frame)
importFrom(stats,model.matrix)
importFrom(stats,model.offset)
importFrom(stats,model.response)
importFrom(stats,poisson)
......@@ -240,31 +240,53 @@ dcmp <- function(y, lambda, nu, sumto) {
}
#' @title Ajuste do Modelo Conway-Maxwell-Poisson
#' @description Estima os parâmetros de um modelo COM-Poisson sob a
#' otimização da função de log-verossimilhança. A sintaxe
#' assemelha-se com a função \code{\link{glm}} (Generalized Linear
#' Models).
#' @param formula Um objeto da classe \code{\link{formula}}. Se
#' necessária a inclusão de \emph{offset} deve-se indicá-lo como
#' \code{\link{offset}}.
#' @param data Um objeto de classe \code{data.frame}, cujo contém as
#' @author Eduardo E. R. Junior, \email{edujrrib@gmail.com}
#' @export
#' @description Estima os parâmetros de um modelo COM-Poisson pela
#' otimização da função de log-verossimilhança definida em
#' \code{\link{llcmp}}. A sintaxe assemelha-se com a função
#' \code{\link{glm}} (Generalized Linear Models).
#' @param formula Um objeto da classe \code{\link{formula}}.
#' @param data Um objeto de classe \code{data.frame}, que contém as
#' variáveis descritas na \code{formula}.
#' @param start Um vetor de parâmetros do modelo tomados como valores
#' iniciais para o algoritmo iterativo. Se \code{NULL} os parâmetros
#' de um modelo log-linear Poisson e \eqn{\phi = 0} são tomados como
#' valores iniciais para o preditor e para o parâmetro de dispersão.
#' @param start Um vetor nomeado com os valores iniciais para os
#' parâmetros do modelo necessários para o início do procedimento de
#' estimação. Se \code{NULL} as estimativas de um modelo log-linear
#' Poisson, com \eqn{\phi = 0}, são utilizadas como valores
#' iniciais, pois uma chamada da \code{\link[stats]{glm.fit}} é
#' feita internamente para obtê-los. O parâmetro \eqn{\phi} deve ser
#' o primeiro elemento do vetor. Os restantes devem estar na
#' correspondente às colunas da matriz gerada pelo argumento
#' \code{formula}.
#' @param sumto Número de incrementos a serem considerados para a soma
#' da constante normalizadora. Como padrão, \code{NULL} o número de
#' incrementos é o valor inteiro de \eqn{(\max y)^1.2}.
#' daa constantea normalizadoraa. Como padrão, \code{NULL} o número
#' de incrementos é o valor inteiro de \eqn{(\max y)^1.2}, porém
#' ressalta-se que este valor padrão não é o ideal. Uma avaliação da
#' escolha desse argumento, pós ajuste pode ser realizada via
#' \code{\link[MRDCr]{convergencez}}.
#' @param ... Argumentos opcionais do framework de maximização numérica
#' \code{\link[bbmle]{mle2}}.
#' @return Um objeto de classe \code{mle2}, retornado da função de
#' \code{\link[bbmle]{mle2}}, usada para ajuste de modelos por
#' máxima verossimilhança.
#' @author Eduardo E. R. Junior, \email{edujrrib@gmail.com}
#' @import bbmle
#' @export
#' @importFrom stats glm.fit model.frame model.matrix model.offset
#' model.response poisson
#' @examples
#' str(capdesfo)
#' m0 <- cmp(ncap ~ est + (des + I(des^2)), data = capdesfo, sumto = 40)
#' m1 <- cmp(ncap ~ est * (des + I(des^2)), data = capdesfo, sumto = 40)
#'
#' convergencez(m0)
#' convergencez(m1)
#'
#' library(bbmle)
#' anova(m0, m1)
#' summary(m1)
#'
#' \dontrun{
#' plot(profile(m1, which = "phi"))
#' }
cmp <- function(formula, data, start = NULL, sumto = NULL, ...) {
##-------------------------------------------
## Constrói as matrizes do modelo
......@@ -272,19 +294,21 @@ cmp <- function(formula, data, start = NULL, sumto = NULL, ...) {
terms <- attr(frame, "terms")
y <- model.response(frame)
X <- model.matrix(terms, frame)
off <- model.offset(frame)
if (is.null(sumto)) sumto <- ceiling(max(y)^1.5)
if(!is.null(model.offset(frame))) {
stop("Este modelo ainda nao suporta offset")
}
if (is.null(sumto)) sumto <- ceiling(max(y)^1.2)
##-------------------------------------------
## Define os chutes iniciais
if (is.null(start)) {
m0 <- glm.fit(x = X, y = y, offset = off, family = poisson())
m0 <- glm.fit(x = X, y = y, family = poisson())
start <- c("phi" = 0, m0$coefficients)
}
##-------------------------------------------
## Nomeia os parâmetros da função para métodos bbmle
bbmle::parnames(llcmp) <- names(start)
model <- bbmle::mle2(llcmp, start = start,
data = list(y = y, X = X, offset = off,
data = list(y = y, X = X,
sumto = sumto),
vecpar = TRUE, ...)
return(model)
......
......@@ -7,21 +7,27 @@
cmp(formula, data, start = NULL, sumto = NULL, ...)
}
\arguments{
\item{formula}{Um objeto da classe \code{\link{formula}}. Se
necessária a inclusão de \emph{offset} deve-se indicá-lo como
\code{\link{offset}}.}
\item{formula}{Um objeto da classe \code{\link{formula}}.}
\item{data}{Um objeto de classe \code{data.frame}, cujo contém as
\item{data}{Um objeto de classe \code{data.frame}, que contém as
variáveis descritas na \code{formula}.}
\item{start}{Um vetor de parâmetros do modelo tomados como valores
iniciais para o algoritmo iterativo. Se \code{NULL} os parâmetros
de um modelo log-linear Poisson e \eqn{\phi = 0} são tomados como
valores iniciais para o preditor e para o parâmetro de dispersão.}
\item{start}{Um vetor nomeado com os valores iniciais para os
parâmetros do modelo necessários para o início do procedimento de
estimação. Se \code{NULL} as estimativas de um modelo log-linear
Poisson, com \eqn{\phi = 0}, são utilizadas como valores
iniciais, pois uma chamada da \code{\link[stats]{glm.fit}} é
feita internamente para obtê-los. O parâmetro \eqn{\phi} deve ser
o primeiro elemento do vetor. Os restantes devem estar na
correspondente às colunas da matriz gerada pelo argumento
\code{formula}.}
\item{sumto}{Número de incrementos a serem considerados para a soma
da constante normalizadora. Como padrão, \code{NULL} o número de
incrementos é o valor inteiro de \eqn{(\max y)^1.2}.}
daa constantea normalizadoraa. Como padrão, \code{NULL} o número
de incrementos é o valor inteiro de \eqn{(\max y)^1.2}, porém
ressalta-se que este valor padrão não é o ideal. Uma avaliação da
escolha desse argumento, pós ajuste pode ser realizada via
\code{\link[MRDCr]{convergencez}}.}
\item{...}{Argumentos opcionais do framework de maximização numérica
\code{\link[bbmle]{mle2}}.}
......@@ -32,10 +38,26 @@ Um objeto de classe \code{mle2}, retornado da função de
máxima verossimilhança.
}
\description{
Estima os parâmetros de um modelo COM-Poisson sob a
otimização da função de log-verossimilhança. A sintaxe
assemelha-se com a função \code{\link{glm}} (Generalized Linear
Models).
Estima os parâmetros de um modelo COM-Poisson pela
otimização da função de log-verossimilhança definida em
\code{\link{llcmp}}. A sintaxe assemelha-se com a função
\code{\link{glm}} (Generalized Linear Models).
}
\examples{
str(capdesfo)
m0 <- cmp(ncap ~ est + (des + I(des^2)), data = capdesfo, sumto = 40)
m1 <- cmp(ncap ~ est * (des + I(des^2)), data = capdesfo, sumto = 40)
convergencez(m0)
convergencez(m1)
library(bbmle)
anova(m0, m1)
summary(m1)
\dontrun{
plot(profile(m1, which = "phi"))
}
}
\author{
Eduardo E. R. Junior, \email{edujrrib@gmail.com}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment