Re: [R-es] Bootstrap data frame (Jesús Para Fernández)
Hola Jes�s, Ciertamente no entend� la situaci�n que planteabas. Si no sigo entendi�ndolo mal, en el fondo se trata de estudiar mediante bootstrap la distribuci�n de la suma de los pedidos en 6 d�as, que entiendo que presupones independientes entre ellos (no hace falta por ejemplo que sean bloques de 6 d�as consecutivos). En este caso creo que el enfoque y el c�digo que propones ya es acertado. Posiblemente se pueda optimizar algo substituyendo las l�neas de tu c�digo nuevo<-sample(datos$pedidos,replace=T) final[i]<-sum(nuevo[1:6]) por: nuevo<-sample(datos$pedidos, size = 6, replace=T) final[i]<-sum(nuevo) para evitar cada vez extraer una remuestra enorme de la que s�lo aprovechas los 6 primeros elementos. Tambi�n alojar�a ya de entrada espacio de memoria para 'final' para evitar problemas de gesti�n de memoria al tener que ir ampli�ndolo: final<-numeric(10) # nuevo<-0 (no hace falta) Saludos, Jordi De: Jes�s Para Fern�ndez [mailto:j.para.fernan...@hotmail.com] Enviado el: mi�rcoles, 27 de enero de 2016 12:40 Para: JORGE OCA�A REBULL ; r-help-es@r-project.org Asunto: RE: [R-es] Bootstrap data frame (Jes�s Para Fern�ndez) Buenas Jorge, No s� si estamos hablando exactamente de lo mismo. Me explicar� mejor, ya que me he dado cuenta que no lo he hecho bien. Lo que quiero es buscar un �ptimo para no quedarme nunca sin stock. Tengo un listado de piezas pedidas durante un a�o, de la forma siguiente: 1 de enero2 piezas pedidas 2 de enero0 15 de diciembre 0 piezas pedidas Se que el recambio me tarda en llegar 6 dias(por ejemplo), por lo que me interesa tener la tienda con el stock optimo, es decir, aquel que me permite no tener un exceso de stock pero que me garantice con un % de probabilidad que no me voy a quedar sin stock. Por ello, lo que hago son muestras bootstrap sobre la poblaci�n, cogiendo 6 dias al azar y viendo que he pedido en esos 6 dias. Con una tabla de frecuencias, veo como se reparte esa frecuencia de pedidos y sobre eso y los porcentajes acumulados, obtengo la probabilidad de veces que se da cada casuistica. Como ejemplo, a�ado datos.txt, el cual contiene una tabla de cada dia y los pedidos que se hacen cada uno de esos dias. Si el pedido tarda en este caso en llegar 6 dias, entonces hago muestras bootstrap y saco la tabla de frecuencias. #codigo R set.seed(121) final<-0 nuevo<-0 for(i in 1:10){ nuevo<-sample(datos$pedidos,replace=T) final[i]<-sum(nuevo[1:6]) } hist(final,col=8,breaks=50) table(final) Con esto puedo crear lo que aparece en stockmin donde me dice el porcentaje de veces que me se piden las cantidades, por ejemplo, se que si pongo stock minimo de 3, el 60% de las veces lo cumplo, pero el 40% me quedo sin stock. Para garantizarme la viabilidad iria a un porcentaje del 99%, que es un stock de 50. �Como veis este metodo? Gracias Jes�s > From: joc...@ub.edu<mailto:joc...@ub.edu> > To: r-help-es@r-project.org<mailto:r-help-es@r-project.org> > Date: Wed, 27 Jan 2016 10:14:20 + > Subject: [R-es] Bootstrap data frame (Jes�s Para Fern�ndez) > > Hola Jes�s, > Si no entiendo mal lo que planteas, has observado unas frecuencias > N = c(12, 0, 8, 6, 4, 2) > de pedidos acaecidos en 1:6 d�as, en total > n = sum(N) > pedidos. Llamemos P = (p1, p2, ..., p6) a las probabilidades "te�ricas" de > pedido en cada d�a. En principio el vector N se puede considerar una > realizaci�n de una distribuci�n multinomial M(n; p1, ..., p6). > P se puede estimar mediante las frecuencias relativas N / n, y una remuestra > bootstrap corresponder�a a una realizaci�n de una multinomial M(n; N/n), es > decir: > rmultinom(1, n, N/n) > o si deseas generar 'b' remuestras bootstrap: > rmultinom(b, n, N/n) > > F�jate que el proceso anterior es equivalente aunque m�s compacto y > posiblemente m�s r�pido al t�pico proceso que se suele designar como > "bootstrap no param�trico", generar muestras aleatorias y con reemplazamiento > de la muestra original. Las frecuencias anteriores ser�an asimilables a una > gran muestra, un vector de 'n' valores 1, 2, ..., 6, en la que hubiese 12 > valores 1, ning�n valor 2, 8 valores 3, etc. Tomando una muestra aleatoria > (sample, etc.) de tama�o n del vector anterior y luego calculando las > frecuencias de 1, ..., 6 observadas en ella se reproducir�a el proceso basado > en la multinomial. > > Este enfoque tiene el inconveniente de que convierte lo improbable en > imposible, en ninguna remuestra bootstrap aparecer� el d�a 2. La soluci�n > consistir�a en asumir alg�n modelo para las probabilidades p1, ..., p6, de > manera que se pudiesen estimar a partir de la muestra, de una manera m�s > "refinada" que una simple frecuencia relativa. En este caso la estimaci�n de > p2, aunque seguramente peque�a, no ser�a 0.
Re: [R-es] Bootstrap data frame
Hola a todos, Coincido con el comentario de seleccionar bloques consecutivos de días por la dependencia temporal. El método bootstrap que se suele emplear en series de tiempo es el "block bootstrap" (no es que a mí me guste mucho, pero las alternativas son más complicadas, exigen modelar la dependencia). Se recomienda además que la longitud sea aleatoria ("block bootstrap estacionario"). Mira la función tsboot del paquete boot... Un saludo, Rubén. El 27/01/2016 a las 13:16, Javier Villacampa González escribió: Hola buenas En principio a mí no me parece una mala aproximación. Tal vez se podría intentar adaptar el problema a un modelo de supervivencia, pero tendría que pensarlo. ( https://vimeo.com/142732615 ) De todas maneras, creo que coges días al azar para calcular to "proxy". Aunque yo personalmente cogería días consecutivos porque probablemente el consumo en muchos productos no sea independiente temporalmente. Por otro lado, de cara a la implementación no sé si sería mejor coger 6 o siete días o comparar ambas distribuciones. Más que nada porque si se te acaba el stock en la +1 después de que puedas hacer tu pedido entonces el tiempo real serían 7 días. Espero que te parezca bien el feedback. Estaría encantado de discutir esto con los compañeros. Un abrazo Javier -- [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Bootstrap data frame
Hola Jesús, Cuando he visto que comentabas el tema de la "rotura de stock" me sonaba que de esto habíamos hablado en la lista hace un tiempo. He buscado el hilo de aquella conversación: http://grokbase.com/t/r/r-help-es/15c776br22/r-es-tiempo-de-vida Y veo que aquella conversación también la iniciaste tú. ¿Este es el mismo problema de las cuchillas que querías pedir y que no querías pedir mucho, pero tampoco quedarte sin repuestos en el almacén?... Tanto en aquel caso, como en este están coincidiendo algunas respuestas ("Análisis de Supervivencia"). Yo te sugerí inicialmente un tipo de análisis, hasta que entendimos un poco más el problema que tenías, y luego te recomendé el uso de un "control estadístico de tu proceso". En este caso, he empezado a apuntar por ahí con el análisis de la "media corrida" y ahora vuelvo a recomendarte que sobre el consumo de piezas hagas un control estadístico o utilices otro método más heurístico como en aquel hilo te recomendé. También aprovecho para recomendarte otra alternativa. El tema de "determinación del punto óptimo de pedido" en gestión de stocks es un problema bastante estudiado y del que existe mucho cuerpo teórico desarrollado. Con una simple búsqueda encuentras hasta la fórmula aplicar: http://www.aulafacil.com/cursos/l20115/empresa/organizacion/gestion-de-stock/determinacion-del-punto-de-pedido-aplicaciones-i Sobre esta primera aproximación, puedes hacer variaciones (Monte Carlo) para ver la sensibilidad de este punto de pedido conforme varías las variables de tiempo de espera, o el número de unidades producidas... Es un análisis que te dará otro intervalo de confianza sobre el punto de pedido, pero basándote en una fórmula que da respuesta a tu caso general. Y puedes ir a cosas más complejas, de la mano de otro concepto que se aplica en Producción como es la determinación del "Lote Económico de Producción": https://es.wikipedia.org/wiki/Lote_Econ%C3%B3mico_de_Producci%C3%B3n donde se tiene en cuenta tanto los costes de fabricación como los costes de almacenamiento. Gracias, Carlos Ortega www.qualityexcellence.es El 27 de enero de 2016, 13:28, Jesús Para Fernández < j.para.fernan...@hotmail.com> escribió: > Buenas Javier, > > La verdad es que lo de la independencia temporal creo que si se cumple, > pues se trata de diferentes tiendas pero no tiene nada que ver con la > estacionalidad del año o cosas similares. Haciendo un grafico de series se > ve que no hay dpeendencia del tiempo (o yo no la he visto) > > Respecto al análisis de supervivencia, es lo primero en lo uqe pensé y de > hecho así lo plantee aqui como primera consulta, pero creo que el no > disponer del dato de entrada del artículo hace que este análisis sea > complicado, aunque estoy encantado de recibir todo tipo de consejos. Todo > feedback es muy bien recibido :):) > > Gracias por todo > Jesús > > > Date: Wed, 27 Jan 2016 13:16:51 +0100 > > From: javier.villacampa.gonza...@gmail.com > > To: joc...@ub.edu; r-help-es@r-project.org > > Subject: Re: [R-es] Bootstrap data frame > > > > Hola buenas > > > > > > En principio a mí no me parece una mala aproximación. Tal vez se podría > > intentar adaptar el problema a un modelo de supervivencia, pero tendría > que > > pensarlo. ( https://vimeo.com/142732615 ) > > > > > > > > De todas maneras, creo que coges días al azar para calcular to "proxy". > > Aunque yo personalmente cogería días consecutivos porque probablemente el > > consumo en muchos productos no sea independiente temporalmente. > > > > Por otro lado, de cara a la implementación no sé si sería mejor coger 6 o > > siete días o comparar ambas distribuciones. Más que nada porque si se te > > acaba el stock en la +1 después de que puedas hacer tu pedido entonces el > > tiempo real serían 7 días. > > > > Espero que te parezca bien el feedback. Estaría encantado de discutir > esto > > con los compañeros. > > > > Un abrazo > > > > Javier > > > > > > > > > > -- > > > > [[alternative HTML version deleted]] > > > > ___ > > R-help-es mailing list > > R-help-es@r-project.org > > https://stat.ethz.ch/mailman/listinfo/r-help-es > > [[alternative HTML version deleted]] > > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Bootstrap data frame
Buenas Javier, La verdad es que lo de la independencia temporal creo que si se cumple, pues se trata de diferentes tiendas pero no tiene nada que ver con la estacionalidad del a�o o cosas similares. Haciendo un grafico de series se ve que no hay dpeendencia del tiempo (o yo no la he visto) Respecto al an�lisis de supervivencia, es lo primero en lo uqe pens� y de hecho as� lo plantee aqui como primera consulta, pero creo que el no disponer del dato de entrada del art�culo hace que este an�lisis sea complicado, aunque estoy encantado de recibir todo tipo de consejos. Todo feedback es muy bien recibido :):) Gracias por todo Jes�s > Date: Wed, 27 Jan 2016 13:16:51 +0100 > From: javier.villacampa.gonza...@gmail.com > To: joc...@ub.edu; r-help-es@r-project.org > Subject: Re: [R-es] Bootstrap data frame > > Hola buenas > > > En principio a m� no me parece una mala aproximaci�n. Tal vez se podr�a > intentar adaptar el problema a un modelo de supervivencia, pero tendr�a que > pensarlo. ( https://vimeo.com/142732615 ) > > > > De todas maneras, creo que coges d�as al azar para calcular to "proxy". > Aunque yo personalmente coger�a d�as consecutivos porque probablemente el > consumo en muchos productos no sea independiente temporalmente. > > Por otro lado, de cara a la implementaci�n no s� si ser�a mejor coger 6 o > siete d�as o comparar ambas distribuciones. M�s que nada porque si se te > acaba el stock en la +1 despu�s de que puedas hacer tu pedido entonces el > tiempo real ser�an 7 d�as. > > Espero que te parezca bien el feedback. Estar�a encantado de discutir esto > con los compa�eros. > > Un abrazo > > Javier > > > > > -- > > [[alternative HTML version deleted]] > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Bootstrap data frame
Hola buenas En principio a mí no me parece una mala aproximación. Tal vez se podría intentar adaptar el problema a un modelo de supervivencia, pero tendría que pensarlo. ( https://vimeo.com/142732615 ) De todas maneras, creo que coges días al azar para calcular to "proxy". Aunque yo personalmente cogería días consecutivos porque probablemente el consumo en muchos productos no sea independiente temporalmente. Por otro lado, de cara a la implementación no sé si sería mejor coger 6 o siete días o comparar ambas distribuciones. Más que nada porque si se te acaba el stock en la +1 después de que puedas hacer tu pedido entonces el tiempo real serían 7 días. Espero que te parezca bien el feedback. Estaría encantado de discutir esto con los compañeros. Un abrazo Javier -- [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Bootstrap data frame (Jesús Para Fernández)
Buenas Jorge, No sé si estamos hablando exactamente de lo mismo. Me explicaré mejor, ya que me he dado cuenta que no lo he hecho bien. Lo que quiero es buscar un óptimo para no quedarme nunca sin stock. Tengo un listado de piezas pedidas durante un año, de la forma siguiente: 1 de enero2 piezas pedidas 2 de enero0 15 de diciembre 0 piezas pedidas Se que el recambio me tarda en llegar 6 dias(por ejemplo), por lo que me interesa tener la tienda con el stock optimo, es decir, aquel que me permite no tener un exceso de stock pero que me garantice con un % de probabilidad que no me voy a quedar sin stock. Por ello, lo que hago son muestras bootstrap sobre la población, cogiendo 6 dias al azar y viendo que he pedido en esos 6 dias. Con una tabla de frecuencias, veo como se reparte esa frecuencia de pedidos y sobre eso y los porcentajes acumulados, obtengo la probabilidad de veces que se da cada casuistica. Como ejemplo, añado datos.txt, el cual contiene una tabla de cada dia y los pedidos que se hacen cada uno de esos dias. Si el pedido tarda en este caso en llegar 6 dias, entonces hago muestras bootstrap y saco la tabla de frecuencias. #codigo R set.seed(121) final<-0 nuevo<-0 for(i in 1:10){ nuevo<-sample(datos$pedidos,replace=T) final[i]<-sum(nuevo[1:6]) } hist(final,col=8,breaks=50) table(final) Con esto puedo crear lo que aparece en stockmin donde me dice el porcentaje de veces que me se piden las cantidades, por ejemplo, se que si pongo stock minimo de 3, el 60% de las veces lo cumplo, pero el 40% me quedo sin stock. Para garantizarme la viabilidad iria a un porcentaje del 99%, que es un stock de 50. ¿Como veis este metodo? Gracias Jesús > From: joc...@ub.edu > To: r-help-es@r-project.org > Date: Wed, 27 Jan 2016 10:14:20 +0000 > Subject: [R-es] Bootstrap data frame (Jesús Para Fernández) > > Hola Jesús, > Si no entiendo mal lo que planteas, has observado unas frecuencias > N = c(12, 0, 8, 6, 4, 2) > de pedidos acaecidos en 1:6 días, en total > n = sum(N) > pedidos. Llamemos P = (p1, p2, …, p6) a las probabilidades “teóricas” de > pedido en cada día. En principio el vector N se puede considerar una > realización de una distribución multinomial M(n; p1, …, p6). > P se puede estimar mediante las frecuencias relativas N / n, y una remuestra > bootstrap correspondería a una realización de una multinomial M(n; N/n), es > decir: > rmultinom(1, n, N/n) > o si deseas generar ‘b’ remuestras bootstrap: > rmultinom(b, n, N/n) > > Fíjate que el proceso anterior es equivalente aunque más compacto y > posiblemente más rápido al típico proceso que se suele designar como > “bootstrap no paramétrico”, generar muestras aleatorias y con reemplazamiento > de la muestra original. Las frecuencias anteriores serían asimilables a una > gran muestra, un vector de ‘n’ valores 1, 2, …, 6, en la que hubiese 12 > valores 1, ningún valor 2, 8 valores 3, etc. Tomando una muestra aleatoria > (sample, etc.) de tamaño n del vector anterior y luego calculando las > frecuencias de 1, …, 6 observadas en ella se reproduciría el proceso basado > en la multinomial. > > Este enfoque tiene el inconveniente de que convierte lo improbable en > imposible, en ninguna remuestra bootstrap aparecerá el día 2. La solución > consistiría en asumir algún modelo para las probabilidades p1, …, p6, de > manera que se pudiesen estimar a partir de la muestra, de una manera más > “refinada” que una simple frecuencia relativa. En este caso la estimación de > p2, aunque seguramente pequeña, no sería 0. La idea de la multinomial > seguiría siendo válida pero ahora a partir de estas nuevas estimaciones de > las probabilidades. > > Saludos > > Jordi Ocaña Rebull > Dep. d’Estadística > Universitat de Barcelona > > > > Aquest correu electrònic i els annexos poden contenir informació confidencial > o protegida legalment i està adreçat exclusivament a la persona o entitat > destinatària. Si no sou el destinatari final o la persona encarregada de > rebre’l, no esteu autoritzat a llegir-lo, retenir-lo, modificar-lo, > distribuir-lo, copiar-lo ni a revelar-ne el contingut. Si heu rebut aquest > correu electrònic per error, us preguem que n’informeu al remitent i que > elimineu del sistema el missatge i el material annex que pugui contenir. > Gràcies per la vostra col·laboració. > > Este correo electrónico y sus anexos pueden contener información confidencial > o legalmente protegida y está exclusivamente dirigido a la persona o entidad > destinataria. Si usted no es el destinatario final o la persona encargada de > recibirlo, no está autorizado a leerlo, retenerlo, modificarlo, distribuirlo, > copiarlo ni a revelar su contenido. Si ha recibido este mensaje electrónico > por error, le
[R-es] Bootstrap data frame (Jesús Para Fernández)
Hola Jesús, Si no entiendo mal lo que planteas, has observado unas frecuencias N = c(12, 0, 8, 6, 4, 2) de pedidos acaecidos en 1:6 días, en total n = sum(N) pedidos. Llamemos P = (p1, p2, …, p6) a las probabilidades “teóricas” de pedido en cada día. En principio el vector N se puede considerar una realización de una distribución multinomial M(n; p1, …, p6). P se puede estimar mediante las frecuencias relativas N / n, y una remuestra bootstrap correspondería a una realización de una multinomial M(n; N/n), es decir: rmultinom(1, n, N/n) o si deseas generar ‘b’ remuestras bootstrap: rmultinom(b, n, N/n) Fíjate que el proceso anterior es equivalente aunque más compacto y posiblemente más rápido al típico proceso que se suele designar como “bootstrap no paramétrico”, generar muestras aleatorias y con reemplazamiento de la muestra original. Las frecuencias anteriores serían asimilables a una gran muestra, un vector de ‘n’ valores 1, 2, …, 6, en la que hubiese 12 valores 1, ningún valor 2, 8 valores 3, etc. Tomando una muestra aleatoria (sample, etc.) de tamaño n del vector anterior y luego calculando las frecuencias de 1, …, 6 observadas en ella se reproduciría el proceso basado en la multinomial. Este enfoque tiene el inconveniente de que convierte lo improbable en imposible, en ninguna remuestra bootstrap aparecerá el día 2. La solución consistiría en asumir algún modelo para las probabilidades p1, …, p6, de manera que se pudiesen estimar a partir de la muestra, de una manera más “refinada” que una simple frecuencia relativa. En este caso la estimación de p2, aunque seguramente pequeña, no sería 0. La idea de la multinomial seguiría siendo válida pero ahora a partir de estas nuevas estimaciones de las probabilidades. Saludos Jordi Ocaña Rebull Dep. d’Estadística Universitat de Barcelona Aquest correu electrònic i els annexos poden contenir informació confidencial o protegida legalment i està adreçat exclusivament a la persona o entitat destinatària. Si no sou el destinatari final o la persona encarregada de rebre’l, no esteu autoritzat a llegir-lo, retenir-lo, modificar-lo, distribuir-lo, copiar-lo ni a revelar-ne el contingut. Si heu rebut aquest correu electrònic per error, us preguem que n’informeu al remitent i que elimineu del sistema el missatge i el material annex que pugui contenir. Gràcies per la vostra col·laboració. Este correo electrónico y sus anexos pueden contener información confidencial o legalmente protegida y está exclusivamente dirigido a la persona o entidad destinataria. Si usted no es el destinatario final o la persona encargada de recibirlo, no está autorizado a leerlo, retenerlo, modificarlo, distribuirlo, copiarlo ni a revelar su contenido. Si ha recibido este mensaje electrónico por error, le rogamos que informe al remitente y elimine del sistema el mensaje y el material anexo que pueda contener. Gracias por su colaboración. This email message and any documents attached to it may contain confidential or legally protected material and are intended solely for the use of the individual or organization to whom they are addressed. We remind you that if you are not the intended recipient of this email message or the person responsible for processing it, then you are not authorized to read, save, modify, send, copy or disclose any of its contents. If you have received this email message by mistake, we kindly ask you to inform the sender of this and to eliminate both the message and any attachments it carries from your account. Thank you for your collaboration. [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
Re: [R-es] Bootstrap data frame
Hola, ¿No te interesaría mejor trabajar con una función que te calcule la media, mediana, min, max o sd, corrida para cada valor de ventana que desees?. Si lo ves adecuado, lo tienes disponible en modo función en el paquete "caTools". Funciones: "runmean()", "runmad()", "runmax()"... Saludos, Carlos Ortega www.qualityexcellence.es El 27 de enero de 2016, 9:38, Jesús Para Fernández < j.para.fernan...@hotmail.com> escribió: > Buenas, tengo un dataframe de la forma: > > dia pedidos > 1 12 > 2 0 > 3 8 > 4 6 > 5 4 > 6 2 > > Quiero hacer una muestra bootstrap que me de el consumo en un dia, en dos > dias, en tres dias. > > aglo asi como la imagen que adjunto. > > Alguien sabe como podria hacerlo?? > > > > > ___ > R-help-es mailing list > R-help-es@r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Saludos, Carlos Ortega www.qualityexcellence.es [[alternative HTML version deleted]] ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
[R-es] Bootstrap data frame
Buenas, tengo un dataframe de la forma: dia pedidos 1 12 2 0 3 8 4 6 5 4 6 2 Quiero hacer una muestra bootstrap que me de el consumo en un dia, en dos dias, en tres dias. aglo asi como la imagen que adjunto. Alguien sabe como podria hacerlo?? ___ R-help-es mailing list R-help-es@r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es