Commit 2253d73d authored by Eduardo E. R. Junior's avatar Eduardo E. R. Junior

Modifica argumentos e complementa documentação da 'dcmp'

 - A função agora recebe os parâmetros lambda e nu, conforme
   parametrização original da distribuição.
 - A documentação foi alterada conforme 'dgcnt' e 'dpgnz' do ramo
   walmes.
para manter os parâmetros originais da distribuição
parent 53df5e91
...@@ -186,32 +186,56 @@ llcmp <- function(params, y, X, sumto = ceiling(max(y)^1.2)){ ...@@ -186,32 +186,56 @@ llcmp <- function(params, y, X, sumto = ceiling(max(y)^1.2)){
} }
#' @title Probabilidades do Modelo Conway-Maxwell-Poisson #' @title Probabilidades do Modelo Conway-Maxwell-Poisson
#' @description Calcula as probabilidades conforme modelo COM-Poisson
#' @param y Valor da contagem
#' @param loglambda Logaritmo neperiano do parâmetro \eqn{\lambda} da
#' distribuição
#' @param phi Valor do parâmetro \eqn{\phi}, definido como
#' \eqn{\log(\nu)} na distribuição de probabilidades COM-Poisson
#' @param sumto Número de incrementos a serem considerados para a soma
#' da constante normalizadora Z.
#' @author Eduardo E. R. Junior, \email{edujrrib@gmail.com} #' @author Eduardo E. R. Junior, \email{edujrrib@gmail.com}
#' @examples
#' dpois(5, 5)
#' dcmp(5, log(5), 0, sumto = 20)
#'
#' x <- 0:30
#' px1 <- dpois(x, 15)
#' px2 <- dcmp(x, log(915), log(2.5), sumto = 50)
#' px3 <- dcmp(x, log(2.2), log(0.3), sumto = 50)
#'
#' plot(y = px2, x = x, type = "h", lwd = 2)
#' lines(y = px1, x = x - 0.2, type = "h", lwd = 2, col = 4)
#' lines(y = px3, x = x + 0.2, type = "h", lwd = 2, col = 2)
#' @export #' @export
#' @description Calcula as probabilidades para uma variável aleatória
#' distribuída conforme modelo COM-Poisson.
#'
#' \deqn{p(y,\lambda,\nu) =
#' \frac{\lambda^y}{(y!)^\nu Z(\lambda, \nu)}
#' }
#'
#' em que \eqn{Z(\lambda, \nu)} é a constante de normalização definida
#' por \eqn{\sum_{j=0}^{\infty} \frac{\lambda^j}{(j!)^\nu}}. Nesta
#' implementação o número de incrementos considerados para cálculo
#' dessa constante é definido por \code{sumto}. \eqn{\lambda > 0} e
#' \eqn{\nu \geq 0} são os parâmetros da distribuição.
#'
#' @param y Valor da variável de contagem.
#' @param lambda Valor do parâmetro \eqn{\lambda} da distribuição
#' COM-Poisson.
#' @param nu Valor do parâmetro \eqn{\nu} da distribuição COM-Poisson.
#' @param sumto Número de incrementos a serem considerados para a
#' cálculo da constante normalizadora Z.
#' @examples
#' dpois(5, lambda = 5)
#' dcmp(5, lambda = 5, nu = 1, sumto = 20)
#'
#' probs <- data.frame(y = 0:30)
#' within(probs, {
#' py0 <- dpois(y, lambda = 15)
#' py1 <- dcmp(y, lambda = 15, nu = 1, sumto = 50)
#' py2 <- dcmp(y, lambda = 915, nu = 2.5, sumto = 50)
#' py3 <- dcmp(y, lambda = 2.2, nu = 0.3, sumto = 50)
#' plot(py0 ~ y, type = "h",
#' ylim = c(0, max(c(py0, py2, py3))),
#' ylab = expression(Pr(Y == y)))
#' points(y + 0.1, py1, type = "h", col = 2)
#' points(y - 0.3, py2, type = "h", col = 3)
#' points(y + 0.3, py3, type = "h", col = 4)
#' legend("topleft", bty = "n",
#' col = c(1:4), lty = 1,
#' legend = expression(
#' Poisson(lambda == 15),
#' CMP(lambda == 15, nu == 1),
#' CMP(lambda == 915, nu == 2.5),
#' CMP(lambda == 2.2, nu == 0.3)))
#' })
dcmp <- function(y, loglambda, phi, sumto) { dcmp <- function(y, lambda, nu, sumto) {
sapply(y, function(yi) { sapply(y, function(yi) {
exp(-llcmp(c(phi, loglambda), y = yi, X = 1, sumto = sumto)) exp(-llcmp(c(log(nu), log(lambda)),
y = yi, X = 1, sumto = sumto))
}) })
} }
......
...@@ -4,35 +4,57 @@ ...@@ -4,35 +4,57 @@
\alias{dcmp} \alias{dcmp}
\title{Probabilidades do Modelo Conway-Maxwell-Poisson} \title{Probabilidades do Modelo Conway-Maxwell-Poisson}
\usage{ \usage{
dcmp(y, loglambda, phi, sumto) dcmp(y, lambda, nu, sumto)
} }
\arguments{ \arguments{
\item{y}{Valor da contagem} \item{y}{Valor da variável de contagem.}
\item{loglambda}{Logaritmo neperiano do parâmetro \eqn{\lambda} da \item{lambda}{Valor do parâmetro \eqn{\lambda} da distribuição
distribuição} COM-Poisson.}
\item{phi}{Valor do parâmetro \eqn{\phi}, definido como \item{nu}{Valor do parâmetro \eqn{\nu} da distribuição COM-Poisson.}
\eqn{\log(\nu)} na distribuição de probabilidades COM-Poisson}
\item{sumto}{Número de incrementos a serem considerados para a soma \item{sumto}{Número de incrementos a serem considerados para a
da constante normalizadora Z.} cálculo da constante normalizadora Z.}
} }
\description{ \description{
Calcula as probabilidades conforme modelo COM-Poisson Calcula as probabilidades para uma variável aleatória
distribuída conforme modelo COM-Poisson.
\deqn{p(y,\lambda,\nu) =
\frac{\lambda^y}{(y!)^\nu Z(\lambda, \nu)}
} }
\examples{
dpois(5, 5)
dcmp(5, log(5), 0, sumto = 20)
x <- 0:30 em que \eqn{Z(\lambda, \nu)} é a constante de normalização definida
px1 <- dpois(x, 15) por \eqn{\sum_{j=0}^{\infty} \frac{\lambda^j}{(j!)^\nu}}. Nesta
px2 <- dcmp(x, log(915), log(2.5), sumto = 50) implementação o número de incrementos considerados para cálculo
px3 <- dcmp(x, log(2.2), log(0.3), sumto = 50) dessa constante é definido por \code{sumto}. \eqn{\lambda > 0} e
\eqn{\nu \geq 0} são os parâmetros da distribuição.
}
\examples{
dpois(5, lambda = 5)
dcmp(5, lambda = 5, nu = 1, sumto = 20)
plot(y = px2, x = x, type = "h", lwd = 2) probs <- data.frame(y = 0:30)
lines(y = px1, x = x - 0.2, type = "h", lwd = 2, col = 4) within(probs, {
lines(y = px3, x = x + 0.2, type = "h", lwd = 2, col = 2) py0 <- dpois(y, lambda = 15)
py1 <- dcmp(y, lambda = 15, nu = 1, sumto = 50)
py2 <- dcmp(y, lambda = 915, nu = 2.5, sumto = 50)
py3 <- dcmp(y, lambda = 2.2, nu = 0.3, sumto = 50)
plot(py0 ~ y, type = "h",
ylim = c(0, max(c(py0, py2, py3))),
ylab = expression(Pr(Y == y)))
points(y + 0.1, py1, type = "h", col = 2)
points(y - 0.3, py2, type = "h", col = 3)
points(y + 0.3, py3, type = "h", col = 4)
legend("topleft", bty = "n",
col = c(1:4), lty = 1,
legend = expression(
Poisson(lambda == 15),
CMP(lambda == 15, nu == 1),
CMP(lambda == 915, nu == 2.5),
CMP(lambda == 2.2, nu == 0.3)))
})
} }
\author{ \author{
Eduardo E. R. Junior, \email{edujrrib@gmail.com} 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