2 votos

¿Cómo modelar y estimar la interferencia y los choques posteriores en datos de panel?

Tengo la siguiente configuración:

En mi fábrica, tenemos varias líneas de montaje (>10). Cada línea produce una cantidad de piezas cada día, con algunos picos de producción semanales y mensuales.

Por lo tanto, se trata básicamente de un panel de líneas múltiples que producen un cierto rendimiento durante un período de tiempo. A veces, la línea se detiene por razones técnicas y la producción también se detiene en esa línea inmediatamente. Esto puede afectar indirectamente a las líneas en funcionamiento, ya que pueden compensar la línea parada. Esa parada puede durar varios días o solucionarse en el mismo día.

La pregunta es cómo puedo estimar el impacto de los paros de línea - ¿Cuál es aquí la mejor manera de hacerlo?

-----> ¿Las líneas paradas provocan un aumento de la producción en las líneas en funcionamiento?

-----> ¿Existe alguna forma de cuantificar el desplazamiento/desplazamiento global con la correspondiente incertidumbre, como por ejemplo: "Si una línea se detiene, la producción global de artículos disminuye/aumenta en cierta cantidad dentro de algún intervalo de confianza"?

# Example data where machine_stops correspond to either True or False

# Line1
dates_machine_works = seq(as.Date('2016-01-01'),as.Date('2017-12-31'), by ="day")

machine_output <- ts(rpois(length(dates_machine_works), lambda = 100),     # random data
                     start = c(2016, as.numeric(format(dates_machine_works[1], "%j"))),
                     frequency = 365)

machine_stops <- rbinom(n=length(dates_machine_works), size=1, prob=0.01)           
line_name = rep("machine_line1", length(dates_machine_works))
output_machine_line1 <- cbind.data.frame(dates_machine_works, machine_stops, machine_output,line_name)

# Line2
dates_machine_works = seq(as.Date('2016-01-01'),as.Date('2017-12-31'), by ="day")

machine_output <- ts(rpois(length(dates_machine_works), lambda = 100),     # random data
                     start = c(2016, as.numeric(format(dates_machine_works[1], "%j"))),
                     frequency = 365)

machine_stops <- rbinom(n=length(dates_machine_works), size=1, prob=0.01)           
line_name = rep("machine_line2", length(dates_machine_works))
output_machine_line2 <- cbind.data.frame(dates_machine_works, machine_stops, machine_output,line_name)

# Line3
dates_machine_works = seq(as.Date('2016-01-01'),as.Date('2017-12-31'), by ="day")

machine_output <- ts(rpois(length(dates_machine_works), lambda = 100),     # random data
                     start = c(2016, as.numeric(format(dates_machine_works[1], "%j"))),
                     frequency = 365)

machine_stops <- rbinom(n=length(dates_machine_works), size=1, prob=0.01)           
line_name = rep("machine_line3", length(dates_machine_works))
output_machine_line3 <- cbind.data.frame(dates_machine_works, machine_stops, machine_output,line_name)

Los datos son así.

R> head(output_machine_line3)
  dates_machine_works machine_stops machine_output     line_name
1          2016-01-01             0             92 machine_line3
2          2016-01-02             0             78 machine_line3
3          2016-01-03             0            128 machine_line3
4          2016-01-04             0             95 machine_line3
5          2016-01-05             0            119 machine_line3
6          2016-01-06             0             90 machine_line3

#----------------------------------------------------------------------------------------#
# First approach using vars
#----------------------------------------------------------------------------------------#
library(xts)
library(vars)

line1 <- ts(output_machine_line1$machine_output, start=c(2016, 1), end=c(2017, 12), frequency=365)
line2 <- ts(output_machine_line2$machine_output, start=c(2016, 1), end=c(2017, 12), frequency=365)
line3 <- ts(output_machine_line3$machine_output, start=c(2016, 1), end=c(2017, 12), frequency=365)

rates.ts = cbind(line1,line2,line3) 

plot(rates.ts)
drates.ts <- diff(rates.ts)
plot(drates.ts)

VARselect(drates.ts, lag.max = 8, type = "const")

mod1 <- VAR(drates.ts, p = 5, type = "const")

irf1 <- irf(mod1, impulse = "line1", response = c("line1","line2", "line3"), ortho = TRUE, n.ahead = 6)

plot(irf1)

En general, no estoy seguro de si se trata de las direcciones correctas ya que de alguna manera no estoy utilizando la naturaleza del panel en absoluto. Además, el impulso está cambiando entre las series de tiempo y tiene una naturaleza recíproca. Aprecio cualquier idea.

2voto

Łukasz Bownik Puntos 2170

Dado que los paros de línea son Podría decirse que los accidentes aleatorios tienes un gran pseudo-experimento. Puede comprobar si la producción de las líneas que sobreviven es significativamente mejor en los días en que una línea no funciona. Una prueba de comparación media de la producción de las "líneas supervivientes" es una prueba bastante buena. A menos que las paradas de la línea estén planificadas, este es un enfoque bastante bueno.

Incluso podrías hacer una regresión simple (parece que estás usando Poisson, lo cual es genial):

  Production in each surviving line ~ number of downed lines

Y si encuentras un coeficiente positivo y significativo, tienes un argumento decente.

No hagas más trabajo del necesario.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X