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> 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 [[alternative HTML version deleted]]
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> 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 [[alternative HTML version deleted]]
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 > >[[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 >>