Документация Engee

cusum

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

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • 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(___) — без выходных аргументов строит верхнюю и нижнюю кумулятивные суммы, нормализованные к одному стандартному отклонению выше и ниже целевого математического ожидания.

Аргументы

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

# x — входной сигнал
вектор

Details

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

# climit — контрольный предел
5 (по умолчанию) | вещественный скаляр

Details

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

# mshift — минимальное смещение математического ожидания для обнаружения
1 (по умолчанию) | вещественный скаляр

Details

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

# tmean — целевое математическое ожидание
mean(x[1:25]) (по умолчанию) | вещественный скаляр

Details

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

# tdev — целевое стандартное отклонение
std(x[1:25]) (по умолчанию) | вещественный скаляр

Details

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

Входные аргументы «имя-значение»

# out — тип выходных данных
:plot (по умолчанию) | :data

Details

Тип выходных данных:

  • :plot — функция возвращает график;

  • :data — функция возвращает данные.

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

# iupper, ilower — индексы точек, выходящих за пределы контроля
целочисленные скаляры | целочисленные векторы

Details

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

# uppersum, lowersum — верхняя и нижняя кумулятивные суммы
векторы

Details

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

Примеры

Значения по умолчанию для функции cusum

Details

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

rnds = rand(1, 100)
trnd = range(0, 1, length=100)
fnc = rnds .+ trnd'

plot(vec(fnc))

cusum 1

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

import EngeeDSP.Functions: cusum

cusum(fnc)

cusum 2

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

import EngeeDSP.Functions: mean, std

mfnc = mean(fnc[1:25])
sfnc = std(fnc[1:25]).S

cusum(fnc, 5.0, 1.0, mfnc, sfnc)

cusum 3

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

nnc = rnds .- trnd'

cusum(nnc)

cusum 4

Дополнительно

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

Details

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

Дана последовательность с оценочным средним и оценочным стандартным отклонением . Определите верхнюю и нижнюю кумулятивные суммы процесса, используя:

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

  • нижнюю сумму

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

Процесс нарушает CUSUM-тест в выборке , если он удовлетворяет условию или . Контрольный предел представлен в cusum аргументом climit.

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