Верификация данных
Реализация алгоритма верификации данных; разработка программы обнаружения аномальных данных в одномерных выборках. Характеристика методов D-статистики, Титьена-Мура, диаграммы "Ящик с усами"; обеспечение эффективности оценок статистических данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 27.05.2013 |
Размер файла | 2,5 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
Саратовский государственный технический университет им. Гагарина Ю.А.
Факультет «Электронной техники и приборостроения»
Специальность «Автоматизированные системы обработки информации и управления»
Кафедра «Системотехника»
КУРСОВАЯ РАБОТА
по дисциплине «Теория информации»
на тему
Верификация данных
Работу выполнил: Катунов С.Н.
Студент группы АСУ-31
Руководитель работы
к.т.н., доцент Васильев Д.А.
Саратов - 2012
ЗАДАНИЕ
на курсовое проектирование
по дисциплине «Вычислительная математика»
Студенту учебной группы АСУ-31 Факультета ЭТиП Катунову Сергею
Николаевичу
Тема работы: Верификация данных
Целевая установка и исходные данные
Цель
Разработка программного продукта реализующего методы верификации данных.
Исходные данные
1. Словесное описание задания
2. Краткие теоретические сведения о проблеме аномальности данных
№№ п.п. |
Перечень чертежей, подлежащих разработке |
Формат |
Количество |
|
1. |
Блок-схема алгоритма построения диаграммы «Ящик с усами» |
А1 |
1 |
|
2. |
Блок-схемы алгоритмов критерия D статистики и критерия Титьена-Мура |
А1 |
1 |
№№ п.п. |
Содержание расчетно-пояснительной записки (перечень вопросов, подлежащих разработке) |
Консультант |
|
1. |
Разработка алгоритмов верификации данных |
||
2. |
Разработка программы реализующий алгоритм верификации данных |
||
3. |
Организация входных и выходных данных программы |
Основная рекомендуемая литература
1. Каримов Р.Н., Шварц, «Статистика для врачей, биологов и не только» ч.1.
Руководитель курсовой работы, к.т.н., доц. Д.А. Васильев
Задание принял к исполнению «10» марта 2012 г.
Студент С.Н. Катунов
Формат |
Зона |
Поз. |
Обозначение |
Наименование |
Кол. |
Примечание |
|
1 |
Пояснительная записка |
Разработка алгоритмов и реализация методов верификации данных |
1 |
А4 |
|||
2 |
Графический материал |
Блок-схема алгоритма построения диаграммы «Ящик с усами» Блок-схемы алгоритмов D статистики и Титьена-Мура |
1 |
А1 |
|||
3 |
Электронная версия Диск CD-R 700 Mb |
Пояснительная записка к курсовой работе в формате pdf и doc Блок-схемы алгоритмов верификации данных |
1 |
РЕФЕРАТ
Пояснительная записка содержит 34 страниц, 13 иллюстраций, 11 листингов кода приложения.
Ключевые слова: верификация, аномальность данных, критерий Титьена-Мура, критерий Смирнова-Граббса, метод D-статистики, ящик с усами, квартиль, математическое ожидание, СКО, выборка, объем, статистика, медиана, среднее, данные.
Программа разработана для анализа одномерных данных, с целью выявления в них аномальности при помощи метода D-статистики, метода Титьена-Мура, и диаграммы «Ящик с усами»
СОДЕРЖАНИЕ
Введение
Глава 1. Теоретические сведения
1.1 Выборки с аномальными данными
1.2 Обнаружение аномальных данных в одномерных выборках
1.2.1 Метод D-статистики
1.2.2 Метод Титьена-Мура
1.2.3 Графический метод диаграмма «Ящик с усами»
Глава 2. Реализация алгоритмов верификации данных
2.1 Реализация алгоритма D-статистики
2.2 Реализация алгоритма Титьена-Мура
2.3 Реализация алгоритма построения диаграммы «Ящик с усами»
Глава 3. Описание программы
3.1 Руководство программиста
3.1.1 Входные данные
3.1.2 Основные функции программы
3.1.3 Выходные данные
3.2 Руководство пользователя
3.2.1 Входные данные
3.2.2 Выходные данные
Заключение
Размещено на http://www.allbest.ru/
Введение
Статистика -- отрасль знаний, в которой излагаются общие вопросы сбора, измерения и анализа массовых статистических (количественных или качественных) данных.
Слово «статистика» происходит от латинского status -- состояние дел. В науку термин «статистика» ввел немецкий ученый Готфрид Ахенваль в 1746 году, предложив заменить название курса «Государствоведение», преподававшегося в университетах Германии, на «Статистику», положив тем самым начало развитию статистики как науки и учебной дисциплины. Несмотря на это, статистический учет вёлся намного раньше: проводились переписи населения в Древнем Китае, осуществлялось сравнение военного потенциала государств, велся учет имущества граждан в Древнем Риме и т. п[2].
Статистика разрабатывает специальную методологию исследования и обработки материалов: массовые статистические наблюдения, метод группировок, средних величин, индексов, балансовый метод, метод графических изображений и другие методы анализа статистических данных.
Статистические методы -- методы анализа статистических данных. Выделяют методы прикладной статистики, которые могут применяться во всех областях научных исследований и любых отраслях народного хозяйства, и другие статистические методы, применимость которых ограничена той или иной сферой. Имеются в виду такие методы, как статистический приемочный контроль, статистическое регулирование технологических процессов, надежность и испытания, планирование экспериментов.
Статистические методы анализа данных применяются практически во всех областях деятельности человека. Их используют всегда, когда необходимо получить и обосновать какие-либо суждения о группе (объектов или субъектов) с некоторой внутренней неоднородностью.
Целесообразно выделить три вида научной и прикладной деятельности в области статистических методов анализа данных (по степени специфичности методов, сопряженной с погруженностью в конкретные проблемы):
а) разработка и исследование методов общего назначения, без учета специфики области применения;
б) разработка и исследование статистических моделей реальных явлений и процессов в соответствии с потребностями той или иной области деятельности;
в) применение статистических методов и моделей для статистического анализа конкретных данных.
Прикладная статистика -- это наука о том, как обрабатывать данные произвольной природы. Математической основой прикладной статистики и статистических методов анализа является теория вероятностей и математическая статистика.
Описание вида данных и механизма их порождения -- начало любого статистического исследования. Для описания данных применяют как детерминированные, так и вероятностные методы. С помощью детерминированных методов можно проанализировать только те данные, которые имеются в распоряжении исследователя. Например, с их помощью получены таблицы, рассчитанные органами официальной государственной статистики на основе представленных предприятиями и организациями статистических отчетов. Перенести полученные результаты на более широкую совокупность, использовать их для предсказания и управления можно лишь на основе вероятностно-статистического моделирования. Поэтому в математическую статистику часто включают лишь методы, опирающиеся на теорию вероятностей.
В простейшей ситуации статистические данные -- это значения некоторого признака, свойственного изучаемым объектам. Значения могут быть количественными или представлять собой указание на категорию, к которой можно отнести объект. Во втором случае говорят о качественном признаке.
При измерении по нескольким количественным или качественным признакам в качестве статистических данных об объекте получаем вектор. Его можно рассматривать как новый вид данных. В таком случае выборка состоит из набора векторов. Есть часть координат -- числа, а часть -- качественные (категоризованные) данные, то говорим о векторе разнотипных данных.
Одним элементом выборки, то есть одним измерением, может быть и функция в целом. Например, описывающая динамику показателя, то есть его изменение во времени, -- электрокардиограмма больного или амплитуда биений вала двигателя. Или временной ряд, описывающий динамику показателей определенной фирмы. Тогда выборка состоит из набора функций.
Элементами выборки могут быть и иные математические объекты. Например, бинарные отношения. Так, при опросах экспертов часто используют упорядочения (ранжировки) объектов экспертизы -- образцов продукции, инвестиционных проектов, вариантов управленческих решений. В зависимости от регламента экспертного исследования элементами выборки могут быть различные виды бинарных отношений (упорядочения, разбиения, толерантности), множества, нечёткие множества и т. д.
Итак, математическая природа элементов выборки в различных задачах прикладной статистики может быть самой разной. Однако можно выделить два класса статистических данных -- числовые и нечисловые. Соответственно прикладная статистика разбивается на две части -- числовую статистику и нечисловую статистику.
Числовые статистические данные -- это числа, вектора, функции. Их можно складывать, умножать на коэффициенты. Поэтому в числовой статистике большое значение имеют разнообразные суммы. Математический аппарат анализа сумм случайных элементов выборки -- это (классические) законы больших чисел и центральные предельные теоремы.
Нечисловые статистические данные -- это категоризованные данные, вектора разнотипных признаков, бинарные отношения, множества, нечеткие множества и др. Их нельзя складывать и умножать на коэффициенты. Поэтому не имеет смысла говорить о суммах нечисловых статистических данных. Они являются элементами нечисловых математических пространств (множеств). Математический аппарат анализа нечисловых статистических данных основан на использовании расстояний между элементами (а также мер близости, показателей различия) в таких пространствах. С помощью расстояний определяются эмпирические и теоретические средние, доказываются законы больших чисел, строятся непараметрические оценки плотности распределения вероятностей, решаются задачи диагностики и кластерного анализа, и т. д.
В прикладных исследованиях используют статистические данные различных видов. Это связано, в частности, со способами их получения. Например, если испытания некоторых технических устройств продолжаются до определенного момента времени, то получаем т.н. цензурированные данные, состоящие из набора чисел -- продолжительности работы ряда устройств до отказа, и информации о том, что остальные устройства продолжали работать в момент окончания испытания. Цензурированные данные часто используются при оценке и контроле надежности технических устройств.
Применение статистических методов и моделей для статистического анализа конкретных данных тесно привязано к проблемам соответствующей области. Результаты третьего из выделенных видов научной и прикладной деятельности находятся на стыке дисциплин. Их можно рассматривать как примеры практического применения статистических методов. Но не меньше оснований относить их к соответствующей области деятельности человека.
Теория статистических методов нацелена на решение реальных задач. Поэтому в ней постоянно возникают новые постановки математических задач анализа статистических данных, развиваются и обосновываются новые методы. Обоснование часто проводится математическими средствами, то есть путем доказательства теорем. Большую роль играет методологическая составляющая -- как именно ставить задачи, какие предположения принять с целью дальнейшего математического изучения. Велика роль современных информационных технологий, в частности, компьютерного эксперимента.
Развитие вычислительной техники во второй половине XX века оказало значительное влияние на статистику. Ранее статистические модели были представлены преимущественно линейными моделями. Увеличение быстродействия ЭВМ и разработка соответствующих численных алгоритмов послужило причиной повышенного интереса к нелинейным моделям таким, как искусственные нейронные сети, и привело к разработке сложных статистических моделей, например обобщённая линейная модель и иерархическая модель.
Получили широкое распространение вычислительные методы, основанные на повторной выборке как критерий перестановок и бутстреппинг, наряду методы как семплирование по Гиббсу позволили более доступно использовать байесовские алгоритмы. В настоящее время существует разнообразное статистическое программное обеспечение общего и специализированного назначения.
Глава 1. Теоретические сведения
1.1 Выборки с аномальными данными
Аномальными называются нетипичные, резко выделяющиеся наблюдения (выбросы, дикие данные), которые появляются из-за грубых ошибок при регистрации измерений, случайных импульсных помех не всегда известной природы, сбоев оборудования, измерения в ошибочных единицах и т.д. Весьма частой причиной появления диких данных является ошибка при вводе данных в компьютер, при записи в лабораторный журнал [2].
Крайне важно выделить именно дикие наблюдения, отличая их от результатов вариаций измеряемых показателей, после чего эти аномальные данные удалить.
Большинство процедур обработки данных построено в предположении однородности наблюдений. Если, например, при построении одномерной линейной регрессии используется сумма квадратов расстояний наблюдаемых точек до прямой, то выбросы могут существенно исказить оценку прямой (рис. 1).
Рис. 1 Оценка линии регрессии: 1 - без аномальной точки, 2 - с аномальной точкой
Поэтому единичный выброс, значение которого возводится в квадрат, может существенно изменить наклон прямой и, следовательно, значение коэффициента корреляции. Именно поэтому необходима очистка и редактирование данных.
Однако общепринятого метода автоматического удаления выбросов не существует. Иногда удаляют значения, выходящие за границы ±2 стандартных отклонений вокруг выборочного среднего. В ряде случаев такая чистка абсолютно необходима. Однако в общем случае определение выбросов субъективно, и решение принимается индивидуально в каждом эксперименте.
Если данные резко выделяются на фоне обычных наблюдений, они могут быть исключены из выборки на предварительном этапе анализы измерений с учетом физической сущности измеряемой величины. Менее же грубые данные, находящиеся в зоне сомнений (рис. 2) распознаются сложнее и требуют применения специальных статистических процедур по обнаружению аномальных наблюдений. Но и после обнаружения аномальности данных, нельзя считать анализ завершенным и правдивым, если не дано объяснения полученным результатам [2].
Автоматическое удаление аномальных наблюдений оправдано, лишь когда исследуемая модель хорошо обкатана и доказала право на существование долгим применением в целевых исследованиях.
Удаление резко выделяющихся наблюдений обеспечивает безопасность оценки, однако эффективно только в случае четкой границы между удаленными и не удаленными данными. Данные в зоне сомнительных значений, не всегда можно распознать. Здесь легко допустить неправильные удаления, и необоснованные сохранения, полной эффективности не следует ожидать даже при индивидуальном подходе к каждому эксперименту.
Рис. 2 Разбиение данных на три группы
Многие трудности можно преодолеть, используя робастные методы оценивания (нечувствительность к малым отклонениям от предположений). Эти методы обеспечивают безопасность и эффективность оценивания при наличии резко выделяющихся данных. Нередко от аномальности трудно избавиться, следовательно, это наилучший выход из ситуации.
1.2 Обнаружение аномальных данных в одномерных выборках
Обнаружение аномальных данных в одномерных выборках является актуальной задачей при вычислении параметров сдвига, масштаба и при выявлении по остаткам плохо влияющих данных в задаче регрессионного анализа.
Пусть наблюдения х1,...хn являются реализациями независимых случайных величин, подчиняющихся одинаковому нормальному N(µ,у2) распределению. Нуль-гипотеза Н0 заключается в том, что M[xi] = µ, D[xi]=у2, i=1,…,n. Альтернативная гипотеза Н1 заключается в том, что одна или несколько величин имеют среднее µ+d. Это означает, что часть наблюдений описывается тем же нормальным распределением, но со сдвинутым на d средним значением, возможно, сопровождаемым изменением дисперсии. Если величина сдвига положительна, то говорят о максимальном аномальном наблюдении, иначе о минимальном [2].
1.2.1 Метод D статистики
Пусть не известен ни факт наличия аномальных наблюдений ни место их нахождения. В этом случае для их обнаружения удобно использовать методы порядковых статистик. Одним из таких методов является метод D статистики.
Построим по выборке размерностью n вариационный ряд (т.е. отсортируем по возрастанию данные выборки). Проверим гипотезу о максимальном аномальном наблюдении, xn=max xi.
Предположим, что исследователь не имеет никакой дополнительной информации о математическом ожидании и о дисперсии значений в выборке, тогда:
Dn=(xn-xaverage)/S, где хaverage=1/n*?i=1nxi, S=v(1/n**?i=1n(xi-xaverage)2).
Распределение и процентные точки величины Dn получены К. Пирсоном и Н.В. Смирновым. Критические значения рассчитаны Н.В. Смирновым и Ф. Граббсом.
Вычисленная величина проверяется с критическим значением критерия при заданном уровне значимости (в данной курсовой работе уровень значимости равен 0,05) для данного объема выборки n. Если значение больше критического, нуль-гипотеза отвергается, значит значение существенно отклоняется от среднего и оно признается аномальным, затем исключается из выборки.
Критерий проверки минимального аномального значения реализуется по формуле
D1 = (xaverage-x1)/S для х1 = min xi
Данная величина имеет тоже распределение, то и максимальное аномальное значение. Если нуль-гипотеза отвергается, то значение исключается из выборки.
Проверка продолжается до тех пор, пока нуль-гипотеза не будет принята в обоих случаях, с последовательным исключением аномальных значений из выборки.
При применении такой процедуры может быть возможен случай, когда аномальные значения группируются близко друг к другу, образуя скопления в отдалении от основной массы наблюдений. К таким данным последовательная процедура не чувствительна [2].
1.2.2 Метод Титьена-Мура
Предложенный американскими статистиками метод позволяет решить проблему маскирующего эффекта, но метод слишком чувствителен к выбору количества аномальных значений снизу и сверху ранжированного ряда[1].
E-критерий используется, когда в выборке имеются предположительно грубые ошибки с наибольшими и наименьшими значениями, т.е. расположенные в верхней и в нижней части ранжированного ряда данных:
,
где - средняя, рассчитанная по «истинным» данным после отбрасывания из выборки наименьших (к) и наибольших - значений засоряющих совокупность данных:
.
1.2.3 Графический метод диаграмма «Ящик с усами»
Диаграмма «Ящик с усами» позволяет наглядно установить аномальные данные в выборке.
Строится вариационный ряд, определяется медиана, нижняя и верхняя квартили (Q1 и Q2) и межквартильный рамах. Находятся особые точки для определения диких данных: межквартильный размах
IQR=Q2-Q1;
Шаг
IQ*R=1,5*IQR;
внутренние барьеры
д1=Q1-I*QR и д2=Q2+I*QR;
наружные барьеры
Б1= Q1-2I*QR и Б2= Q2+2I*QR.
Если значения выходят за границы наружных барьеров, то они называются отскакивающими (выбросы). Наблюдения между внутренними и внешними барьерами (первыми и вторыми соответственно), называются внешними. Значения находящиеся внутри внутренних барьеров и лежащих к ним ближе всего называют примыкающими, эти значения являются «усами ящика».
При построении левый торец ящика это нижняя квартиль, правый - верхняя; минимальное значение лежащие в пределах внутренних барьеров - левый ус, максимальное - правый (примыкающие значения к левому внутреннему барьеру и к правому); медиана показывается линией внутри ящика, а отскакивающие и внешние наблюдения изображаются отдельными точками [2].
Глава 2. Описание алгоритмов верификации данных
2.1. Реализация алгоритма D-статистики
На основе теоретических сведений [2] приведенных в главе 1, руководствуясь формулами:
Dn=(xn-xaverage)/S, где хaverage=1/n*?i=1nxi, S=v(1/n**?i=1n(xi-xaverage)2),
и критическими значениями критерия Смирнова-Граббса был реализован алгоритм D-статистики для исключения аномальных данных итеративным способом.
Ниже представлена программная реализация данного алгоритма.
Листинг 1 программная реализация алгоритма D-статистики:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
//сортировка шелла
step=Convert::ToInt32(floor(nd/2.0))+1;
while (step>0)
{
i=1;
while (i<=nd-step)
{
if (mas[i]>mas[i+step])
{
temp=mas[i];
mas[i]=mas[i+step];
mas[i+step]=temp;
i=1;
}
else
i=i+1;
};
step=Convert::ToInt32(floor(Convert::ToDouble(step)/2.0));
};
//завершение сортировки шелла
i=step=0; temp=0.0;
upi=nd; dwi=1;
dmin=dmax=0.0;
flmin=flmax=true;
//+++++++++++++++++++++++++++++++++++
//цикл работы алгоритма де статистики
while (flmin||flmax)
{
if (flmax)
{
dmax=(mas[upi]-
func_mo(dwi,upi,mas))/func_s(dwi,upi,mas,func_mo(dwi,upi,mas));
if (dmax<dtbl[upi-dwi+1])
flmax=false;
};
if (flmin)
{
dmin=(func_mo(dwi,upi,mas)-
mas[dwi])/func_s(dwi,upi,mas,func_mo(dwi,upi,mas));
if (dmin<dtbl[upi-dwi+1])
flmin=false;
};
if (flmax)
upi--;
if (flmin)
dwi++;
if (upi-dwi+1<3)
break;
};
//цикл работы алгоритма де статистики
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
Блок-схема алгоритма D-статистики представлена на рисунке 3
Рис. 3 алгоритм D статистики
2.2 Реализация алгоритма Титьена-Мура
На основе теоретических сведений [1] изложенных в главе 1, руководствуясь формулами расчета E-критерия, который используется, когда в выборке имеются предположительно грубые ошибки с наибольшими и наименьшими значениями, т.е. расположенные в верхней и в нижней части ранжированного ряда данных:
,
где - средняя, рассчитанная по «истинным» данным после отбрасывания из выборки наименьших (к) и наибольших - значений засоряющих совокупность данных:
.
Был реализован алгоритм Титьена-Мура для исключения выбранных пользователем аномальных данных из выборки.
Ниже представлена программная реализация данного алгоритма.
Листинг 2 программная реализация алгоритма Титьена-Мура:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
//сортировка шелла
step=Convert::ToInt32(floor(nk/2.0))+1;
while (step>0)
{
i=1;
while (i<=nk-step)
{
if (mas[i]>mas[i+step])
{
temp=mas[i];
mas[i]=mas[i+step];
mas[i+step]=temp;
i=1;
}
else
i=i+1;
};
step=Convert::ToInt32(floor(Convert::ToDouble(step)/2.0));
};
//завершение сортировки шелла
//++++++вычисление критерия титьена-мура+++++++++++++
i=step=1;
movct=moint=smm1=smm2=0.0;
while (i<=nk)
{
movct=movct+mas[i];
i++;
};
i=1;
movct=movct/Convert::ToDouble(nk);//среднее ряда
i=dwi+1;
while(i<=(nk-upi))//среднее ряда без аномальных значений(аномальных
по предположению)
{
moint=moint+mas[i];
i++;
};
i=1;
moint=moint/Convert::ToDouble(nk-(dwi+upi));
i=dwi+1;
while(i<=(nk-upi))//числитель для критерия
{
smm1=smm1+(mas[i]-moint)*(mas[i]-moint);
i++;
};
i=1;
while (i<=nk)//знаменатель
{
smm2=smm2+(mas[i]-movct)*(mas[i]-movct);
i++;
};
k_e=smm1/smm2;
//+++++++конец вычисления критерия титьена-мура++++++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
Блок-схема алгоритма Титьена-Мура представлена на рисунке 4.
Рис. 4. Алгоритм Титьена-Мура
2.3 Реализация алгоритма построения диаграммы «Ящик с усами»
На основе теоретических сведений [2] изложенных в главе 1, руководствуясь формулами расчета
Был реализован алгоритм построения диаграммы «Ящик с усами» для обнаружения и исключения аномальных данных из выборки.
Ниже представлена программная реализация данного алгоритма.
Листинг 3 программная реализация алгоритма построения диаграммы «Ящик с усами»
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
//сортировка шелла
step=Convert::ToInt32(floor(nb/2.0))+1;
while (step>0)
{
i=1;
while (i<=nb-step)
{
if (mas[i]>mas[i+step])
{
temp=mas[i];
mas[i]=mas[i+step];
mas[i+step]=temp;
i=1;
}
else
i=i+1;
};
step=Convert::ToInt32(floor(Convert::ToDouble(step)/2.0));
};
//завершение сортировки шелла
i=j=step=0; temp=0.0;
//вычисление значений для построения диаграммы
if (fmod(Convert::ToDouble(nb),2.0)<0.000000000001)//если размер
выборки четное число
{ верификация аномальный одномерный статистический
i=nb/2;
mdn=(mas[i]+mas[i+1])/2.0;
}
else
{
i=(nb+1)/2;
mdn=mas[i];
};
i=Convert::ToInt32((Convert::ToDouble(nb)*25.0)/100.0);
q1=mas[i]; q2=mas[nb-i+1];
iqr=q2-q1;
siqr=1.5*iqr;
bi1=q1-siqr; bi2=q2+siqr;
be1=q1-2*siqr; be2=q2+2*siqr;
//завершение вычислений значений для построения диаграммы
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++
//++++++++++вычисление различных не стандартных значений++++++
i=j=step=1;
while (i<=nb)//примыкающие данные (усы)
{
if (mas[i]>bi1)
{
us1=mas[i];
break;
};
i++;
};
i=nb;
while (i>0)//примыкающие (усы)
{
if (mas[i]<bi2)
{
us2=mas[i];
break;
};
i--;
};
i=step=j=1;
v1=v2=sc1=sc2=0;
while (i<=nb)//внешние данные
{
if ((mas[i]<bi1)&&(mas[i]>be1))
{
this->axvsFlexArray2->set_TextMatrix(1,j,Convert::ToString(mas[i]));
v1=i;
sc1++;
j++;
};
i++;
};
i=nb;
while (i>0)//внешние данные
{
if ((mas[i]>bi2)&&(mas[i]<be2))
{
this->axvsFlexArray2->set_TextMatrix(1,j,Convert::ToString(mas[i]));
v2=i;
sc2++;
j++;
};
i--;
};
i=j=step=1;
step=0;
while (i<=nb)//anomal data
{
if (mas[i]<be1)
{
this->axvsFlexArray3->set_TextMatrix(1,j,Convert::ToString(mas[i]));
step=i;
j++;
};
i++;
};
i=nb;k=0;
while (i>0)//anomal data
{
if (mas[i]>be2)
{
this->axvsFlexArray3->set_TextMatrix(1,j,Convert::ToString(mas[i]));
k=i;
j++;
};
i--;
};
//+++завершение вычисления различных не стандартных значений++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
Блок-схема алгоритма построения диаграммы «Ящик с усами» представлена на рисунке 5
Рис. 5. диаграмма «Ящик с усами»
Глава 3. Описание программы
3.1 Руководство программиста
3.1.1 Входные данные
Входными данными программы является ряд значений вещественного типа. Метод D статистика и метод Титьена-Мура работает только с вектором данных размерностью не более 50 элементов (обусловлено отсутствием таблиц критических значений критериев для больших размерностей). Графический метод - диаграмма «Ящик с усами» работает с количеством наблюдений не более 1000.
Для метода Титьена-Мура имеется еще два входных значения, k и k' - количество аномальных данных снизу и сверху ранжированного ряда.
Для каждого из методов имеется входной текстовый файл - «input_box.txt», «input_dstat.txt», «input_ktm.txt».
Данные можно считать из файла, либо ввести вручную в таблицу. В листинге 4 приведен код функции считывания данных из файла для метода Титьена-Мура.
Листинг 4 функция func_input():
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
FILE * find;
String ^str1;
wchar_t ch;
int sc1;
sc1=0;
str1="";
ch='0';
sc1=1;
func_refresh();
find=fopen("input_ktm.txt", "rt");
if (find!=0)
{
while ((!feof(find))&&(ch!=65535)&&(sc1<51))
{
ch=fgetc(find);
if ((ch!=' ')&&(ch!=65535)&&(ch!=10))
str1=str1+wchar_t(ch);
if ((ch==' ')||(ch==10)||(ch==65535))
{
this->axfa1->set_TextMatrix(1,sc1,str1);
sc1++;
str1="";
};
};
fclose(find);
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
Все функции ввода данных из файлов реализованы в заголовочном файле «Form1.h», это файл главной формы.
После чтения данных из файла, значения записываются в таблицу.
При выборе пункта меню любого из методов, данные из таблицы проверяются на корректность ввода с помощью функции «Func_strtofloat» входным параметром которой является строковое представление числа, а выходным значение типа «bool» true, если значение не корректно, или false, если строку можно преобразовать в число.
В листинге 5 приведен код являющийся обработчиком события выбора пункта меню «Анализ данных на основе критерия D статистики».
Листинг 5 пункт меню «Анализ данных на основе критерия D статистики»:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
//init value
bool errin;
int sci;
double prchislo;
prchislo=0.0;
sci=1;
errin=false;
//end init value
while ((this->axfa1->get_TextMatrix(1,sci)!="")&&(sci<51))//размерность
по кол-ву не пустых столбцов первой строки
sci++;
sci=sci-1;
if (sci<3)
errin=true;//ошибка если элементов меньше трех
nd=sci;//размерность вектора для алгоритма де статистики
sci=1;
while (sci<=nd)//проверка элементов таблицы и столбца на
корректность ввода
{
if (fun_korrect_strfloat(this->axfa1->get_TextMatrix(1,sci))) errin=true;
if (!errin)
{
prchislo=Convert::ToDouble(this->axfa1->get_TextMatrix(1,sci));
if ((prchislo<-999999)||(prchislo>999999)) errin=true;
};
sci++;
};
//фан_коррект_стрфлоат это функция проверки корректности ввода
строки для преобразования
//в вещественное число, возвращает ИСТИНА если ошибка ввода; если
есть хотя бы одна
//ошибка, она будет зафиксирована в переменной errin
if (!errin)
{
sci=1;
while (sci<=nd)
{
vctdstat[sci]=Convert::ToDouble(this->axfa1-
>get_TextMatrix(1,sci));//передача данных в модуль де статистики
sci++;
};
ref class AnomalStat::Fdstat ^fdst = gcnew(ref class AnomalStat::Fdstat);
fdst->ShowDialog();
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
Если все данные из таблицы прошли проверку на корректность ввода, они записываются в область глобальных переменных того заголовочного файла, метод реализованный в котором был выбран пользователем. После чего показывается окно того метода, который был выбран для анализа пользователем.
3.1.2 Основные функции программы
В заголовочном файле «Fdstat.h» реализовано несколько функций для обработки и визуализации данных, а также объявлено три переменных в области глобальной видимости.
Переменные вещественного типа с двойной точностью «double» «vctdstat» и «vctads» размерностью 51 элемент для хранения выборки, и аномальных значений соответственно. Переменная типа «int» «nd» хранящая размерность выборки.
Функция «func_mo» реализует расчет математического ожидания выборки, в качестве параметров принимает вектор вещественного типа длиной 51 элемент, нижнюю и верхнюю границу подсчета (целочисленного типа).
Данные с нижней границы по верхнюю границу суммируются и делятся на число наблюдений.
Функция «func_s» реализует расчет СКО выборки, в качестве параметров принимает вектор вещественного типа длиной 51 элемент, нижнюю и верхнюю границу подсчета (целочисленного типа), математическое ожидание выборки (вещественного типа).
С нижней по верхнюю границу данных, находится разность между значениями ряда и математическим ожиданием, квадраты этих разностей суммируются. После чего, полученная сумма делится на число элементов выборки.
Функция обработчик события «Load_Form» реализует основную работу метода D статистики. В таблицу заносятся критические значения критерия Смирнова-Граббса для уровня значимости 0,05. Затем ряд ранжируется по возрастанию с помощью сортировки Шелла (листинг 6). После ранжирования данных по возрастанию, в цикле с предусловием, рассчитывается критерий Смирнова-Граббса, и сравнивается с табличным для текущего размера выборки. Если расчетное значение превышает табличное, данное признается аномальным и исключается из выборки (цикл и его тело приведено в листинге 7).
Листинг 6 сортировка Шелла
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
step=Convert::ToInt32(floor(nd/2.0))+1;
while (step>0)
{
i=1;
while (i<=nd-step)
{
if (mas[i]>mas[i+step])
{
temp=mas[i];
mas[i]=mas[i+step];
mas[i+step]=temp;
i=1;
}
else
i=i+1;
};
step=Convert::ToInt32(floor(Convert::ToDouble(step)/2.0));
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
Листинг 7 цикл исключения аномальных данных
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
while (flmin||flmax)
{
if (flmax)
{
dmax=(mas[upi]-
func_mo(dwi,upi,mas))/func_s(dwi,upi,mas,func_mo(dwi,upi,mas));
if (dmax<dtbl[upi-dwi+1])
flmax=false;
};
if (flmin)
{
dmin=(func_mo(dwi,upi,mas)-
mas[dwi])/func_s(dwi,upi,mas,func_mo(dwi,upi,mas));
if (dmin<dtbl[upi-dwi+1])
flmin=false;
};
if (flmax)
upi--;
if (flmin)
dwi++;
if (upi-dwi+1<3)
break;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
В заголовочном файле «Fktm.h» реализовано несколько функций для обработки и визуализации данных, а также объявлено три переменных в области глобальной видимости.
Переменные вещественного типа с двойной точностью «double» «vctktm» и «vctakt» размерностью 51 элемент для хранения выборки, и аномальных значений соответственно. Переменная типа «int» «nk» хранящая размерность выборки.
При загрузке формы, данные ранжируются по возрастанию и выводятся в таблицу, пользователь должен оценить их и ввести количество аномальных данных сверху и снизу ряда. Общее число аномальных данных не более 10. Проверка на корректность ввода реализуется с помощью функции «func_strtoint», которая возвращает значение истина, если число не корректно введено пользователем.
Сортировка реализована аналогично сортировке в заголовочном файле «Fdstat.h».
Критические значения критерия Титьена-Мура заносятся в матрицу для уровня значимости 0,05.
Работа метода реализована в обработчике события нажатия кнопки «Анализ данных».
Вычисляются среднее по всей выборке, среднее по выборке без аномальных данных, сумма квадратов разностей значений ряда и среднего с аномальными данными, сумма квадратов разностей значений ряда и среднего без аномальных данных. Затем первая сумма делится на вторую, частное от деления и есть критерий Титьена-Мура.
Если вычисленное значение меньше табличного для данного размера выборки и количества аномальных данных, то в выборке имеются аномальные значения, и те значения, которые выбрал пользователь, исключаются из выборки.
В листинге 8 приведен код расчета критерия Титьена-Мура.
Листинг 8 критерий Титьена-Мура:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
i=step=1;
movct=moint=smm1=smm2=0.0;
while (i<=nk)
{
movct=movct+mas[i];
i++;
};
i=1;
movct=movct/Convert::ToDouble(nk);//среднее ряда
i=dwi+1;
while(i<=(nk-upi))//среднее ряда без аномальных значений (аномальных
по предположению)
{
moint=moint+mas[i];
i++;
};
i=1;
moint=moint/Convert::ToDouble(nk-(dwi+upi));
i=dwi+1;
while(i<=(nk-upi))//числитель для критерия
{
smm1=smm1+(mas[i]-moint)*(mas[i]-moint);
i++;
};
i=1;
while (i<=nk)//знаменатель
{
smm2=smm2+(mas[i]-movct)*(mas[i]-movct);
i++;
};
k_e=smm1/smm2;
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
В заголовочном файле «Fbox.h» реализовано несколько функций для обработки и визуализации данных, а также объявлено две переменных в области глобальной видимости.
Переменная вещественного типа с двойной точностью «double» «vctbox» размерностью 51 элемент для хранения выборки и переменная типа «int» «nb» хранящая размерность выборки.
Данные ранжируются по возрастанию. Находится медиана (если объем выборки нечетное число, то это середина ряда данных, иначе это среднее арифметическое между двумя серединными значениями). Вычисляются квартили, межквартильный размах, шаг межквартильного размаха, внутренние и внешние барьеры.
В циклах, с помощью прохода по вектору ранжированных данных и сравнению с рассчитанными величинами определяются внешние и отскакивающие данные, вычисляются «усы ящика», подсчитывается количество дополнительных точек лдя построения диаграммы (листинг 9).
Листинг 9 диаграмма «Ящик с усами»:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
i=j=step=0; temp=0.0;
//вычисление значений для построения диаграммы
if (fmod(Convert::ToDouble(nb),2.0)<0.000000000001)//если размер
выборки четное число
{
i=nb/2;
mdn=(mas[i]+mas[i+1])/2.0;
}
else
{
i=(nb+1)/2;
mdn=mas[i];
};
i=Convert::ToInt32((Convert::ToDouble(nb)*25.0)/100.0);
q1=mas[i]; q2=mas[nb-i+1];
iqr=q2-q1;
siqr=1.5*iqr;
bi1=q1-siqr; bi2=q2+siqr;
be1=q1-2*siqr; be2=q2+2*siqr;
//завершение вычислений значений для построения диаграммы
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++
//++++++++++вычисление различных не стандартных значений++++++
i=j=step=1;
while (i<=nb)//примыкающие данные (усы)
{
if (mas[i]>bi1)
{
us1=mas[i];
break;
};
i++;
};
i=nb;
while (i>0)//примыкающие (усы)
{
if (mas[i]<bi2)
{
us2=mas[i];
break;
};
i--;
};
i=step=j=1;
v1=v2=sc1=sc2=0;
while (i<=nb)//внешние данные
{
if ((mas[i]<bi1)&&(mas[i]>be1))
{
this->axvsFlexArray2->set_TextMatrix(1,j,Convert::ToString(mas[i]));
v1=i;
sc1++;
j++;
};
i++;
};
i=nb;
while (i>0)//внешние данные
{
if ((mas[i]>bi2)&&(mas[i]<be2))
{
this->axvsFlexArray2->set_TextMatrix(1,j,Convert::ToString(mas[i]));
v2=i;
sc2++;
j++;
};
i--;
};
i=j=step=1;
step=0;
while (i<=nb)//anomal data
{
if (mas[i]<be1)
{
this->axvsFlexArray3->set_TextMatrix(1,j,Convert::ToString(mas[i]));
step=i;
j++;
};
i++;
};
i=nb;k=0;
while (i>0)//anomal data
{
if (mas[i]>be2)
{
this->axvsFlexArray3->set_TextMatrix(1,j,Convert::ToString(mas[i]));
k=i;
j++;
};
i--;
};
//+++завершение вычисления различных не стандартных значений++
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++
3.1.3 Выходные данные
Выходными данными программы являются: аномальные значения ряда выведенные в таблицу, ряд данных в выходном файле без аномальных значений, график зависимости данных от их количества, с выделением аномальных значений.
Функция «func_graph» реализует рисование графика значений, и отмечает на нем аномальные данные, в качестве входных параметров принимает 4 аргумента: массив вещественного типа размером 51, и три целочисленных переменных - нижняя граница вывода, верхняя, и размер выборки.
Функция записывает в массив аномальные данные, за пределами границ вывода, затем при выводе, в массиве аномальных данных ищутся эти значения, и если они находятся, то на графике аномальные данные отмечаются другим цветом.
В листинге 10 приведен код данной функции.
Листинг11 функция рисования графика:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
int sci,scj;
int numb;
sci=scj=numb=1;
while (scj<51)
{
vctads[scj]=0.0;
scj++;
};
scj=1;
this->chart1->Series[0]->Points->Clear();
this->chart1->Series[1]->Points->Clear();
this->chart1->Series[2]->Points->Clear();
while (sci<=nn)
{
if ((sci<nint)||(sci>uint))
{
vctads[scj]=mass[sci];
scj++;
};
sci++;
};
numb=0;
numb=nint-1+nn-uint;
scj=sci=1;
while (sci<=nn)
{
this->chart1->Series[0]->Points->AddXY(sci,vctdstat[sci]);
this->chart1->Series[1]->Points->AddXY(sci,vctdstat[sci]);
scj=1;
while (scj<=numb)
{
if (vctdstat[sci]==vctads[scj])
this->chart1->Series[2]->Points->AddXY(sci,vctdstat[sci]);
scj++;
};
sci++;
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++
Для каждого из методов имеется входной текстовый файл - «output_box.txt», «output_dstat.txt», «output_ktm.txt».
В листинге 8 приведено тело функции вывода в файл ряда без аномальных значений в методе Титьена-Мура.
В качестве входных параметров функции передается 3 аргумента: вектор значений вещественного типа, верхняя и нижняя граница вывода.
Листинг 11 вывод данных в файл:
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++
FILE * fout;
String ^str1;
wchar_t ch;
int lens;
int sc1,sc2;
char c;
str1="";
ch='0';
c='0';
sc1=sc2=0;
sc1=nint;
fout=fopen("output_ktm.txt", "wt");
if (fout!=0)
{
while (sc1<=nkm)
{
str1=Convert::ToString(vctx[sc1]);
sc2=0;
lens=str1->Length;
while (sc2<lens)
{
ch=Convert::ToChar(str1->Substring(sc2,1));
c=Convert::ToInt32(ch);
fputc(c,fout);
sc2++;
};
c=' ';
fputc(c,fout);
sc1++;
};
fclose(fout);
};
//+++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++
3.2 Руководство пользователя
Для запуска программы войдите в папку с установленной программой, либо запустите ярлык в меню «Мои программы», либо воспользуйтесь ярлыком на рабочем столе.
На рисунке 6 показаны фалы в папке программы. Текстовые файлы это три входных и три выходных файла для каждого из методов программы.
Рис. 6 файлы в папке с установленным приложением
Запустите приложение двойным кликом на файле AnomalStat.exe. Затем закройте всплывающее окно (рис. 7).
Рис. 7 всплывающее окно
3.2.1. Входные данные
Входными данными программы является вектор значений вещественного типа. Данные значения можно ввести непосредственно в таблицу, ручным вводом (рис.8) или считать (рис.9) из одного из файлов входных данных.
Рис. 8. ручной ввод
Рис. 9. считывание данных из файла
Для редактирования текстового файла воспользуйтесь любым текстовым редактором. Количество чисел для метода D статистики и метода Титьена-Мура не должно превышать 50.
Внимание!!! Все данные вводятся последовательно через пробел, дробная часть отделяется от целой запятой.
Все значения должны находится в диапазоне от -1000000 до +1000000.
Число данных для диаграммы «Ящик с усами» не должно превышать 1000 элементов.
После ввода выберите один из пунктов меню и нажмите вкладку «Анализ данных».
Для метода Титьена-Мура требуется ввести количество аномальных данных в два поля, сверху и снизу ряда (рис.10). Сумма этих числе не должна превышать 10. Значения принимают величину от 0 до 10. Числа являются целыми.
Рис. 10. количество аномальных данных
3.2.2 Выходные данные
Выходными данными являются значения ряда данных без выбросов, в зависимости от того какой метод использовался, в тот файл и будет осуществлен вывод (рис. 11).
Рис. 11. выходной фал метода Титьена-Мура
Аномальные данные выводятся в таблицу, и отмечаются на графике (рис. 12).
Рис. 12. Анализ данных с помощью метода D статистики
Диаграмма «Ящик с усами» позволяет более наглядно оценить значения выборки (рис. 13).
Рис. 13. диаграмма «Ящик с усами»
Заключение
В ходе проделанной работы были реализованы алгоритмы верификации данных и разработана программа, включающая в себя:
1) Метод D-статистики
2) Метод Титьена-Мура
3) Графический метод - диаграмма «Ящик с усами»
Первый метод позволяет удалять аномальные значения на основе критерия Смирнова-Граббса, однако при группировке аномальных значений, возникает маскирующий эффект, который данный метод преодолеть не в силах.
Второй метод позволяет преодолеть маскирующий эффект, однако он слишком чувствителен к выбору количества аномальных данных.
Третий метод дает наглядное представление о данных в выборке, позволяет не только выявить аномальные значения, но и дает картину подозрительных значений.
Каждый из методов разработан в целях обеспечения эффективности оценок статистических данных, а именно для исключения или выделения в выборке аномальных данных. Об исключении выбросов и эффективности таких процедур следует говорить только при объяснении удаления одних и сохранения других данных.
При невозможности удаления аномальности следует использовать робастные оценки и процедуры, не чувствительные к выбросам, однако к каждому исследованию, в вопросе очистки выборки от диких значений, требуется индивидуальный подход.
Список литературы
1. Российский журнал «Вопросы оценки» под редакцией М.Ю. Колотова, номер «О повышении достоверности оценки рыночной стоимости методом сравнительного анализа» - С.В. Грибовский, Н.П. Баринов
2. Каримов, Шварц, «Статистика для врачей, биологов и не только» ч.1.
Размещено на Allbest.ru
Подобные документы
Обнаружение аномальных данных в одномерных выборках. Метод D-статистики и Титьена-Мура, графический метод диаграмма "ящик с усами". Описание алгоритмов верификации данных. Руководство для программиста. Анализ данных на основе критерия D-статистики.
курсовая работа [938,4 K], добавлен 24.06.2013Особенности проектирования программы на языке С++ для обработки данных из таблиц базы данных. Основные функции программы, создание концептуальной модели базы данных и диаграммы классов, разработка интерфейса пользователя и запросов к базе данных.
курсовая работа [2,1 M], добавлен 08.06.2012Разработка программы, создающей и управляющей базой данных, ее реализация на языке Turbo Pascal. Организация алгоритма программы. Вывод информации и возможность добавления информации в базу данных. Поиск информации в базе данных по заданному значению.
курсовая работа [26,7 K], добавлен 19.06.2010Сущности и функциональные зависимости базы данных. Атрибуты и связи. Таблицы базы данных. Построение ER-диаграммы. Организация ввода и корректировки данных. Реляционная схема базы данных. Реализация запросов, получение отчетов. Защита базы данных.
курсовая работа [2,4 M], добавлен 06.02.2016Структура, классификация и этапы проектирования баз данных. Системы управления базами данных, их жизненный цикл. Разработка и реализация базы данных в MS Access. Организация входных и выходных данных. Защита данных от внешних угроз. Сведение о программе.
курсовая работа [558,6 K], добавлен 21.06.2012Создание базы данных предоставляемых услуг и персонала агентств по организации концертов и праздников, отбор и вывод данных, связанных с культурно-досуговыми мероприятиями. Разработка алгоритма и реализация программы на языке программирования С++.
курсовая работа [262,5 K], добавлен 16.01.2014База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.
дипломная работа [1,0 M], добавлен 23.06.2012Разработка программы в Turbo C++ Explorer для вычислений геометрических данных фигуры. Атрибуты объекта и представление данных в программе. Подпрограмма создания набора данных. Реализация защиты и правильности ввода данных и дополнительных функции.
курсовая работа [5,9 M], добавлен 22.02.2014Решение задачи средствами прикладных программ. Разработка алгоритмов и структур данных. Реализация задачи определения статистических данных по успеваемости на факультете на языке программирования C#. Программа перевода чисел в различные системы счисления.
курсовая работа [519,9 K], добавлен 03.01.2015Создание набора классов, реализующих функции генерации метаданых для заданного файла данных спутника MTSAT-1R. Существующие методы решения. Реализация алгоритма получения необходимых полей с нужными данными. Разработка структуры базы данных инвентаря.
курсовая работа [38,6 K], добавлен 17.07.2009