Re: [R-br] Distribuição exponencial mista

Cesar, Preciso solucionar essa equação f(x) = (alpha/beta1*exp(-x/beta1)) + ((1-alpha)/beta2*exp(-x/beta2)) para obter os paramentos da distribuição. Assim como solucionado pelo fitdistr do pacote MASS para as ditribuções gamma, webull e exponencial. Observe que fiz uma tentativa com o pacote Renext, mas sem sucesso. Muito obrigado. 2016-09-19 16:12 GMT-03:00 Alisson Lucrécio < alisson.lucrecio@ifgoiano.edu.br>:
Como solucionar essa equação f(x) = (alpha/beta1*exp(-x/beta1)) + ((1-alpha)/beta2*exp(-x/beta2)) para obter os paramentos da distribuição. Assim como é feito pelo fitdistr do pacote MASS para as ditribuções gamma, webull e exponencial. Observe que fiz uma tentativa com o pacote Renext, mas sem sucesso.
Muito obrigado.
On 19 September 2016 at 16:05, Cesar Rabak <cesar.rabak@gmail.com> wrote:
. . . e sua dúvida seria?
On Mon, Sep 19, 2016 at 10:54 AM, Alisson Lucrécio via R-br < r-br@listas.c3sl.ufpr.br> wrote:
Caro Colegas,
Bom dia.
Algum colega da poderia me ajudar na solução de uma distribução exponencial mista.
# Script
library(MASS)
# Distribuição Gamma
rg <- rgamma(100, shape = 1.5, rate = 1)
fit_gamma <- fitdistr(rg,"gamma")
par(bg="white", las=1, cex=1.1) plot(density(rg, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue")
# Distribuição Weibull
rw <- rweibull(100, scale=1, shape=1.5)
par(bg="white", las=1, cex=1.1) plot(density(rw, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue")
fit_weibull <- fitdistr(rw,"weibull")
# Distribuição Exponential
ex <- rexp(100, rate = 1)
par(bg="white", las=1, cex=1.1) plot(density(ex, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue")
fit_exp <- fitdistr(ex, "exponential")
plot(density(rw, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue") lines(density(rg, bw=0.5, cut=0),col="green") lines(density(ex, bw=0.5, cut=0),col="red")
# Distribuição Exponencial mista
library(Renext)
# f(x) = (alpha/beta1*exp(-x/beta1)) + ((1-alpha)/beta2*exp(-x/beta2))
mixexp <- rmixexp2(n = 100, prob1 = 0.5, rate1 = 1.0, rate2 = 3.0)
fit_mixexp <- mom.mixexp2(mixexp)
plot(density(mixexp, bw=0.5, cut=1), lwd=2, xlim=c(0, 5),col="steelblue") lines(density(ex, bw=0.5, cut=0),col="red")
mod <- nls(mixexp ~ prob1 * dexp(x, rate1) + (1 - prob1) * dexp(x, rate2), start = list(prob1 = 1, rate1 = 1, rate2 = 3.0), control = nls.control(maxiter = 100))
Obrigado. -- Alisson Lucrecio da Costa
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- Alisson Lucrecio da Costa
-- Alisson Lucrecio da Costa

Prezado Alisson, Para realizar as estimativas dos parâmetros via o package “Renext” utilize a função “EM.mixexp”. Apesar disso, é importante notar dois detalhes desta distribuição; O primeiro é o caso do coeficiente de variação maior ou igual a um que tende a gerar “erros” (convergir para uma exponencial simples) quando a amostra apresenta tal coeficiente menor que um. Um segundo detalhe é que as estimativas dos parâmetros,no que diz respeito a convergência em relação a amostra, é bem mais “lenta” com o crescimento da amostra do que distribuições usuals como a gama, weibull, gumbel e outras (o segundo detalhe é apenas um feeling particular). Caso não queira usar o “Renext”, outra possibilidade é utilizar o pacote “fitdistplus” para a realização das estimativas dos parâmetros, o único inconveniente é a necessidade de inserir um valor inicial.Por fim, segue os exemplos de estimativas utilizando os dois pacotes diferentes. ##### # Via Renext library("Renext") mix <- rmixexp2(n = 1000, prob1 = 0.5, rate1 = 1.0, rate2 = 3.0) fit_mixexp <- EM.mixexp(x = mix) # Parâmetros fit_mixexp[[1]] # Via fitdistrplus library("Renext") library("fitdistrplus") fit_mixexp2 <- fitdist(mix, "mixexp2", start = list(prob1 = 0.8,rate1 = 1, rate2 = 2)) fit_mixexp2[[1]] #### Obs: No segundo exemplo, apesar de implícito, utilizei as funções pmixexp2, dmixexp2, qmixexp2 do pacote “Renext” mas caso seja de sua preferência é possível você mesmo defini-las. Att, ------- Jaildo Rocha MSc. pelo Programa Pós Graduação em Saneamento Meio Ambiente e Recursos Hídricos – UFMG Área de concentração: Recursos Hídricos
Em 20 de set de 2016, à(s) 00:21, Alisson Lucrécio via R-br <r-br@listas.c3sl.ufpr.br> escreveu:
Cesar,
Preciso solucionar essa equação f(x) = (alpha/beta1*exp(-x/beta1)) + ((1-alpha)/beta2*exp(-x/beta2)) para obter os paramentos da distribuição. Assim como solucionado pelo fitdistr do pacote MASS para as ditribuções gamma, webull e exponencial. Observe que fiz uma tentativa com o pacote Renext, mas sem sucesso.
Muito obrigado.
2016-09-19 16:12 GMT-03:00 Alisson Lucrécio <alisson.lucrecio@ifgoiano.edu.br <mailto:alisson.lucrecio@ifgoiano.edu.br>>: Como solucionar essa equação f(x) = (alpha/beta1*exp(-x/beta1)) + ((1-alpha)/beta2*exp(-x/beta2)) para obter os paramentos da distribuição. Assim como é feito pelo fitdistr do pacote MASS para as ditribuções gamma, webull e exponencial. Observe que fiz uma tentativa com o pacote Renext, mas sem sucesso.
Muito obrigado.
On 19 September 2016 at 16:05, Cesar Rabak <cesar.rabak@gmail.com <mailto:cesar.rabak@gmail.com>> wrote: . . . e sua dúvida seria?
On Mon, Sep 19, 2016 at 10:54 AM, Alisson Lucrécio via R-br <r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>> wrote: Caro Colegas,
Bom dia.
Algum colega da poderia me ajudar na solução de uma distribução exponencial mista.
# Script
library(MASS)
# Distribuição Gamma
rg <- rgamma(100, shape = 1.5, rate = 1)
fit_gamma <- fitdistr(rg,"gamma")
par(bg="white", las=1, cex=1.1) plot(density(rg, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue")
# Distribuição Weibull
rw <- rweibull(100, scale=1, shape=1.5)
par(bg="white", las=1, cex=1.1) plot(density(rw, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue")
fit_weibull <- fitdistr(rw,"weibull")
# Distribuição Exponential
ex <- rexp(100, rate = 1)
par(bg="white", las=1, cex=1.1) plot(density(ex, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue")
fit_exp <- fitdistr(ex, "exponential")
plot(density(rw, bw=0.5, cut=0), las=1, lwd=2, xlim=c(0,5),col="steelblue") lines(density(rg, bw=0.5, cut=0),col="green") lines(density(ex, bw=0.5, cut=0),col="red")
# Distribuição Exponencial mista
library(Renext)
# f(x) = (alpha/beta1*exp(-x/beta1)) + ((1-alpha)/beta2*exp(-x/beta2))
mixexp <- rmixexp2(n = 100, prob1 = 0.5, rate1 = 1.0, rate2 = 3.0)
fit_mixexp <- mom.mixexp2(mixexp)
plot(density(mixexp, bw=0.5, cut=1), lwd=2, xlim=c(0, 5),col="steelblue") lines(density(ex, bw=0.5, cut=0),col="red")
mod <- nls(mixexp ~ prob1 * dexp(x, rate1) + (1 - prob1) * dexp(x, rate2), start = list(prob1 = 1, rate1 = 1, rate2 = 3.0), control = nls.control(maxiter = 100))
Obrigado. -- Alisson Lucrecio da Costa
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br <https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia <http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
-- Alisson Lucrecio da Costa
-- Alisson Lucrecio da Costa _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br <https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br> Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia <http://www.leg.ufpr.br/r-br-guia>) e forneça código mínimo reproduzível.
participantes (2)
-
Alisson Lucrécio
-
Jaildo Rocha