domingo, 8 de noviembre de 2009

R: Cartas de Control

En este apartado, se explicará la función desarrollada en R por este blog, Aqueronte, para obtener el modelo y parámetros de Cartas de Control.

Ya que aquí sólo se expondrá cómo es el manejo de la función, se recomienda que se visite el capítulo: Control Estadístico de la Calidad: Cartas de Control, para determinar en qué consiste el susodicho método.

Para el estudio de este capítulo, la función desarrollada en R, presenta la siguiente estructura:

R: Control Estadístico de la Calidad: Cartas de Control.
CartasControl (x, Rango, n, tipo)
Se utiliza para el estudio de Cartas de Control.

Los argumentos que podemos pasar a la función expuesta anteriormente, son:
  • x: Vector numérico que almacenará los datos a estudio. Por defecto, su valor es de 0.
  • Rango: Vector numérico que deberá contener el rango del estudio. Por defecto, su valor es de 0.
  • n: Tamaño de la muestra. Por defecto, su valor es de 10. Nota: No confundir con el número de muestras.
  • tipo: Parámetro dónde especificaremos el tipo de carta de control a estudio. Puede ser:
..........................· x o X Carta de control de Medias.
..........................· r o R Carta de control de Rangos.
..........................· p o P Carta de control de Proporciones.
..........................· c o C Carta de control de Defectos.
..........................· u o U Carta de control de Defectos por Unidad.

La función en sí, es la siguiente:

#######################################################################
#
# Este archivo es propiedad intelectual del blog Aqueronte,
# cuya dirección web, es la siguiente:
#
# http://unbarquero.blogspot.com/
#
# Se permite cualquier modificación del archivo siempre y cuando
# se mantenga la autoría del autor.
#
# El autor no se responsabiliza de las consecuencias que pueda
# ocasionar éste código debido a un uso inadecuado del mismo.
#
#######################################################################
#
# Función: CartasControl Versión: vs0.0
# Fecha: 2/11/09 R Versión: 2.10.0
#
# Autor: Manuel Caballero
# Compañía: Hades
#
#######################################################################
#
# Notas: Esta función representa por consola los datos básicos
# de cualquier Carta de Control y su representación gráfica.
#
# Datos de Entrada:
# · x: Vector de elementos a estudiar.
# · Rango: Vector de rangos sólo para cartas de Control: X y R.
# · n: Nº observaciones de la muestra.
# · tipo: Carta de Control a estudio:
# · x o X: Carta de control de Medias.
# · r o R: Carta de control de Rangos.
# · p o P: Carta de control de Proporciones.
# · c o C: Carta de control de Defectos.
# · u o U: Carta de control de Defectos por Unidad.
#
# Mejoras para posibles versiones:
# · Informar automáticamente por consola si está bajo
# control el proceso a estudio.

#######################################################################
CartasControl <- function(x = 0, Rango = 0, n = 10, tipo = "p"){
tabla <- matrix(c(0,0,0,0,0,
+ 1.880,1.128,0.853,0,3.276,
+ 1.023,1.693,0.888,0,2.575,
+ 0.729,2.059,0.880,0,2.282,
+ 0.577,2.326,0.864,0,2.115,
+ 0.483,2.534,0.848,0,2.004,
+ 0.419,2.704,0.833,0.076,1.924,
+ 0.373,2.847,0.820,0.136,1.864,
+ 0.337,2.970,0.808,0.184,1.816,
+ 0.308,3.078,0.797,0.223,1.777,
+ 0.285,3.173,0.787,0.256,1.744,
+ 0.266,3.258,0.778,0.284,1.719,
+ 0.249,3.336,0.770,0.308,1.692,
+ 0.235,3.407,0.762,0.329,1.671,
+ 0.223,3.472,0.755,0.348,1.652,
+ 0.212,3.532,0.749,0.364,1.636,
+ 0.203,3.588,0.743,0.379,1.621,
+ 0.194,3.640,0.738,0.392,1.608,
+ 0.187,3.689,0.733,0.404,1.596,
+ 0.180,3.735,0.729,0.414,1.586,
+ 0.173,3.778,0.724,0.425,1.575,
+ 0.167,3.819,0.720,0.434,1.566,
+ 0.162,3.858,0.716,0.443,1.557,
+ 0.157,3.895,0.712,0.452,1.548,
+ 0.153,3.931,0.709,0.459,1.541),nrow = 25, ncol = 5, byrow=TRUE)

# Carta de Control: Media
if(tipo == "x" || tipo == "X"){
LC <- mean(x)
Rango <- mean(Rango)
LSC <- LC+tabla[n,1]*Rango
LIC <- LC-tabla[n,1]*Rango
}

# Carta de Control: Rango
if(tipo == "r" || tipo == "R"){
LC <- mean(Rango)
LSC <- tabla[n,5]*LC
LIC <- tabla[n,4]*LC
x <- Rango
}

# Carta de Control: Proporciones
if(tipo == "p"){
x <- x/n LC <- mean(x)
LSC <- LC+3*sqrt((1/n)*(LC*(1-LC)))
LIC <- LC-3*sqrt((1/n)*(LC*(1-LC)))
}

# Carta de Control: Defectos
if(tipo == "c" || tipo == "C"){
LC <- mean(x)
LSC <- LC+3*sqrt(LC)
LIC <- LC-3*sqrt(LC)
}

# Carta de Control: Defectos por Unidad
if(tipo == "u" || tipo == "U"){
x <- x/n LC <- mean(x)
LSC <- LC+3*sqrt(LC/n)
LIC <- LC-3*sqrt(LC/n)
}

# No pude haber Límite Cero
if(LIC < 0){
LIC <- 0
}

# Optimiza el Eje Y
if(max(x) > LSC){
MaxY <- max(x)+(max(x)/1000)
}
else{
MaxY <- LSC+(LSC/1000)
}

if(min(x) < LIC){
MinY <- min(x)-(min(x)/1000)
}
else{
MinY <- LIC-(LIC/1000)
}

# Representa la Gráfica
plot(1:length(x),x,col="blue",type="l",ylim=c(MinY,MaxY))

# Dibuja los puntos
for(i in 1:length(x)){
points(i,x[i],type="o",col="blue")
}

axis(1,0:length(x))
SigmaS <- (LSC-LC)/3
SigmaI <- (LC-LIC)/3

# Parámetros de la Carta de Control
abline(h=LSC,col="red")
abline(h=LC)
abline(h=LIC,col="red")

# Límites 1-Sigma
lines(0:(length(x)+1),rep((LC+SigmaS),length(x)+2),type="c")
lines(0:(length(x)+1),rep((LC-SigmaI),length(x)+2),type="c")

# Límites 2-Sigma
lines(0:(length(x)+1),rep((LC+2*SigmaS),length(x)+2),type="c",col="red")
lines(0:(length(x)+1),rep((LC-2*SigmaI),length(x)+2),type="c",col="red")

# Resumen por consola
lista1 <- list(c(LIC, LC, LSC),c((LC-2*SigmaI),(LC+2*SigmaS)),c((LC-SigmaI),(LC+SigmaS)))
names(lista1) <- c("LIC LC LSC","2-Sigma: Inferior, Superior","1-Sigma: Inferior, Superior")
lista1
}
Para corroborar que la función CartasControl funciona de forma correcta, se insta a que se visite el enlace ofrecido al principio de este capítulo, donde existe gran multitud de problemas de esta índole.

Se puede descargar el script CartasdeControl.r del siguiente enlace:

CartasdeControl.r


Hay que tener en cuenta que esta función no determina si el proceso a estudio está fuera o no de control, simplemente, nos representa por consola los datos necesarios para dicho estudio y nos muestra gráficamente el resultado.

Los criterios para discernir si un proceso mediante cartas de control, esté fuera o no de control, serán los descritos y proporcionados por: Western Electric Handbook 1956.

Criterios para que un proceso esté fuera de control:
  • Un punto cae más allá de los límites de control 3-σ (Límites de actuación).
  • Dos de tres puntos consecutivos, caen más allá de un límite 2-σ (Límites de advertencia).
  • Cuatro de cinco puntos consecutivos, están a una distancia 1-σ o mayor de la línea central.
Ocho puntos consecutivos de la gráfica, están al mismo lado de la línea central.

En las sucesivas revisiones, se proveerá a la función CartasControl la posibilidad de discernir si un proceso está bajo control cumpliendo las especificaciones de: Western Electric Handbook 1956.

0 comentarios: