[R-es] Bootstrap data frame (Jesús Para Fernández)

JORGE OCAÑA REBULL jocana en ub.edu
Jue Ene 28 10:12:37 CET 2016


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]]



Más información sobre la lista de distribución R-help-es