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 диаграммы управления предназначен для обнаружения небольших инкрементных изменений среднего значения процесса.

Учитывая последовательность x 1, x 2, x 3, ..., xn с предполагаемыми средними mx и предполагаемыми стандартными σx отклонения, задайте верхние и более низкие совокупные суммы процесса с помощью:

  • Верхняя совокупная сумма

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

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

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

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

Процесс нарушает критерий CUSUM в выборке xj, если это повинуется Uj > <reservedrangesplaceholder6> <reservedrangesplaceholder5>   или Lj <-<reservedrangesplaceholder3> <reservedrangesplaceholder2>. Управление предела c представлено в cusum по climit аргумент.

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

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

.

См. также

|

Введенный в R2016a