Main Content

cusum

누적합을 사용하여 평균의 미세한 변화 감지

설명

예제

[iupper,ilower] = cusum(x)는 목표 평균에서 위와 아래로 5 표준편차를 벗어나게 변동한, x의 상부 및 하부 누적합에 대한 첫 번째 인덱스를 각각 반환합니다. 감지 가능한 최소 평균 이동은 1 표준편차입니다. 이 함수는 x의 처음 25개 샘플에서 목표 평균과 표준편차를 추정합니다.

예제

[iupper,ilower] = cusum(x,climit,mshift,tmean,tdev)는 허용 가능한 표준편차 개수, 즉 상부 및 하부 누적합이 평균에서 벗어날 수 있는 표준편차 개수인 climit를 지정합니다. 또한 감지 가능한 최소 평균 이동, 목표 평균, 목표 표준편차도 지정합니다.

[iupper,ilower] = cusum(___,'all')은 상부 및 하부 누적합이 관리 한계를 초과하는 모든 인덱스를 반환합니다.

예제

[iupper,ilower,uppersum,lowersum] = cusum(___)은 상부 및 하부 누적합도 반환합니다.

cusum(___)에 출력 인수를 지정하지 않으면 목표 평균 위와 아래의 1 표준편차로 정규화된 상부 및 하부 누적합을 플로팅합니다.

예제

모두 축소

선형 추세를 갖고 100개 샘플로 구성된 랜덤 신호를 생성하고 플로팅합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

rng('default')

rnds = rand(1,100);
trnd = linspace(0,1,100);

fnc = rnds + trnd;

plot(fnc)

Figure contains an axes object. The axes object contains an object of type line.

입력 인수의 디폴트 값을 사용하여 cusum을 함수에 적용합니다.

cusum(fnc)

Figure contains an axes object. The axes object with title CUSUM Control Chart mu indexOf target baseline blank = blank 0 . 760971 blank sigma indexOf target baseline blank = blank 0 . 341922, xlabel Samples, ylabel Standard Errors contains 5 objects of type line. One or more of the lines displays its values using only markers

처음 25개 샘플의 평균과 표준편차를 계산합니다. 이러한 수치를 목표 평균과 목표 표준편차로 사용하여 cusum을 적용합니다. 누적합이 목표 평균에서 5 표준편차를 벗어나게 변동하는 점을 강조 표시합니다. 감지 가능한 최소 평균 이동을 1 표준편차로 설정합니다.

mfnc = mean(fnc(1:25));
sfnc = std(fnc(1:25));

cusum(fnc,5,1,mfnc,sfnc)

Figure contains an axes object. The axes object with title CUSUM Control Chart mu indexOf target baseline blank = blank 0 . 760971 blank sigma indexOf target baseline blank = blank 0 . 341922, xlabel Samples, ylabel Standard Errors contains 5 objects of type line. One or more of the lines displays its values using only markers

음의 선형 추세를 사용하여 계산을 반복합니다.

nnc = rnds - trnd;

cusum(nnc)

Figure contains an axes object. The axes object with title CUSUM Control Chart mu indexOf target baseline blank = blank 0 . 518547 blank sigma indexOf target baseline blank = blank 0 . 328522, xlabel Samples, ylabel Standard Errors contains 5 objects of type line. One or more of the lines displays its values using only markers

마모로 인해 불안정해지는 차축의 움직임과 유사한 신호를 생성합니다. 분산이 1/9인 백색 가우스 잡음을 추가합니다. 재현 가능한 결과를 얻기 위해 난수 생성기를 재설정합니다.

rng default

sz = 200;

dr = airy(2,linspace(-14.9371,1.2,sz));
rd = dr + sin(2*pi*(1:sz)/5) + randn(1,sz)/3;

점점 커지는 백그라운드 변동과 그 결과로 생성되는 신호를 플로팅합니다.

plot(dr)
hold on
plot(rd,'.-')
hold off

Figure contains an axes object. The axes object contains 2 objects of type line.

변동과 잡음이 없을 때의 평균과 표준편차를 구합니다. 잡음 없는 이상적인 신호와 그 신호의 안정된 백그라운드를 플로팅합니다.

id = 0.3*sin(2*pi*(1:sz)/20);
st = id + sin(2*pi*(1:sz)/5);

mf = mean(st)
mf = -3.8212e-16
sf = std(st)
sf = 0.7401
plot(id)
hold on
plot(st,'.-')
hold off

Figure contains an axes object. The axes object contains 2 objects of type line.

CUSUM 관리도를 사용하여 불안정성이 시작되는 지점을 찾아냅니다. 신호가 이상적인 동작에서 3 표준편차를 벗어난 경우 시스템이 불안정한 것으로 가정합니다. 감지 가능한 최소 이동을 1 표준편차로 지정합니다.

cusum(rd,3,1,mf,sf)

Figure contains an axes object. The axes object with title CUSUM Control Chart mu indexOf target baseline blank = blank - 0 . 000000 blank sigma indexOf target baseline blank = blank 0 . 740094, xlabel Samples, ylabel Standard Errors contains 6 objects of type line. One or more of the lines displays its values using only markers

감지 가능한 최소 이동을 증가시켜 위반 기준을 더 엄격하게 합니다. 원치 않는 변동이 발생한 모든 경우를 반환합니다.

cusum(rd,3,1.2,mf,sf,'all')

Figure contains an axes object. The axes object with title CUSUM Control Chart mu indexOf target baseline blank = blank - 0 . 000000 blank sigma indexOf target baseline blank = blank 0 . 740094, xlabel Samples, ylabel Standard Errors contains 6 objects of type line. One or more of the lines displays its values using only markers

골프장의 각 홀에는 공을 넣는 데 필요한 타수를 나타내는 "par"(파)가 있습니다. 숙련된 선수는 대개 해당 파에 매우 근접한 타수를 기록하며 각 홀을 끝냅니다. 시합에서 확실한 우승자로 부상하려면 여러 홀에서 경기를 하고 점수를 누적해야 합니다.

Ben, Jen, Ken이 18홀로 구성된 전체 1라운드 경기를 합니다. 코스는 par-3, par-4, par-5 홀로 구성되어 있습니다. 경기가 끝나면 선수들이 자신의 점수를 계산합니다.

hole = 1:18;
par = [4 3 5 3 4 5 3 4 4 4 5 3 5 4 4 4 3 4];

nms = {'Ben';'Jen';'Ken'};

Ben = [4 3 4 2 3 5 2 3 3 4 3 2 3 3 3 3 2 3];
Jen = [4 3 4 3 4 4 3 4 4 4 5 3 4 4 5 5 3 3];
Ken = [4 3 4 3 5 5 4 4 4 4 5 3 5 4 5 4 3 5];

T = table(hole',par',Ben',Jen',Ken', ...
    'VariableNames',['hole';'par';nms])
T=18×5 table
    hole    par    Ben    Jen    Ken
    ____    ___    ___    ___    ___

      1      4      4      4      4 
      2      3      3      3      3 
      3      5      4      4      4 
      4      3      2      3      3 
      5      4      3      4      5 
      6      5      5      4      5 
      7      3      2      3      4 
      8      4      3      4      4 
      9      4      3      4      4 
     10      4      4      4      4 
     11      5      3      5      5 
     12      3      2      3      3 
     13      5      3      4      5 
     14      4      3      4      4 
     15      4      3      5      5 
     16      4      3      5      4 
      ⋮

끝났을 때 하부 누적합이 par 밑으로 가장 낮은 선수가 라운드의 승자가 됩니다. 우승자를 결정하기 위해 세 선수의 합을 계산합니다. 임계값을 작게 설정하여 모든 평균 이동을 감지 가능하게 합니다.

[~,b,~,Bensum] = cusum(Ben-par,1,1e-4,0);
[~,j,~,Jensum] = cusum(Jen-par,1,1e-4,0);
[~,k,~,Kensum] = cusum(Ken-par,1,1e-4,0);

plot([Bensum;Jensum;Kensum]')
legend(nms,'Location','best')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Ben, Jen, Ken.

이 라운드에서는 Ben이 우승했습니다. 홀별로 타수를 임의로 추가하거나 빼서 다음 경기를 시뮬레이션합니다.

Ben = Ben+randi(3,1,18)-2;
Jen = Jen+randi(3,1,18)-2;
Ken = Ken+randi(3,1,18)-2;

[~,b,~,Bensum] = cusum(Ben-par,1,1e-4,0);
[~,j,~,Jensum] = cusum(Jen-par,1,1e-4,0);
[~,k,~,Kensum] = cusum(Ken-par,1,1e-4,0);

plot([Bensum;Jensum;Kensum]')
legend(nms,'Location','best')

Figure contains an axes object. The axes object contains 3 objects of type line. These objects represent Ben, Jen, Ken.

입력 인수

모두 축소

입력 신호로, 벡터로 지정됩니다.

예: reshape(rand(100,1)*[-1 1],1,200)

관리 한계로, 표준편차를 단위로 하는 실수형 스칼라로 지정됩니다.

감지할 최소 평균 이동으로, 표준편차를 단위로 하는 실수형 스칼라로 지정됩니다.

목표 평균으로, 실수형 스칼라로 지정됩니다. 지정하지 않을 경우 tmeanx의 처음 25개 샘플의 평균으로 추정됩니다.

목표 표준편차로, 실수형 스칼라로 지정됩니다. 지정하지 않을 경우 tdevx의 처음 25개 샘플의 표준편차로 추정됩니다.

출력 인수

모두 축소

이탈 점 인덱스로, 정수 스칼라 또는 정수 벡터로 반환됩니다. 모든 신호 샘플이 지정된 허용오차 내에 있는 경우 cusum은 빈 iupper 인수와 ilower 인수를 반환합니다.

상부 및 하부 누적합으로, 벡터로 반환됩니다.

세부 정보

모두 축소

CUSUM 관리도

CUSUM 관리도는 공정 평균의 점진적 변화를 감지하도록 설계되었습니다.

수열 x1, x2, x3, …, xn과 함께 추정 평균 mx와 추정 표준편차 σx가 주어진 경우 다음을 사용하여 상부 및 하부 누적 공정 합을 정의합니다.

  • 상부 누적합

    Ui={0,i=1max(0,Ui1+ximx12nσx),i>1

  • 하부 누적합

    Li={0,i=1min(0,Li1+ximx+12nσx),i>1

cusum에서 mshift 인수로 표현되는 변수 n은 이동을 검출할 수 있는, 목표 평균 tmean에서 벗어난 표준편차 개수입니다.

공정이 Uj > cσx 또는 Lj < –cσx를 따르는 경우 이 공정은 샘플 xj에서 CUSUM 기준을 위반합니다. 관리 한계 c는 cusum에서 climit 인수로 표현됩니다.

기본적으로 함수는 처음 감지한 위반을 반환합니다. 'all' 플래그를 지정하면 함수는 모든 위반을 반환합니다.

확장 기능

버전 내역

R2016a에 개발됨

참고 항목

|