Aldo Motto

carta de cusum

Definición:

Cusum Chart

Para completar las celdas para el diagrama Cusum consideraremos lo siguiente:

                                      Q(t)= Q(t-1) + a(t) - d

donde el valor del Cusum al tiempo t, Q(t) será igual a valor de Q del período previo Q(t-1) más el error al tiempo t, a(t), que tendrá en cuenta los desplazamientos de la media mu con respecto al target y el valor de d(k para el nomograma de Goel y Wu)=1/2mu . El valor de h, intervalo de decisión, se estimará. Los valores se obtuvieron del nomograma para gráficos de control Cusum realizado por Goel y Wu (Determination of ARL and a Contour Nomogram for Cusum Charts to Control Normal Mean,Technometrics, Vol.13,Nº2 May 1971)

Los valores son los siguientes:

                             Con h=3 , d(k)=1.6

Ho               mu=0                             ARLo = 10^5

H1                      mu=1                             ARL1 = 200
                      mu=2                            ARL2 = 7.5
                      mu=3                            ARL3 = 2.85
                      mu=3.2                         ARL3.2 = 2.60
 
 

                             Con h=3.25, d(k)=1.5

Ho                mu=0                              ARLo= 10^5

H1                 mu=1                             ARL1= 150 (Cuando mu-k es negativo tomar La)
                      mu=2                             ARL2= 6.8
                      mu=3                             ARL3= 2.85

                             Con h=5, d(k)=1

Ho                 mu=0                               ARLo= 10^5

H1                 mu=1                                ARL1= 36
                      mu=2                                ARL2= 5.75
                       mu=3                                ARL3= 3.11

Para valores de mu=1 y h>5 no hay valores ya que caen fuera del análisis del nomograma, para ello hay que recurrir a la solución analítica o a la simulación que será la tarea siguiente.
 
 

Programa  Cusum.exe

#include <conio.h>
#include <stdio.h>
#include "nr.h"
#include "windows.h"
#include <stdlib.h>
#include "nrutil.h"

#define Na 8200
#define N2 4100

//hasta un valor de Na 14700 el programa corre y sale por fichero
//únicamente y hasta 8200 por fichero y gráfico. La diferencias en
//ARL no es significativa.

FILE *fi; GraphWindow w;

void main(){
int graphdriver = DETECT, graphmode;
long idum=(-15);
int i, j=1, cont_a=1, cont=0 ;
float h=1, a=0, cuantil,cuantil2, mu=2, var=1.;
float Calfa=0.99, Qh=0;
float *Q1, sum=0,sum2=0, *Q2 ;
 

fi=fopen("cusum.dat","w");
Q1=vector(1,Na);
Q2=vector(1,N2);
        while (cont_a<=Na) {
        a=mu+var*gasdev(&idum);
        Qh=Qh+a;
               if (Qh<=0)
               Qh=0;
        if (Qh>=h){
                Qh=0;
                Q1[cont_a]=cont;
                //printf("RL -> %d\n",(int) Q1[cont_a]);
                cont_a++; cont=0;
        }
        cont++;
        }

for (i=1;i<=Na;i++){
       sum=sum+Q1[i];
      }
       sum=sum/Na;

printf("ARLr1=%f\n", sum);
fprintf(fi,"ARLr1=%f\n",sum);

for(i=1;i<=Na;i++){
            Q2[j]=Q1[i]+Q1[i+1];
            sum2=sum2+Q2[j];
            i++; j++;
            }
            sum2=sum2/N2;
            printf("ARLr2= %f\n",sum2);
            fprintf(fi,"ARLr2= %f\n",sum2);

/*Si guardara "todos" los elementos generados en un vector, donde la suma de sus elementos se van acumulando y luego los ordenara, obtendría la distribución de frecuencias del Cusum, pero trabajamos solo con alarmas.*/

sort(Na,Q1);
        cuantil=Calfa*Na;
        fprintf(fi,"cuantilr1= %d\n",(int) Q1[cuantil]);
        printf("cuantilr1= %d\n",(int) Q1[cuantil]);

sort(N2,Q2);
        cuantil2=Calfa*N2;
        fprintf(fi,"cuantilr2= %d\n",(int) Q2[cuantil2]);
        printf("cuantilr2= %d\n",(int)Q2[cuantil2]);

    printf ("\nDone...\nPress 'enter' to plot the distribution");
    getchar();

    initgraph(&graphdriver, &graphmode, "c:\\tc\\bgi");
    InitWins();
    w.xmin=Q1[1]; w.xmax=Q2[N2];
    w.ymin=0.; w.ymax=1.;
    initwin(&w);

    for (i=1; i<Na; i++)
        plotline(Q1[i],(float) i/(float) Na, Q1[i+1],
                           (float)(i+1)/(float)Na,w);

        setcolor(WHITE);
        plotline(Q1[cuantil],0.,Q1[cuantil],1.,w);
        printf("\n\n\n(white)Cuantilr1 %4.2f = %d", Calfa, (int) Q1[cuantil]);
        setcolor(RED);
        plotline(sum,0.,sum,1.,w);
        printf("\n (red)ARLr1 = %f", sum);
        setcolor(BLUE);
        plotline(Q2[cuantil2],0.,Q2[cuantil2],1.,w);

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n(blue)Cuantilr2 %4.2f = %d",Calfa, (int) Q2[cuantil2]);
        setcolor(GREEN);
        plotline(sum2,0.,sum2,1.,w);
        printf("\n(green)ARLr2= %f", sum2);
        printf("\n h=%f y mu=%f",h,mu);
        getch();
        closegraph();
        fclose(fi);
        free_vector(Q1,1,Na);
        free_vector(Q2,1,N2);
/* clrscr;*/
}



Gráfico distribución de frecuencias ARL



Bibliografía

  1. Barros, J. and Romero, J. and Saíz V. (1995) Adquisición de Datos y Control con PC, Servicio de Publicaciones, Universidad de Cantábria, España

  2.  
  3. Kume, Hitoshi. (1992). Statistical Methods for Quality Improvement, AOTS, Japan

  4.  
  5. Goel, and Wu. (1971). Determination of ARL and a Contour Nomogram for Cusum & Control Technometrics, 13,221-230

  6.  
  7. Box, G. and Jenkins, G (1976) Times Series Analysis Forecasting and Control,

  8. Holden-Day, San Francisco
     
  9. Ishikawa, K., (1994).Introducción al Control de Calidad, Díaz de Santos, Madrid

  10.  
  11. Page, E., (1961) Cumulative Sum Charts, Technometrics, 3, 1-8

  12.  
  13. Box, G. and Luceño, A. (1997). Statistical Control by Monitoring and Feedback Adjustment, Wiley, New York


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

24.may.1999

Pulsar tecla de vuelta

Vuelta a Portada


Glosario de Carlos von der Becke.

1