JORGE OCAÑA REBULL
2016-Jan-27  10:14 UTC
[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]]
Jesús Para Fernández
2016-Jan-27  11:40 UTC
[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 enero    2 piezas pedidas
2 de enero    0
....
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:100000){
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: jocana en ub.edu
> To: r-help-es en 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 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 en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
 		 	   		  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL:
<https://stat.ethz.ch/pipermail/r-help-es/attachments/20160127/e9cf2a6b/attachment-0001.html>
------------ próxima parte ------------
An embedded and charset-unspecified text was scrubbed...
Name: datos.txt
URL:
<https://stat.ethz.ch/pipermail/r-help-es/attachments/20160127/e9cf2a6b/attachment-0001.txt>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: stockmin.csv
Type: application/octet-stream
Size: 1683 bytes
Desc: no disponible
URL:
<https://stat.ethz.ch/pipermail/r-help-es/attachments/20160127/e9cf2a6b/attachment-0001.obj>
JORGE OCAÑA REBULL
2016-Jan-28  09:12 UTC
[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(100000)
# nuevo<-0 (no hace falta)
Saludos,
Jordi
De: Jesús Para Fernández [mailto:j.para.fernandez en hotmail.com]
Enviado el: miércoles, 27 de enero de 2016 12:40
Para: JORGE OCAÑA REBULL <jocana en ub.edu>; r-help-es en 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 enero    2 piezas pedidas
2 de enero    0
....
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:100000){
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: jocana en ub.edu<mailto:jocana en ub.edu>
> To: r-help-es en r-project.org<mailto:r-help-es en 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 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 en r-project.org<mailto:R-help-es en r-project.org>
> https://stat.ethz.ch/mailman/listinfo/r-help-es
	[[alternative HTML version deleted]]