JuveYell

a

Inicio del codigo

Para comenzar importaremos las librerias que posiblemente sean necesarias para el codigo.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(plyr)
## ------------------------------------------------------------------------------
## You have loaded plyr after dplyr - this is likely to cause problems.
## If you need functions from both plyr and dplyr, please load plyr first, then dplyr:
## library(plyr); library(dplyr)
## ------------------------------------------------------------------------------
## 
## Attaching package: 'plyr'
## The following objects are masked from 'package:dplyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
library(ggplot2)
library(naniar)
library(Hmisc)         
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## 
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:plyr':
## 
##     is.discrete, summarize
## The following objects are masked from 'package:dplyr':
## 
##     src, summarize
## The following objects are masked from 'package:base':
## 
##     format.pval, units
library(psych)
## 
## Attaching package: 'psych'
## The following object is masked from 'package:Hmisc':
## 
##     describe
## The following objects are masked from 'package:ggplot2':
## 
##     %+%, alpha
library(tidyverse)
## ── Attaching packages
## ───────────────────────────────────────
## tidyverse 1.3.2 ──
## ✔ tibble  3.1.8     ✔ purrr   0.3.4
## ✔ tidyr   1.2.0     ✔ stringr 1.4.1
## ✔ readr   2.1.2     ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ psych::%+%()       masks ggplot2::%+%()
## ✖ psych::alpha()     masks ggplot2::alpha()
## ✖ plyr::arrange()    masks dplyr::arrange()
## ✖ purrr::compact()   masks plyr::compact()
## ✖ plyr::count()      masks dplyr::count()
## ✖ plyr::failwith()   masks dplyr::failwith()
## ✖ dplyr::filter()    masks stats::filter()
## ✖ plyr::id()         masks dplyr::id()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ plyr::mutate()     masks dplyr::mutate()
## ✖ plyr::rename()     masks dplyr::rename()
## ✖ Hmisc::src()       masks dplyr::src()
## ✖ plyr::summarise()  masks dplyr::summarise()
## ✖ Hmisc::summarize() masks plyr::summarize(), dplyr::summarize()
library(janitor)
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(knitr)
library(pollster)
## 
## Attaching package: 'pollster'
## 
## The following object is masked from 'package:janitor':
## 
##     crosstab
library(epiDisplay)
## Loading required package: foreign
## Loading required package: MASS
## 
## Attaching package: 'MASS'
## 
## The following object is masked from 'package:dplyr':
## 
##     select
## 
## Loading required package: nnet
## 
## Attaching package: 'epiDisplay'
## 
## The following objects are masked from 'package:psych':
## 
##     alpha, cs, lookup
## 
## The following object is masked from 'package:lattice':
## 
##     dotplot
## 
## The following object is masked from 'package:ggplot2':
## 
##     alpha

Una vez se importaron las librerias, procedemos a importar las bases de datos

produccion <- read.csv("C:\\Users\\chema\\Documents\\Clase\\produccioncarton.csv")
scrap <- read.csv("C:\\Users\\chema\\Downloads\\FORM1 - Scrap.csv")
merma <- read.csv("C:\\Users\\chema\\Downloads\\FORM1 - Merma.csv")

1) ¿Cuántas variables y cuantos registros tiene la base de datos?

La base de datos de producción cuenta con 15 variables y 2681 registros

describe(produccion)
##                     vars    n   mean     sd median trimmed    mad min max range
## fecha*                 1 2681  14.08   7.97     14   14.11  10.38   1  27    26
## no                     2 2681  51.18  30.26     50   50.50  37.06   1 121   120
## cliente*               3 2681   6.46   2.69      6    6.46   2.97   1  11    10
## id_form*               4 2681 114.49  72.85    120  112.39  94.89   1 255   254
## producto*              5 2681 165.33  94.93    162  166.39 118.61   1 320   319
## piezas_prog*           6 2681  16.86  15.23     14   15.08  19.27   1  67    66
## tiempo_minutos*        7 2681  52.63  54.43     37   44.88  53.37   1 171   170
## hora_fin*              8 2681 103.64  24.34    109  109.10  11.86   1 120   119
## estacion_arranque*     9 2681 108.20 119.34     67   93.75  97.85   1 342   341
## laminas_procesadas*   10 2681 107.50 161.05      3   75.81   2.97   1 507   506
## inicio_setup*         11 2681 102.98 159.26      2   70.14   1.48   1 509   508
## fin_inicio_su*        12 2681 182.64 208.71    100  155.27 146.78   1 613   612
## inicio_proceso*       13 2681 189.66 210.36    120  161.89 176.43   1 631   630
## fin_proceso*          14 2681   9.38  25.45      3    2.42   1.48   1 157   156
## tiempo_calidad        15  484   2.01   5.30      0    0.64   0.00   0  48    48
##                      skew kurtosis   se
## fecha*              -0.01    -1.23 0.15
## no                   0.14    -1.04 0.58
## cliente*             0.17    -0.73 0.05
## id_form*             0.12    -1.10 1.41
## producto*           -0.02    -1.21 1.83
## piezas_prog*         0.68    -0.36 0.29
## tiempo_minutos*      0.95    -0.29 1.05
## hora_fin*           -3.00     9.03 0.47
## estacion_arranque*   0.69    -1.02 2.30
## laminas_procesadas*  1.28     0.16 3.11
## inicio_setup*        1.36     0.38 3.08
## fin_inicio_su*       0.76    -0.87 4.03
## inicio_proceso*      0.73    -0.85 4.06
## fin_proceso*         3.78    13.77 0.49
## tiempo_calidad       4.59    25.98 0.24
dim(produccion)
## [1] 2681   15

La base de datos de merma cuenta con 3 variables y 60 registros

describe(merma)
##        vars  n  mean    sd median trimmed   mad min max range  skew kurtosis
## Fecha*    1 60 17.50 14.19   15.5   16.69 18.53   1  43    42  0.30    -1.42
## Mes*      2 60  6.25  4.56    5.0    5.60  4.45   1  19    18  1.05     0.44
## Kilos*    3 60 28.72 15.92   29.0   28.77 19.27   1  56    55 -0.03    -1.21
##          se
## Fecha* 1.83
## Mes*   0.59
## Kilos* 2.06
dim(merma)
## [1] 60  3

La base de datos de scrap cuenta con 8 variables y 251 registros

describe(scrap)
##                    vars   n   mean     sd median trimmed   mad min  max range
## Referencia*           1 251 126.00  72.60    126  126.00 93.40   1  251   250
## fecha*                2 251  16.21   7.11     17   16.50  7.41   1   27    26
## hora*                 3 251 126.00  72.60    126  126.00 93.40   1  251   250
## producto*             4 251  46.53  24.29     48   46.16 26.69   1   96    95
## cantidad              5 251  13.34 105.90      2    3.95  1.48   0 1674  1674
## unidad_medida*        6 251   2.00   0.06      2    2.00  0.00   1    2     1
## ubicacion_origen*     7 251   3.47   0.86      4    3.60  0.00   1    4     3
## ubicacion_desecho*    8 251   2.00   0.06      2    2.00  0.00   1    2     1
## estado*               9 251   2.00   0.06      2    2.00  0.00   1    2     1
##                      skew kurtosis   se
## Referencia*          0.00    -1.21 4.58
## fecha*              -0.29    -0.99 0.45
## hora*                0.00    -1.21 4.58
## producto*            0.02    -0.85 1.53
## cantidad            15.37   237.90 6.68
## unidad_medida*     -15.65   244.02 0.00
## ubicacion_origen*   -1.11    -0.62 0.05
## ubicacion_desecho* -15.65   244.02 0.00
## estado*            -15.65   244.02 0.00
dim(scrap)
## [1] 251   9

2) Aplica al menos 2 técnicas de limpieza de bases de datos y explícalas brevemente, ¿por qué realizaste esas técnicas?

Producción

Revisamos la base de datos

summary(produccion)
##     fecha                 no           cliente            id_form         
##  Length:2681        Min.   :  1.00   Length:2681        Length:2681       
##  Class :character   1st Qu.: 25.00   Class :character   Class :character  
##  Mode  :character   Median : 50.00   Mode  :character   Mode  :character  
##                     Mean   : 51.18                                        
##                     3rd Qu.: 76.00                                        
##                     Max.   :121.00                                        
##                                                                           
##    producto         piezas_prog        tiempo_minutos       hora_fin        
##  Length:2681        Length:2681        Length:2681        Length:2681       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  estacion_arranque  laminas_procesadas inicio_setup       fin_inicio_su     
##  Length:2681        Length:2681        Length:2681        Length:2681       
##  Class :character   Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character   Mode  :character  
##                                                                             
##                                                                             
##                                                                             
##                                                                             
##  inicio_proceso     fin_proceso        tiempo_calidad  
##  Length:2681        Length:2681        Min.   : 0.000  
##  Class :character   Class :character   1st Qu.: 0.000  
##  Mode  :character   Mode  :character   Median : 0.000  
##                                        Mean   : 2.008  
##                                        3rd Qu.: 1.000  
##                                        Max.   :48.000  
##                                        NA's   :2197

Al revisar la base de datos logramos notar que existen varios na´s, algunas columnas que no son necesarias y variables que están registradas como character.

Eliminamos columnas innecesarias

produccion1 <- subset(produccion,select = -c (no, id_form, producto, hora_fin, estacion_arranque, inicio_setup, fin_inicio_su, inicio_proceso, fin_proceso))

Borramos los registros de NA´s

produccion2 <- produccion1[!is.na(produccion1$tiempo_minutos),]
produccion3 <- produccion2[!is.na(produccion2$laminas_procesadas),]

Cambiamos formato de variables

produccion3$fecha <- as.Date(produccion3$fecha, format = "%d/%m/%Y")
produccion3$piezas_prog <- substr(produccion3$ piezas_prog, start = 1, stop = 2)
produccion3$piezas_prog <- as.integer(produccion3$ piezas_prog)
## Warning: NAs introduced by coercion
produccion3$laminas_procesadas <- substr(produccion3$ laminas_procesadas, start = 1, stop = 2)
produccion3$laminas_procesadas <- as.integer(produccion3$ laminas_procesadas)
## Warning: NAs introduced by coercion
produccion3$tiempo_minutos <- as.integer(produccion3$tiempo_minutos)
## Warning: NAs introduced by coercion
produccion3$tiempo_calidad <- as.numeric(produccion3$tiempo_calidad)

Merma

Revisamos la base de datos

summary(merma)
##     Fecha               Mes               Kilos          
##  Length:60          Length:60          Length:60         
##  Class :character   Class :character   Class :character  
##  Mode  :character   Mode  :character   Mode  :character

Observaciones:

  1. Todas las variables son character, por lo que tendremos que cambiarlas a su verdadero tipo.
  2. Contamos con filas que tienen el total de cada mes y no son necesaria.

Eliminamos filas de totales de cada mes.

merma1 <- merma[-c(5,12,19,25,31,36,42,54,59,60),]

Cambiar variables a numericas y fecha

merma1$Kilos <- as.numeric(merma1$Kilos)
merma1$Fecha <- as.Date(merma1$Fecha, format = "%d/%m/%Y")

Scrap

En scrap contamos con una fila y algunas columnas que no necesitamos, es por esto que sera necesario eliminarla. También noté que todas las variables son de character

Eliminamos fila

scrap <- scrap[(-1),]

Eliminamos Columna

scrap1 <- subset(scrap, select = -c (Referencia, producto, ubicacion_desecho, estado, unidad_medida))
scrap1$fecha <- as.Date(scrap1$fecha, format = "%d/%m/%Y")

3) Clasifica cada variable en cualitativa, cuantitativa discreta o cuantitativa continua

Producción:

Variable<-c("Fecha", "Cliente", "Piezas Programadas", "Tiempo Min", "Láminas Procesadas", "Tiempo Calidad")
Tipo<-c("Cualitativa", "Cualitativa", "Cuantitativa(Discreta)", "Cuantitativa (Continua)", "Cuantitativa(Discreta)","Cuantitativa(Continua)")
Escala_Medicion <-c("NA", "NA", "No. Piezas",  "Horas", "No. Piezas", "Horas")
tabla<-data.frame(Variable, Tipo, Escala_Medicion)
knitr::kable(tabla)
Variable Tipo Escala_Medicion
Fecha Cualitativa NA
Cliente Cualitativa NA
Piezas Programadas Cuantitativa(Discreta) No. Piezas
Tiempo Min Cuantitativa (Continua) Horas
Láminas Procesadas Cuantitativa(Discreta) No. Piezas
Tiempo Calidad Cuantitativa(Continua) Horas

Merma:

Variable1 <-c("Fecha","Mes", "Kilos")
Tipo1 <-c("Cuantitativa (Continua)","Cualitativa", "Cuantitativa (Continua)")
Escala_Medicion1 <-c("Fecha","NA", "Kilogramos")
tabla1 <-data.frame(Variable1, Tipo1, Escala_Medicion1)
knitr::kable(tabla1)
Variable1 Tipo1 Escala_Medicion1
Fecha Cuantitativa (Continua) Fecha
Mes Cualitativa NA
Kilos Cuantitativa (Continua) Kilogramos

Scrap:

Variable2 <-c("Fecha", "ID_Producto", "Producto", "Cantidad", "Estado")
Tipo2 <-c("Cualitativa", "Cualitativa", "Cualitativa", "Cuantitativa (Discreta)", "Cualitativa")
Escala_Medicion2 <-c("NA", "NA", "NA", "Unidades", "NA")
tabla2 <-data.frame(Variable2, Tipo2, Escala_Medicion2)
knitr::kable(tabla2)
Variable2 Tipo2 Escala_Medicion2
Fecha Cualitativa NA
ID_Producto Cualitativa NA
Producto Cualitativa NA
Cantidad Cuantitativa (Discreta) Unidades
Estado Cualitativa NA

5) Realizar un análisis estadístico descriptivo en el que logres destacar el conjunto de datos, que apoyan a la empresa a mejorar su operación.

Se utilizará summary y describe para realizar un análisis estadístico descriptivo

summary(produccion3)
##      fecha              cliente           piezas_prog   tiempo_minutos  
##  Min.   :2022-08-01   Length:2681        Min.   : 0.0   Min.   :  0.00  
##  1st Qu.:2022-08-08   Class :character   1st Qu.:15.0   1st Qu.: 15.00  
##  Median :2022-08-16   Mode  :character   Median :20.0   Median : 20.00  
##  Mean   :2022-08-15                      Mean   :22.9   Mean   : 22.86  
##  3rd Qu.:2022-08-24                      3rd Qu.:25.0   3rd Qu.: 25.00  
##  Max.   :2022-08-31                      Max.   :99.0   Max.   :120.00  
##                                          NA's   :686    NA's   :2518    
##  laminas_procesadas tiempo_calidad  
##  Min.   : 0.000     Min.   : 0.000  
##  1st Qu.: 0.000     1st Qu.: 0.000  
##  Median : 0.000     Median : 0.000  
##  Mean   : 6.345     Mean   : 2.008  
##  3rd Qu.:11.000     3rd Qu.: 1.000  
##  Max.   :98.000     Max.   :48.000  
##  NA's   :1285       NA's   :2197
summary(scrap1)
##      fecha                hora              cantidad      ubicacion_origen  
##  Min.   :2022-08-01   Length:250         Min.   : 0.000   Length:250        
##  1st Qu.:2022-08-11   Class :character   1st Qu.: 1.000   Class :character  
##  Median :2022-08-19   Mode  :character   Median : 2.000   Mode  :character  
##  Mean   :2022-08-17                      Mean   : 6.696                     
##  3rd Qu.:2022-08-25                      3rd Qu.: 7.000                     
##  Max.   :2022-08-31                      Max.   :96.000
summary(merma1)
##      Fecha                Mes                Kilos     
##  Min.   :2022-02-05   Length:50          Min.   : 790  
##  1st Qu.:2022-05-09   Class :character   1st Qu.:3178  
##  Median :2022-08-08   Mode  :character   Median :3925  
##  Mean   :2022-07-31                      Mean   :3709  
##  3rd Qu.:2022-11-01                      3rd Qu.:4232  
##  Max.   :2022-11-08                      Max.   :6140  
##  NA's   :33
describe(produccion3)
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf
## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
##                    vars    n  mean    sd median trimmed  mad min  max range
## fecha                 1 2681   NaN    NA     NA     NaN   NA Inf -Inf  -Inf
## cliente*              2 2681  6.46  2.69      6    6.46 2.97   1   11    10
## piezas_prog           3 1995 22.90 14.00     20   20.62 7.41   0   99    99
## tiempo_minutos        4  163 22.87 14.73     20   20.78 7.41   0  120   120
## laminas_procesadas    5 1396  6.34 10.78      0    4.24 0.00   0   98    98
## tiempo_calidad        6  484  2.01  5.30      0    0.64 0.00   0   48    48
##                    skew kurtosis   se
## fecha                NA       NA   NA
## cliente*           0.17    -0.73 0.05
## piezas_prog        1.74     4.05 0.31
## tiempo_minutos     2.54    11.63 1.15
## laminas_procesadas 3.44    17.22 0.29
## tiempo_calidad     4.59    25.98 0.24
describe(scrap1)
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf

## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
##                   vars   n   mean    sd median trimmed   mad min  max range
## fecha                1 250    NaN    NA     NA     NaN    NA Inf -Inf  -Inf
## hora*                2 250 125.50 72.31  125.5  125.50 92.66   1  250   249
## cantidad             3 250   6.70 11.85    2.0    3.88  1.48   0   96    96
## ubicacion_origen*    4 250   2.48  0.85    3.0    2.60  0.00   1    3     2
##                    skew kurtosis   se
## fecha                NA       NA   NA
## hora*              0.00    -1.21 4.57
## cantidad           4.12    21.14 0.75
## ubicacion_origen* -1.10    -0.70 0.05
describe(merma1)
## Warning in FUN(newX[, i], ...): no non-missing arguments to min; returning Inf

## Warning in FUN(newX[, i], ...): no non-missing arguments to max; returning -Inf
##       vars  n    mean      sd median trimmed    mad min  max range  skew
## Fecha    1 17     NaN      NA     NA     NaN     NA Inf -Inf  -Inf    NA
## Mes*     2 50    4.60    2.60      4    4.53   2.97   1    9     8  0.21
## Kilos    3 50 3708.52 1023.99   3925 3798.65 541.15 790 6140  5350 -0.94
##       kurtosis     se
## Fecha       NA     NA
## Mes*     -1.35   0.37
## Kilos     1.65 144.81

Gráficos de datos

Cualitativos y cuantitativos

Cuantitativos

hist(produccion3$piezas_prog, main = "Piezas producidas", ylab = "Frecuencia", xlab = "Piezas Programadas", col = "red")

## Cualitativo

p <- c(148, 50, 32, 98, 73, 227, 156, 205)
e <- c("DENSO", "HELLA", "MERIDIAN LIGHT", "STILUS 1", "STABILUS 3", "TRMX", "VARROC", "YANFENG")
pct <- round(p/sum(p)*100)
etiquetas <- paste(e, pct)
etiquetas <- paste(e,"%",sep="")
pie(p,labels = etiquetas,
    col=rainbow(length(etiquetas)),
    main="Pie Chart")

## Gráficos de dispersión.

plot(produccion3$piezas_prog)

plot(scrap1$cantidad)

# Tabla de frecuencia

scrap1 %>% 
  group_by(ubicacion_origen) %>% 
  dplyr::summarize(frequency = n())
## # A tibble: 3 × 2
##   ubicacion_origen          frequency
##   <chr>                         <int>
## 1 SAB/Calidad/Entrega de PT        58
## 2 SAB/Post-Production              13
## 3 SAB/Pre-Production              179

6) Propuestas

Propuesta 1: Form necesita establecer principalmente un formato para sus bases de datos, de esta manera dicha información podrá ser mas facil de interpretar por cualquier persona, en caso de buscar consultoria de sus procesos.

Propuesta 2: Es necesario tambien analizar el porqué detras de el alto nivel de merma en el mes de agosto, de esta manera se podrá realizar una estrategia para reducir la cantidad de desperdicio generada. Esto es aplicable para el resto de los meses.