Gráficos de control para atributos

Fecha de publicación

24 de febrero de 2026

Introducción

Mientras que los gráficos de control para variables rastrean las cantidades medidas relacionadas con la calidad de los resultados del proceso, los gráficos para atributos siguen el recuento de los elementos no conformes. Los gráficos para atributos no son tan informativos como los gráficos para variables para los estudios de la fase I. Un desplazamiento por encima o por debajo del límite de control inferior o una serie de puntos por encima o por debajo de la línea central en un gráfico de variables puede dar una pista sobre la causa. Sin embargo, un cambio en el número de elementos no conformes puede dar tal indicio. Aún así los gráficos de atributos tienen valor en la fase I.

En las industrias de servicios y otras áreas no manufactureras, los datos de conteo pueden ser abundantes pero las mediciones numéricas raras. Además, se pueden considerar simultáneamente muchas características de los resultados del proceso utilizando gráficos de atributos.

Librerías

library(tidyverse)
library(qcc)

Para no conformes (Defectuosos)

Gráfico \(p\)

A continuación se le presenta un ejemplo donde se han recogido \(n=50\) durante 30 periodos de tiempo.

data(orangejuice)

head(orangejuice)%>% 
  flextable::flextable()

sample

D

size

trial

1

12

50

TRUE

2

15

50

TRUE

3

8

50

TRUE

4

10

50

TRUE

5

4

50

TRUE

6

7

50

TRUE

tail(orangejuice)%>% 
  flextable::flextable()

sample

D

size

trial

49

6

50

FALSE

50

7

50

FALSE

51

5

50

FALSE

52

6

50

FALSE

53

3

50

FALSE

54

5

50

FALSE

Solo necesitamos, para el ejemplo, los primeros 30 datos (los de trial = TRUE).

datos <- orangejuice %>% 
  dplyr::filter(trial)

Con este código podemos generar el gráfico.

p <- qcc(datos$D, 
         sizes = 50, type = "p", 
         title = "Gráfico de control p")

Si \(n\) es variable, supongamos que de esta manera (en un caso real, debe ingresar datos reales, estos son simulados):

n_var <- sample(40:60, # n, aleatorio, entre 40 y 60
                30, # 30 datos
                replace = TRUE) 

n_var
 [1] 51 45 56 57 46 55 51 48 57 44 50 52 58 54 51 55 51 50 43 49 50 40 55 58 53
[26] 47 59 56 56 43

Entonces

p <- qcc(datos$D, 
         sizes = n_var, type = "p", 
         title = "Gráfico de control p (n variable)")

Gráfico \(np\)

No hay muchas diferencias entre la generación del gráfico \(p\) y el \(np\), como podemos apreciar.

np <- qcc(datos$D, 
          sizes = 50, type = "np", 
          title = "Gráfico de control np")

Este también puede ser variable, pero no se recomienda y justo este gráfico a continuación es un prueba de ello.

np <- qcc(datos$D, 
          sizes = n_var, type = "np", 
          title = "Gráfico de control np (n variable)")

Para no conformidades (defectos)

Gráfico \(c\)

Para este ejemplo se va a emplear los siguientes datos

data("circuit")

head(circuit)%>% 
  flextable::flextable()

x

size

trial

21

100

TRUE

24

100

TRUE

16

100

TRUE

12

100

TRUE

15

100

TRUE

5

100

TRUE

Al igual que en los ejemplos de \(p\) y \(np\), solo necesitamos, para el ejemplo, los primeros 26 datos (los de trial = TRUE).

datos_circuito <- circuit %>% 
  dplyr::filter(trial)

Una vez realizado este paso miscelaneo, se puede construir el gráfico de control \(c\)

c <- qcc(datos_circuito$x, type = "c", 
         title = "Gráfico de control c")

Para este gráfico tampoco se recomienda \(n\) variable.

Gráfico \(u\)

Empleando los datos anteriores, se construye el gráfico de la siguiente manera.

u <- qcc(datos_circuito$x, 
         sizes = 100, type = "u", 
         title = "Gráfico de control u")

En caso de tener \(n\) variable (simulado a partir de los siguientes datos).

n_var <- sample(90:110, 26, replace = T)

Se puede obtener el gráfico de esta manera

u <- qcc(datos_circuito$x, 
         sizes = n_var, # datos variables
         type = "u", 
         title = "Gráfico de control u (n variable)")