Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150127/8c94355b/attachment.html>
[R-es] Ajuste con exponencial
9 messages · "Hector Gómez Fuerte", Francisco Rodríguez, Jorge I Velez +2 more
Hola, ¿qué tal? Creo que el ajuste (por máxima verosimilitud) de lambda es el inverso de la media de tus datos. Tu densidad en el intervalo de interés es como la de la exponencial (dividida por una constante de normalización). El logaritmo de la verosimitud es, por lo tanto, como el de la exponencial sin truncar más una constante. Luego la teorÃa habitual (de cómo el inverso de la media es el estimador por MV de lambda) aplica con cambios mÃnimos. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 27 de enero de 2015, 19:53, "Hector Gómez Fuerte" <hector3 en gmx.es> escribió:
Buenas tardes, ¿cómo puedo con el R ajustar una distribución exponencial truancada (en el intervalo [10,60]) a un vector de datos? Muchas gracias. Héctor Gómez
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150128/9e23caec/attachment.html>
Hola Hector, buenos dÃas:
Hay un método generalista para maximizar funciones en R que quizás te valga, prueba lo siguiente a ver qué tal (por supuesto, si te fijas en la definición de la función de verosimilitud, ves que la "he cuadrado a mano" al intervalo que tratas"
library(optimx)
muestra <- c(50, 20, 31, 40, 10)
funcionExpTrun <- function(l, x){ n <- length(x) f <- rep(0, n) for (i in 1:n) { f[i]<- -log(l*exp(-l*x[i])/(exp(-10*l)-exp(-60*l))) } sumaf <- sum(f) return (sumaf) }
resultado <- optim(par = c(0.1), fn = funcionExpTrun, method = c("L-BFGS-B"), lower = c(-Inf, 0), upper = c(Inf, Inf), x = muestra)
El código lo he sacado (con alguna adaptación por mi parte) de:
http://www.mat.uda.cl/jolivares/probabilidades/EMV.pdf
El parámetro al que converge serÃa:
$par[1] 0.02356897
Un saludo
From: hector3 en gmx.es
To: cgb en datanalytics.com; r-help-es en r-project.org
Date: Wed, 28 Jan 2015 12:27:56 +0100
Subject: Re: [R-es] Ajuste con exponencial
Saludos cordiales.
Lamentablemente lo que dice Carlos no es correcto. Cuando la distribución exponencial la truncamos en un intervalo la constante de la función de densidad (para que integre 1) tiene una dependencia (complicada) del parámetro que multiplica al exponente, con lo cual la ecuación de verosimilitud no es nada sencila ni se puede resolver exactamente . La estimación maximo-verosÃmil requerirÃa de algoritmos numéricos y por tanto de software para su cálculo. Yo creo que esta no debe ser la mejor solución, y me sorprende no haber encontrado (puede que por mi torpeza) nada para ello en el R. De aquà la pregunta que hacia en este foro.
Héctor Gómez
Enviar: martes 27 de enero de 2015 a las 22:07
De: "Carlos J. Gil Bellosta " <cgb en datanalytics.com>
Para: "Hector Gómez Fuerte" <hector3 en gmx.es>
CC: "Lista R" <r-help-es en r-project.org>
Asunto: Re: [R-es] Ajuste con exponencial
Hola, ¿qué tal?
Creo que el ajuste (por máxima verosimilitud) de lambda es el inverso
de la media de tus datos. Tu densidad en el intervalo de interés es
como la de la exponencial (dividida por una constante de
normalización). El logaritmo de la verosimitud es, por lo tanto, como
el de la exponencial sin truncar más una constante.
Luego la teorÃa habitual (de cómo el inverso de la media es el
estimador por MV de lambda) aplica con cambios mÃnimos.
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El dÃa 27 de enero de 2015, 19:53, "Hector Gómez Fuerte"
<hector3 en gmx.es> escribió:
Buenas tardes,
¿cómo puedo con el R ajustar una distribución exponencial truancada (en el
intervalo [10,60]) a un vector de datos?
Muchas gracias.
Héctor Gómez
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola Hector, buenos dÃas:Hay un método generalista para maximizar funciones en R que quizás te valga, prueba lo siguiente a ver qué tal (por supuesto, si te fijas en la definición de la función de verosimilitud, ves que la "he cuadrado a mano" al intervalo que tratas"library(optimx)muestra <- c(50, 20, 31, 40, 10)funcionExpTrun <- function(l, x){ n <- length(x) f <- rep(0, n) for (i in 1:n) { f[i]<- -log(l*exp(-l*x[i])/(exp(-10*l)-exp(-60*l))) } sumaf <- sum(f) return (sumaf) }resultado <- optim(par = c(0.1), fn = funcionExpTrun, method = c("L-BFGS-B"), lower = c(-Inf, 0), upper = c(Inf, Inf), x = muestra)El código lo he sacado (con alguna adaptación por mi parte) de:http://www.mat.uda.cl/jolivares/probabilidades/EMV.pdfEl parámetro al que converge serÃa: $par[1] 0.02356897Un saludo
From: hector3 en gmx.es
To: cgb en datanalytics.com; r-help-es en r-project.org
Date: Wed, 28 Jan 2015 12:27:56 +0100
Subject: Re: [R-es] Ajuste con exponencial
Saludos cordiales.
Lamentablemente lo que dice Carlos no es correcto. Cuando la distribución exponencial la truncamos en un intervalo la constante de la función de densidad (para que integre 1) tiene una dependencia (complicada) del parámetro que multiplica al exponente, con lo cual la ecuación de verosimilitud no es nada sencila ni se puede resolver exactamente . La estimación maximo-verosÃmil requerirÃa de algoritmos numéricos y por tanto de software para su cálculo. Yo creo que esta no debe ser la mejor solución, y me sorprende no haber encontrado (puede que por mi torpeza) nada para ello en el R. De aquà la pregunta que hacia en este foro.
Héctor Gómez
Enviar: martes 27 de enero de 2015 a las 22:07
De: "Carlos J. Gil Bellosta " <cgb en datanalytics.com>
Para: "Hector Gómez Fuerte" <hector3 en gmx.es>
CC: "Lista R" <r-help-es en r-project.org>
Asunto: Re: [R-es] Ajuste con exponencial
Hola, ¿qué tal?
Creo que el ajuste (por máxima verosimilitud) de lambda es el inverso
de la media de tus datos. Tu densidad en el intervalo de interés es
como la de la exponencial (dividida por una constante de
normalización). El logaritmo de la verosimitud es, por lo tanto, como
el de la exponencial sin truncar más una constante.
Luego la teorÃa habitual (de cómo el inverso de la media es el
estimador por MV de lambda) aplica con cambios mÃnimos.
Un saludo,
Carlos J. Gil Bellosta
http://www.datanalytics.com
El dÃa 27 de enero de 2015, 19:53, "Hector Gómez Fuerte"
<hector3 en gmx.es> escribió:
Buenas tardes,
¿cómo puedo con el R ajustar una distribución exponencial truancada (en el
intervalo [10,60]) a un vector de datos?
Muchas gracias.
Héctor Gómez
_______________________________________________
R-help-es mailing list
R-help-es en r-project.org
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola Hector, No soy experto, pero en http://r.789695.n4.nabble.com/Fitting-weibull-exponential-and-lognormal-distributions-to-left-truncated-data-td869977.html http://www.r-bloggers.com/r-help-follow-up-truncated-exponential/ http://www.jstatsoft.org/v16/c02/paper hay algunas ideas. Espero te sirvan. Saludos, Jorge.- 2015-01-28 22:27 GMT+11:00 "Hector Gómez Fuerte" <hector3 en gmx.es>:
Saludos cordiales. Lamentablemente lo que dice Carlos no es correcto. Cuando la distribución exponencial la truncamos en un intervalo la constante de la función de densidad (para que integre 1) tiene una dependencia (complicada) del parámetro que multiplica al exponente, con lo cual la ecuación de verosimilitud no es nada sencila ni se puede resolver exactamente . La estimación maximo-verosÃmil requerirÃa de algoritmos numéricos y por tanto de software para su cálculo. Yo creo que esta no debe ser la mejor solución, y me sorprende no haber encontrado (puede que por mi torpeza) nada para ello en el R. De aquà la pregunta que hacia en este foro. Héctor Gómez *Enviar:* martes 27 de enero de 2015 a las 22:07 *De:* "Carlos J. Gil Bellosta " <cgb en datanalytics.com> *Para:* "Hector Gómez Fuerte" <hector3 en gmx.es> *CC:* "Lista R" <r-help-es en r-project.org> *Asunto:* Re: [R-es] Ajuste con exponencial Hola, ¿qué tal? Creo que el ajuste (por máxima verosimilitud) de lambda es el inverso de la media de tus datos. Tu densidad en el intervalo de interés es como la de la exponencial (dividida por una constante de normalización). El logaritmo de la verosimitud es, por lo tanto, como el de la exponencial sin truncar más una constante. Luego la teorÃa habitual (de cómo el inverso de la media es el estimador por MV de lambda) aplica con cambios mÃnimos. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 27 de enero de 2015, 19:53, "Hector Gómez Fuerte" <hector3 en gmx.es> escribió:
Buenas tardes, ¿cómo puedo con el R ajustar una distribución exponencial truancada (en
el
intervalo [10,60]) a un vector de datos? Muchas gracias. Héctor Gómez
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Hola, Si tienes su expresión algebráica, podrÃas ajustarla con un ajuste no lineal "nls()". "nls()" viene por defecto dentro del paquete "stats" y si no fuese posible hacerla converger, puedes utilizar otros paquetes (nlstools, nls2) que modifican "nls()" que utilizan otros algoritmos de convergencia. Saludos, Carlos Ortega www.qualityexcellence.es El 27 de enero de 2015, 19:53, "Hector Gómez Fuerte" <hector3 en gmx.es> escribió:
Buenas tardes, ¿cómo puedo con el R ajustar una distribución exponencial truancada (en el intervalo [10,60]) a un vector de datos? Muchas gracias. Héctor Gómez
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]]
Mil perdones, llevo unos dÃas "fuera de mi eje". Tienes toda la razón del mundo. AnalÃticamente se puede probar (y si aceptas que 1-exp(-50 lambda) es 1, es decir, que tu lambda no es demasiado pequeño) que tu lambda no está lejos del inverso de la media de tus valores menos diez. Maximizar via optim la función de verosimilitud como propone Francisco es otra opción. Hay un paquete para distribuciones truncadas, truncgof, que usé hace unos años, pero nunca funcionó demasiado bien (al menos con distribuciones más raras que la exponencial). Es otra opción, pero ten cuidado con los resultados. Un saludo y mil excusas, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 28 de enero de 2015, 12:27, "Hector Gómez Fuerte" <hector3 en gmx.es> escribió:
Saludos cordiales. Lamentablemente lo que dice Carlos no es correcto. Cuando la distribución exponencial la truncamos en un intervalo la constante de la función de densidad (para que integre 1) tiene una dependencia (complicada) del parámetro que multiplica al exponente, con lo cual la ecuación de verosimilitud no es nada sencila ni se puede resolver exactamente . La estimación maximo-verosÃmil requerirÃa de algoritmos numéricos y por tanto de software para su cálculo. Yo creo que esta no debe ser la mejor solución, y me sorprende no haber encontrado (puede que por mi torpeza) nada para ello en el R. De aquà la pregunta que hacia en este foro. Héctor Gómez Enviar: martes 27 de enero de 2015 a las 22:07 De: "Carlos J. Gil Bellosta " <cgb en datanalytics.com> Para: "Hector Gómez Fuerte" <hector3 en gmx.es> CC: "Lista R" <r-help-es en r-project.org> Asunto: Re: [R-es] Ajuste con exponencial Hola, ¿qué tal? Creo que el ajuste (por máxima verosimilitud) de lambda es el inverso de la media de tus datos. Tu densidad en el intervalo de interés es como la de la exponencial (dividida por una constante de normalización). El logaritmo de la verosimitud es, por lo tanto, como el de la exponencial sin truncar más una constante. Luego la teorÃa habitual (de cómo el inverso de la media es el estimador por MV de lambda) aplica con cambios mÃnimos. Un saludo, Carlos J. Gil Bellosta http://www.datanalytics.com El dÃa 27 de enero de 2015, 19:53, "Hector Gómez Fuerte" <hector3 en gmx.es> escribió:
Buenas tardes, ¿cómo puedo con el R ajustar una distribución exponencial truancada (en el intervalo [10,60]) a un vector de datos? Muchas gracias. Héctor Gómez
_______________________________________________ R-help-es mailing list R-help-es en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Se ha borrado un adjunto en formato HTML... URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20150128/87a1ac3b/attachment.html>