exponenta event banner

cusum

Обнаруживайте небольшие изменения среднего с помощью кумулятивной суммы

Описание

пример

[iupper,ilower] = cusum(x) возвращает первый индекс верхней и нижней кумулятивных сумм x которые дрейфовали выше пяти стандартных отклонений выше и ниже целевого среднего. Минимальное обнаруживаемое среднее смещение устанавливается равным одному стандартному отклонению. Целевые средние и стандартные отклонения оцениваются из первых 25 образцов x.

пример

[iupper,ilower] = cusum(x,climit,mshift,tmean,tdev) определяет climit, количество стандартных отклонений, которые верхняя и нижняя кумулятивные суммы могут отклоняться от среднего значения. Он также определяет минимальное обнаруживаемое среднее смещение, целевое среднее и целевое стандартное отклонение.

[iupper,ilower] = cusum(___,'all') возвращает все индексы, при которых верхняя и нижняя кумулятивные суммы превышают контрольный предел.

пример

[iupper,ilower,uppersum,lowersum] = cusum(___) также возвращает верхнюю и нижнюю кумулятивные суммы.

cusum(___) без выходных аргументов строит график верхней и нижней кумулятивных сумм, нормализованных к одному стандартному отклонению выше и ниже целевого среднего.

Примеры

свернуть все

Создайте и постройте график 100-выборочного случайного сигнала с линейным трендом. Сбросьте генератор случайных чисел для воспроизводимых результатов.

rng('default')

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

fnc = rnds + trnd;

plot(fnc)

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

Обратиться cusum к функции, использующей значения по умолчанию входных аргументов.

cusum(fnc)

Figure contains an axes. The axes with title CUSUM Control Chart \mu_{target} = 0.760971 \sigma_{target} = 0.341922 contains 5 objects of type line.

Вычислите среднее и стандартное отклонение первых 25 выборок. Обратиться cusum использование этих чисел в качестве целевого среднего и целевого стандартного отклонения. Выделите точку, в которой кумулятивная сумма отклоняется более чем на пять стандартных отклонений от целевого среднего значения. Установите минимальное обнаруживаемое среднее смещение на одно стандартное отклонение.

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

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

Figure contains an axes. The axes with title CUSUM Control Chart \mu_{target} = 0.760971 \sigma_{target} = 0.341922 contains 5 objects of type line.

Повторите расчет с использованием отрицательного линейного тренда.

nnc = rnds - trnd;

cusum(nnc)

Figure contains an axes. The axes with title CUSUM Control Chart \mu_{target} = 0.518547 \sigma_{target} = 0.328522 contains 5 objects of type line.

Формирование сигнала, напоминающего движение вокруг оси, которое становится нестабильным из-за износа. Добавьте белый гауссов шум дисперсии 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. The axes 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. The axes contains 2 objects of type line.

Используйте контрольную диаграмму CUSUM для определения начала нестабильности. Предположим, что система становится нестабильной, когда сигнал имеет три стандартных отклонения от своего идеального поведения. Укажите минимальное обнаруживаемое смещение, равное одному стандартному отклонению.

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

Figure contains an axes. The axes with title CUSUM Control Chart \mu_{target} = -0.000000 \sigma_{target} = 0.740094 contains 6 objects of type line.

Сделать критерий нарушения более строгим, увеличив минимальный обнаруживаемый сдвиг. Возврат всех экземпляров нежелательного дрейфа.

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

Figure contains an axes. The axes with title CUSUM Control Chart \mu_{target} = -0.000000 \sigma_{target} = 0.740094 contains 6 objects of type line.

Каждое отверстие в гольфе имеет ассоциированный «паритет», который указывает ожидаемое количество ударов, необходимых для погружения мяча. Опытные игроки обычно заполняют каждое отверстие рядом ударов очень близко к par. Надо сыграть несколько дыр и дать накопиться набранным очкам, прежде чем в матче выйдет явный победитель.

Бен, Джен и Кен играют полный раунд, который состоит из 18 лунок. Курс имеет ряд отверстий 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 
      ⋮

Победителем раунда становится игрок, чья нижняя кумулятивная сумма дрейфует больше всего ниже номинала в конце. Вычислите суммы для трех игроков, чтобы определить победителя. Каждый сдвиг в среднем можно обнаружить, установив небольшой порог.

[~,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. The axes contains 3 objects of type line. These objects represent Ben, Jen, Ken.

Бен выигрывает раунд. Моделирование их следующей игры путем случайного добавления или вычитания хода на отверстие.

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. The axes contains 3 objects of type line. These objects represent Ben, Jen, Ken.

Входные аргументы

свернуть все

Входной сигнал, заданный как вектор.

Пример: reshape(rand(100,1)*[-1 1],1,200)

Предел управления, заданный как действительный скаляр, выраженный в стандартных отклонениях.

Минимальное среднее смещение для обнаружения, указанное как действительный скаляр, выраженный в стандартных отклонениях.

Целевое среднее, указанное как действительный скаляр. Если tmean не уточняется, то оценивается как среднее из первых 25 образцов x.

Целевое стандартное отклонение, указанное как действительный скаляр. Если tdev не уточняется, то оценивается как стандартное отклонение первых 25 выборок x.

Выходные аргументы

свернуть все

Индексы точек вне управления, возвращаемые в виде целочисленных скаляров или векторов. Если все выборки сигнала находятся в пределах заданного допуска, то cusum возврат пустой iupper и ilower аргументы.

Верхняя и нижняя кумулятивные суммы, возвращаемые в виде векторов.

Подробнее

свернуть все

Контрольная диаграмма CUSUM

Контрольная диаграмма CUSUM предназначена для обнаружения небольших инкрементных изменений среднего значения процесса.

Учитывая последовательность x1, x2, x3, ... , xn с расчетным средним значением mx и расчетным стандартным отклонением

  • Верхняя кумулятивная сумма

    Ui = {0, i = 1 max (0, Ui 1 + xi mx − 12nstartx), i > 1

  • Нижняя сумма

    Li = {0, i = 1 мин (0, Li 1 + xi mx + 12nstartx), i > 1

Переменная n, представленная в cusum по mshift аргумент - количество стандартных отклонений от целевого среднего значения, tmean, что делает сдвиг обнаруживаемым.

Процесс нарушает критерий CUSUM в образце xj, если он подчиняется Uj > c   Контрольный предел c представлен в cusum по climit аргумент.

По умолчанию функция возвращает первое обнаруженное нарушение. При указании 'all' флаг, функция возвращает каждое нарушение.

Расширенные возможности

.

См. также

|

Представлен в R2016a