1
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Разработка программно-технологического обеспечения статистического описания объектов посредством Visual Basic for Application Excel
ДИПЛОМНАЯ РАБОТА
Исполнитель:
студентка группы М-52 ______Бондарева Юлия Викторовна
Научный руководитель:
кандидат физико-
математических наук
доцент кафедры МПУ____________Осипенко Наталья Борисовна
Рецензент:
доктор технических наук,
профессор, профессор
кафедры ВМП____________Можаровский В.В.
РЕФЕРАТ
Ключевые слова: кластер - анализ, близость между объектами, расстояние, нормировка, алгоритм прямой классификации, нормальная вероятностная бумага, математическое ожидание, дисперсия, макрос, средства автоматизации, лабораторная работа.
Объект исследования: статистическое описание экспериментальных данных.
Методы исследования: метод K - ближайших соседей, метод нормальной вероятностной бумаги, непараметрические методы оценки плотности распределения
Цель дипломной работы: разработка комплекса обучающих средств для студентов, помогающих в изучении и освоении проблематики:
ѕ теории классификации на примере алгоритма прямой классификации упрощенным методом K - ближайших соседей;
ѕ оценки функции плотности распределения вероятностей с помощью непараметрических методов;
ѕ параметрической аппроксимации функции плотности распределения вероятностей с помощью нормальной вероятностной бумаги;
ѕ интерпретации полученных результатов эмпирической статистической обработки данных.
Выводы: разработаны обучающие средства, позволяющие:
ѕ преподавателю упростить процедуру проверки правильности выполнения работ;
ѕ студентам упростить решение задачи статистического описания;
ѕ студентам предоставить наглядные обучающие средства для изучения влияния нормировки, начального разбиения выборки, выбора расстояния на результаты классификации.
СОДЕРЖАНИЕ
Приложение А Апробация программного обеспечения алгоритма прямой классификации средствами пакета анализа данных STATISTICA………. 37
Приложение Б Текст программы макроса для параметрической аппроксимации функции плотности распределения вероятностей на основе нормальной вероятностной бумаги………………………………………. 45
Приложение В Текст программы макроса для алгоритма прямой классификации ……………………………………………………………….. 47
Приложение Г Текст программы макроса для непараметрических методов статистического описания выборкиub>, дающую нам искомую оценку для математического ожидания м. Найденное значение м для лучшей наглядности помещается в ячейку G7.
Оценка для стандартного отклонения выглядит следующим образом:
,
где x0,84 - оценка 0,84 квантиля распределения, полученного при V=1. Она производится следующими действиями.
Первоначально находится значение x0,84 в результате подстановки в полученное уравнение прямой y=0,84. у в данном случае определяется как разность между x0,84 и ранее полученным значением математического ожидания м. Найденное в результате значение для лучшего восприятия заносится в ячейку G8.
Полный текст макроса приведен в приложении Б.
3.3 Описание средств автоматизации алгоритма прямой классификации
Разработанные средства автоматизации алгоритма прямой классификации предназначены для использования в процессе изучения студентами азов теории классификации. Они ориентированы на выработку у студентов интуиции о влиянии характера исходных данных, а также способов измерения близости между объектами и типе нормировки на результат классификации.
Диалог с пользователем осуществляется при помощи пользовательской формы. При нажатии на соответствующие кнопки формы, происходит выполнение необходимых вычислений. Действия, которые производят разработанные макросы для кнопок, разбиты на 5 этапов.
Этап 1. Генерация выборки. Для изучения влияния характера исходных данных на результат классификации используется генерация псевдослучайных величин средствами Excel.
С помощью генератора случайных чисел можно построить последовательности с нормальным распределением. Очень многие модели, построенные с помощью этого распределения, хорошо соответствуют действительности. Чтобы построить последовательность значений нормально распределенной случайной величины, необходимо задать математическое ожидание и дисперсию.
Чтобы сгенерировать последовательность, необходимо воспользоваться функцией из встроенного пакета анализа данных:
1 Выбрать команду Сервис, Анализ данных (Tools, Data Analysis). Появляется диалоговое окно Анализ данных
2 Выбрать пункт Генерация случайных чисел (Random Number Generation). Появляется диалоговое окно Генерация случайных чисел.
3 Выбрать Нормальное распределение в списке Распредеение (Distribution).
4 Ввести число 3 в поле Число переменных (Number of Variables), что означает число столбцов, которые заполнены последовательностью.
5 Ввести число 20 в поле Число случайных чисел (Number Random Numbers), т. е. последовательность занимает 20 строк.
6 Нажать кнопку ОК. Если указанный на рабочем листе диапазон содержит другие данные, появится окно сообщения, где необходимо будет подтвердить замену данных.
Excel создаст последовательность.
Первая половина выборки в разработанном макросе сгенерирована случайным образом из нормального распределения с параметрами математическое ожидание 0 и дисперсия 1 (м = 0, у = 1).
Вторая половина выборки сгенерирована случайным образом из нормального распределения с параметрами математическое ожидание 2 и дисперсия 1 (м = 2, у = 1).
Замечание. Для изменения исходных параметров в теле макроса делаются корректировки. Например, для математического ожидания со значением 0 дисперсии со значением 1 данный фрагмент реализации в макросе выглядит следующим образом:
For i = 1 To m
Randomize
Cells(i + 1, 1) = RndN(0, 1)
Next i
For i = 1 To m
Randomize
Cells(i + 1, 2) = RndN(0, 1)
Next i
For i = 1 To m
Randomize
Cells(i + 1, 3) = RndN(0, 1)
Next i
Этап 2. Рабочие расчеты. Для классификации необходимо провести дополнительные рабочие расчеты, как-то: вычисление максимальных и средних элементов выборки, нормировка выборки.
Первоначально каждый объект заданной совокупности описан тремя признаками по двадцать элементов каждый.
Для каждых членов исходных рядов в ячейки D4, E4, F4 заносятся значения, соответствующие средним значениям.
Для каждых членов исходных рядов в ячейки D7, E7, F7 заносятся значения, соответствующие максимальным значениям.
В процессе исследования в качестве нормировок были выбраны две.
Первая из них вычисляется по формуле , вторая по формуле .
Этап 3 Расчет матриц расстояний. В качестве определения расстояния между объектами выбраны линейное и евклидово расстояния.
Этап 4 Выделение 2 классов, вывод промежуточных результатов. На этом этапе производится выделение двух классов для построенных на первом этапе исходных данных.
Начальное разбиение выборки задается двумя способами. Первый способ заключается в том, что первая половина элементов выборки принимается за первый класс, а вторая - за второй. Второй способ разбиения заключается в том, что в первый класс будут входить нечетные элементы выборки, а во второй - четные. На рабочем листе при помощи макроса реализованы следующие действия: отображено первоначальное разбиение выборки на 2 класса, промежуточные результаты по работе макроса, будет отображение конечного результата разбиения выборки на два класса. По полученным разбиениям построены графики, наглядно изображающие два класса.
Этап 5 Очищение ячеек. Начальные данные, вводимые для исследования, всегда различны. Поэтому на пользовательской форме предусмотрена кнопка, выполняющая полную очистку ячеек с ранее полученными результатами.
Полный текст макроса приведен в приложении В.
4 Апробация средств автоматизации в виде макросов
4.1.1 Апробация программного обеспечения алгоритма прямой классификации. Входные данные для апробации алгоритма классификации генерируются с помощью макроса, реализованного в виде кнопок: «Генерация 1 выборки», «Генерация 2 выборки» (рисунок 4.1). При необходимости изменения параметров выборок их можно изменить внутри макроса.
Рисунок 4.1 - Кнопки «Генерация 1 выборки» и «Генерация 2 выборки»
На начальном этапе построения алгоритма простой классификации в кластерном анализе ставится задача определения средних и максимальных значений среди элементов выборки и способа нормировки [1]. Для этой цели в Excel разработана кнопка «Рабочие расчеты» на пользовательской форме (см. рисунок 4.2). Для этой кнопки написан макрос, который выполняет поставленную задачу.
Рисунок 4.2 - Кнопка «Рабочие расчеты»
Рисунок 4.3 - Результат работы кнопки «Рабочие расчеты»
Как видно из рисунка 4.3 исходные объекты заносятся в ячейки А2:А21, В2:В21, С2:С21. После нажатия кнопки «Рабочие расчеты», полученная информация занесена в ячейки I3:G22, M3:N22, O3:P22.
Таким образом, при помощи макроса получены необходимые рабочие расчеты, нужные для определения матриц расстояний и совершения классификации объектов.
Для дальнейших исследований, предусмотренных алгоритмом прямой классификации, необходимо произвести расчет матриц линейного и евклидового расстояний. С этой целью на форму помещена кнопка «Матрицы расстояний» и к ней написан макрос.
Рисунок 4.4 - Кнопка «Матрицы расстояний»
После нажатия на данную кнопку на рабочий лист выводится необходимая информация.
После расчета матриц расстояний производится классификация объектов, т.е. разделение элементов выборки на два непересекающиеся классы. Эти действия выполняет макрос, написанный для кнопки «Выделение 2 классов, вывод промежуточных результатов» (см. рисунок 4.5).
Для визуализации процесса классификации автоматически строится график начального и конечного разбиения на классы (см. рисунок 4.6).
Таким образом, с помощью построенных макросов заданные совокупности объектов классифицируются методом K - ближайших соседей.
Рисунок 4.5 - Кнопка «Выделение 2 классов, вывод промежуточных результатов»
Рисунок 4.6 - Графики начального и конечного разбиения на классы
4.1.2 Апробация программного обеспечения параметрической аппроксимации функции плотности распределения вероятностей на основе нормальной вероятностной бумаги. При обработке данных на практике, после того, как исходная совокупность данных разбита на однородные группы, осуществляется оценка параметров соответствующего распределения по каждой группе. Описанию решения задачи оценки параметров нормального распределения с помощью нормальной вероятностной бумаги посвящен этот пункт.
В лабораторной работе «Оценка функции распределения с помощью нормальной вероятностной бумаги» из курса «Пакеты статистической обработки данных» требуется проверить с помощью вероятностной бумаги гипотезу о том, что статистические данные - случайная выборка из нормального распределения (с параметрами и ) и оценить значения и . Для этой цели в Excel разработана кнопка «Вычислить», а также написан макрос, который выполняет поставленную задачу (см. рисунок 4.7).
Рисунок 4.7 - Кнопка «Вычислить»
Как видно из рисунка 4.7, исходные данные размещены в ячейки А2:А22. После нажатия кнопки «Вычислить», полученная информация о функции распределения размещается в ячейки D2:D22, о порядковом номере элемента вариационного ряда в ячейки С2:С22, о функции V - в ячейки Е2:Е22. Максимальный и минимальный элементы занесены в ячейки G2:G3, соответствующие им значения функции V - в ячейки G4:G5. Оценки для значений и занесены в ячейки G7:G8. На рабочем листе также помещен график прямой, вдоль которого ложатся точки (x(i), Vi) и сглаживающий эту прямую тренд.
Таким образом, при помощи макроса получены оценки для значений математического ожидания м и стандартного отклонения у, которые соответствуют генеральной совокупности, из которой взят исходный ряд наблюдений.
4.1.3 Апробация программного обеспечения непараметрических методов статистической аппроксимации законов распределения. Первоначально перед пользователем стоит выбор решаемой задачи: гистограмма и полигон частот для статистических данных с разбиением на интервалы равной длины (задача 1), гистограмма и полигон частот для статистических данных с разбиением на равнонаполненные интервалы (задача 2), непараметрическая оценка функции плотности распределения вероятности для статистических данных методом прямоугольных вкладов (задача 3).
При выборе задачи 1 на рабочий лист выдаются результаты работы макроса, а именно значения длины и высоты интервалов для гистограммы и полигона частот при разбиении интервалов на участки равной длины. После этого по найденным данным автоматически построены графики гистограмма и полигон частот (см. рисунок 4.8).
Рисунок 4.8 - Равноинтервальная гистограмма и полигон частот
При выборе задачи 2 на рабочий лист выдаются результаты работы макроса, а именно значения длины и высоты интервалов для гистограммы и полигона частот при разбиении на равнонаполненные интервалы. После этого по найденным данным автоматически построены графики гистограмма и полигон частот (см. рисунок 4.9).
Рисунок 4.9 - Равнонаполненная гистограмма и полигон частот
При выборе задачи 3 на рабочий лист выдаются результат работы макроса, а именно выходной массив значений для функции ядерного типа. После этого по найденным данным автоматически построен график функции ядерного типа (см. рисунок 4.10).
Рисунок 4.10 - «Ядерная» аппроксимация
Таким образом, при помощи ряда макросов проведена первичная статистическая обработка по описанию эмпирических данных: построены равноинтервальные и равнонаполненные гистограммы и полигоны частот, а также функция ядерного типа заданной совокупности объектов.
Приложение А
Апробация программного обеспечения алгоритма прямой классификации средствами пакета анализа данных STATISTICA
Краткая характеристика пакета STATISTICA
Для анализа данных исследователь может воспользоваться готовыми пакетами анализа данных. Одним из таких пакетов статистической обработке является пакет STATISTICA.
Пакет STATISTICA является одним из наиболее мощных пакетов по статистической обработке.
Статистика - это наука, которая позволяет увидеть закономерности в хаосе случайных данных, выделить в них устойчивые связи и определить наши действия с тем, чтобы увеличить долю правильно принятых решений. Как все математические науки, статистика родилась из потребностей практики: подобно тому, как древние египтяне после разливов Нила вынуждены были заново измерять свои участки и для этого разработали начала геометрии, так и мы, окруженные хаотическими данными, вынуждены анализировать их. Конечно, мы стремимся интуитивно сузить пределы случайного, максимально сократить рамки неопределенности, но сделать полностью это редко когда удается. Применяя статистические методы, мы стремимся найти закономерности в случайных данных и воспользоваться найденными закономерностями.
STATISTICA - это универсальная интегрированная программная система, предназначенная для статистического анализа и визуализации данных, управления базами данных и разработки пользовательских приложений, содержащая широкий набор процедур анализа для применения в научных исследованиях, технике, бизнесе, а также специальные методы добычи данных. Помимо общих статистических и графических средств в системе имеются специализированные модули, например, для проведения социологических или биомедицинских исследований, решения технических и, что очень важно, промышленных задач: карты контроля качества, анализ процессов и планирование эксперимента. Работа со всеми модулями происходит в рамках единого программного пакета, для которого можно выбирать один из нескольких предложенных интерфейсов пользователя.
С помощью реализованных в системе STATISTICA мощных языков программирования, снабженных специальными средствами поддержки, легко создаются законченные пользовательские решения и встраиваются в различные другие приложения или вычислительные среды.
STATISTICA представляет собой интегрированную систему статистического анализа и обработки данных. Она состоит из следующих основных компонент, объединенных в рамках одной системы:
ѕ электронных таблиц для ввода и задания исходных данных, а также специальных таблиц для вывода численных результатов анализа;
ѕ мощной графической системы для визуализации данных и результатов статистического анализа;
ѕ набора специализированных статистических модулей, в которых собраны группы логически связанных между собой статистических процедур;
ѕ специального инструментария для подготовки отчетов;
ѕ встроенных языков программирования SCL (STATISTICA Command Language) и STATISTICA BASIC, которые позволяют пользователю расширить стандартные возможности системы.
В ряде случаев для проведения законченного статистического исследования не требуется дополнительное программное обеспечение - все этапы статистического анализа, начиная от ввода исходных данных и их преобразований и заканчивая подготовкой отчета или написания собственных процедур обработки, можно выполнить, используя только систему STATISTICA.
STATISTICA предоставляет пользователю уникальную среду экспериментирования, разведки, графического отображения и углубленного анализа данных, в которой статистическая обработка становится не рутинным занятием, а увлекательным исследованием с использованием новейших компьютерных технологий и современных приемов и методов.
Опишем основные модули пакета STATISTICA, используемые в работе:
ѕ модуль диалога
ѕ модуль построения/выполнения технологических цепочек
ѕ модуль управления данными.
ѕ модуль статистических функций
ѕ модуль визуализации
1 Модуль диалога. С помощью данного модуля пользователь производит выбор необходимого ему метода обработки информации или технологической цепочки методов и выполняет настройку соответствующих параметров. Данная компонента обеспечивает удобный интерфейс с пользователем в системе Windows. Предлагается широкий спектр диалоговых окон для настройки как параметров предоставляемого набора функций (статистической обработки, визуализации результатов и т.д.), так и параметров среды общения, что позволяет настроить модуль под конкретного пользователя. Также обеспечивается возможность справки по текущей ситуации.
2 Модуль построения/выполнения технологических цепочек. Данный модуль позволяет описывать часто используемую цепочку действий по обработке информации в виде пакета команд предлагаемого SCL-языка (STATISTICA Command Language), синтаксис которого очень похож на распространенный язык Basic или Pascal. Практически все возможности пакета STATISTICA продублированы соответствующими командами-функциями, на вход которых подаются продекларированные параметры настройки. Заметим, что возможности расширены вплоть до имитации работы пользователя (запись и воспроизведение команд пользователя и имитация работы органов управления посредством SCL-команд). Модуль реализован в виде двух Windows-программ: sta_com.exe (конструктор) и sta_run.exe (процессор). Созданные технологические цепочки хранятся в базе знаний в виде текстового файла с расширением SCL и могут выполняться посредством процессора sta_run из других Windows-приложений. Эта возможность позволяет строить проблемно-ориентированный программный инструментарий, который будет более понятен и прост в использовании для специалиста, что значительно повысит эффективность его работы.
3 Модуль управления данными. STATISTICA обеспечивает широкие возможности импорта/экспорта из различных стандартных типов баз данных как Windows, так и DOS версий (Symphony, Quattro, dBASE III+, dBASE IV, Paradox и ASCII формат). При импорте данные переводятся во внутренний формат (STA-формат), поддерживающий 32,000 переменных (признаков) и обеспечивающий более быструю обработку данных. Предлагаются возможности верификации (попадание в интервал), различные варианты ранжирования, кодировки данных (соотнесение значений по заданным категориям), создание переменных по уравнению связи признаков, нормировки, смещения значений признаков, замена пропусков на медианное значение, а также стандартные возможности редактирования данных (выделения подвыборки, копирования, удаления, добавления, перемещения, транспонирования и сортировки). Для автоматизации выполнения небольшого объема действий по управлению данными имеется встроенная версия SCL-языка - QMML (Quick Megafile Manager Language). Имеется также возможности установления DDE-связи с другими Windows-приложениями (такие как Excel, MS Word, Ami Pro, Quattro Pro), а также поддержка OLE. Модуль реализован в виде Windows-программы: sta_dat.exe.
4 Модуль статистических функций. Здесь предлагается широкий спектр возможностей статистического анализа данных. Из-за большого объема информации по предлагаемым методам анализа ограничимся краткой характеристикой каждого из них:
ѕ Basic Statistics - базовый статистический анализ: описательная статистика; описательная статистика для групп; t-тест для зависимых и независимых выборок; построение матрицы парных корреляций, частотных таблиц (гистограмм) и другое (реализован в виде Windows-программы sta_bas.exe);
ѕ Nonparametrics - непараметрический анализ (внутри и межгрупповые различные тесты, корреляции), обычная описательная статистика (процентили, медиана и т.д. (sta_non.exe);
ѕ Linear Regression - множественная линейная регрессия (различные методы определения), фиксированная нелинейная регрессия (полиномиальная) (sta_lin);
ѕ NonLinear Estimation - построение нелинейной регрессии (определенного пользователем вида: фиксированной экспоненциальной, ломанной линейной и др. ) с помощью различных аппроксимаций (Симплекс, Квази-Ньютона, Хук-Риверса и др.) (sta_log);
ѕ Time Series and Forecasting - анализ временных рядов и прогноз, а также различного рода сглаживания, трансформации, определение сезонных колебаний и т.д. (sta_tim);
ѕ Cluster Analysis - кластерный анализ, позволяющий выделять однородные группы с помощью метода К-средних, попарного объединения и иерархического метода (sta_clu).
ѕ Factor Analysis - факторный анализ методом выделения главных компонент, максимального правдоподобия факторов, центроидный метод, метод главных аксцис (sta_fac);
ѕ Canonical Analysis - оценка взаимосвязи признаков методом главных компонент (sta_can);
ѕ Multidimensional Scaling - многомерное шкалирование, анализ расстояний или однородности/разнородности, восстановление расстояний (sta_mul)
ѕ Reliability & Item Analysis - методы построения и анализа тестов, построения различных корреляций (Кронбач-альфа, часть-целое, множественные) (sta_rel);
ѕ Discriminant Function Analysis - дискриминантный анализ (sta_dis);
ѕ Survival Analysis - анализ процессов гибели и размножения: описание и сравнение развития; анализ таблиц развития; тест Каплан-Мейера и тесты для двух и более выборок, определение типа распределения (Вейбул, Гомпертц, ...), построение регрессионных моделей (лог-нормальная, экспоненцияльная и другие формы) (sta_sur);
ѕ Quality Control - контроль качества, анализ различных диаграмм (X, R, S, Si, CUSUM, Парето и др.) (sta_qua);
ѕ Process Analysis - анализ процессов: расчет плана по среднему, по пропорциям и Пуассоновским частотам, анализ совместности процессов и интервалов толерантности и другое (sta_pro);
ѕ Experimental Design - планирование экспериментов, построение ДФП, ЦКП и др. (sta_exp);
5 Модуль визуализации. Данный модуль обеспечивает отображение результатов работы статистических процедур. Предлагается два режима отображения - табличный и графический. Для графического отображения предусмотрены следующие возможности:
ѕ 2-мерная графика: гистограмма, XY-проекция, вероятностная бумага (нормальная, полунормальная), ящики с “усами”, круговые диаграммы и другое;
ѕ 3-мерная графика: проекции, гистограммы, ящики с “усами” и т.д.;
ѕ различные 3-мерные проекции;
ѕ отображение многомерной выборки в виде “лиц Чернова”, графиков Кивиата, полигонов, профилей и т.д.
Имеется возможность сохранения результатов в виде файлов данных (для таблиц), STG-файлов (для графики) либо в виде твердой копии с помощью функций печати. Используя стандартные OLE-операции можно также вставлять результаты в документы и электронные таблицы (Word, PageMaker, Exсel и другие приложения Windows, поддерживающие стандарт OLE).
Технология статистического анализа данных пакета STATISTICA
Данная работа в пакете Statistica апробирована среди студентов математического факультета группы ПОИТ-36.
Для начала работы с пакетом Statistica необходимо подготовить данные измерений в виде файла формата dBase или в Excel. Дальнейшее выполнение технологических цепочек с использованием пакета Statistica предполагает предварительный импорт данных во внутренний формат данных пакета. Для этого необходимо выполнить следующую цепочку действий:
1 Вызов пакета Statistica из Windows: Пуск Программы Statistica. После этого пользователю будет предложено выбрать раздел, с которым он будет работать.
2 Выбор раздела управления данными: Data Management MFM Switch To Cancel.
3 Выбор операции импорта исходных данных: File Import ODBC.
4 Выбор типа импортируемого файла: dBase Files OK;
5 Указание пути к данным: Выбор диска Выбор папки OK.
6 Указание импортируемой таблицы: Tables <выбор>.
7 Выбор списка рабочих полей: Fields <выбор> ADD.
8 Импорт данных: OK <ввод имени: data > OK. Если появиться окно диалога `File exist..., то нажать кнопку `OK.
9 Выход: File Exit.
Методы автоматической классификации требуют предварительной нормировки данных. Технологическая цепочка нормировки данных имеет вид:
1 Нормирование данных: Statistica Data Management MFM <выбор всех признаков> Edit Fill/Standardize Block Standardize Columns. При этом осуществляется стандартная нормировка , где - среднее по признаку (столбцу) х, - стандартное отклонение по признаку х.
2 Сохранение нормированной выборки: File Save As File Name: normir OK.
3 Выбор раздела кластерного анализа: Statistica Cluster Analysis Switch To.
Таким образом, следующие методы классификации ориентированы на рабочий файл `normir.sta.
Алгоритмы прямой классификации методом иерархической классификации и методом К-средних приведены в пунктах 1.2.5 и 1.2.6.
Технологическая цепочка автоматической классификации методом иерархической классификации имеет вид:
1 Выбор метода иерархической классификации: Joining (tree clustering).
2 Выбор признаков для классификации: Variables <выбор> OK OK.
3 В результате будет предложено графическое отражение процесса иерархической классификации. График можно распечатать (File Print Graph OK) или сохранить в файле (File Save as). С помощью комбинации клавиш Ctrl+Ins, график можно сохранить в буфере обмена Windows и далее с помощью вставки данных буфера обмена (Shift+Ins) использовать его в редакторах отчетов.
4 По полученной графической проекции визуально определяется состав классов, который заносится в общий отчет в виде таблицы.
5 Выход: Ctrl+F4 Cancel Cancel.
Технологическая цепочка автоматической классификации методом К-средних имеет вид:
1 Выбор метода К-средних: K-means clustering.
2 Выбор признаков для классификации: Variables <выбор> OK.
3 Указание возможного количества классов: Number of clusters: <ввод количества> OK.
4 Просмотр признакового состава классов: Members of each cluster & distances.
5 В результате будут выведены таблицы, отражающие состав признаков по классам.
6 Формирование выходного отчета с использованием операций обмена с буфером Windows (полученные таблицы вставляются в выходной документ).
7 Выход: File Exit.
Апробация программного обеспечения алгоритма прямой классификации средствами пакета анализа данных Statistica
В ряде практических случаев для проведения законченного статистического исследования не требуется разрабатывать дополнительное, а достаточно использовать стандартное программное обеспечение, например, систему STATISTICA. Все этапы статистического анализа, начиная от ввода исходных данных, их преобразования и заканчивая подготовкой отчета или написания собственных процедур обработки, можно выполнить, используя только систему STATISTICA.
Для сравнения результатов, полученных при помощи разработанных в среде пакета анализа данных EXCEL макросов для алгоритма прямой классификации упрощенным методом K - ближайших соседей, используются средства Statistica. С этой целью разработана методика и рекомендации по работе в Statistica.
В пакете анализа данных для экспериментальных данных выбран инструмент исследования Kluster analis/K - means klustering. Получены следующие результаты.
Рисунок 5.1 - Определение классов
Как видно из полученных отчетов (см. рисунки 5.1, 5.2, 5.3) к первому классу отнесены элементы выборки под порядковыми номерами 1,2,4,5,6,7,9,10, ко второму классу - 3,8,11,12,13,14.!5,16,17,18,19,20. После сравнения этих данных с результатами работы макросов, разработанных в Excel, можно заметить, что наиболее близкие результаты были получены при первоначальном разбиении выборки на две части путем присвоения к первому классу первой половины элементов, ко второму классу - второй половины выборки, независимо от выбора расстояния.
Рисунок 5.2 - Состав первого класса и расстояние для классового центра
Рисунок 5.3 - Состав первого класса и расстояние для классового центра
Текст программы макроса для параметрической аппроксимации функции плотности распределения вероятностей на основе нормальной вероятностной бумаги
Function RndN(ByVal a As Single, s2 As Single) As Single
возвр. число, нормально распределенное со средним a и дисперсией s2
Dim usum As Single
Dim i As Integer
usum = -6
For i = 1 To 12
usum = usum + Rnd
Next i
RndN = a + usum * Sqr(s2)
End Function
Private Sub CommandButton1_Click()
Dim i As Integer
Dim min As Double
Dim max As Double
Dim imax As Integer
Dim imin As Integer
Dim x084 As Double
Dim x05 As Double
Cells(7, 2) = "Ждите..."
Очистка ячеек
n = Cells(2, 2)
For i = 2 To n + 2
Cells(i, 3) = ""
Cells(i, 4) = ""
Cells(i, 5) = ""
Cells(i, 7) = ""
Cells(i, 8) = ""
Next i
генерация элементов выборки 2
m = InputBox("Введите количество элементов выборки", "Ввод")
For i = 1 To m
Randomize
Cells(i + 2, 1) = RndN(0, 1)
Next i
For i = 1 To n
Application.Cells(i + 1, 3) = i
Next i
For i = 1 To n
Application.Cells(i + 1, 4) = i / n
Next i
Построение прямой
min = Cells(2, 1)
For i = 3 To n + 1
If Cells(i, 1) < min Then min = Cells(i, 1)
Next i
max = Cells(2, 1)
For i = 2 To n
If Cells(i, 1) > max Then max = Cells(i, 1)
Next i
Cells(2, 7) = min
Cells(3, 7) = max
imin = 1
min = Application.Cells(2, 1)
For i = 3 To n
If Application.Cells(i, 1) > min Then imin = i - 1
If Application.Cells(i, 1) > min Then min = Application.Cells(i, 1)
Next i
imax = 1
max = Application.Cells(2, 1)
For i = 3 To n
If Application.Cells(i, 1) < max Then imax = i - 1
If Application.Cells(i, 1) < max Then max = Application.Cells(i, 1)
Next i
vmin = Application.Cells(imin + 1, 5)
vmax = Application.Cells(imax + 1, 5)
Application.Cells(4, 7) = vmax
Application.Cells(5, 7) = vmin
Уравнение прямой имеет вид:
x=(y-vmin)*(max-min)/(vmax-vmin)+min
x05 = (0.5 - vmin) * (max - min) / (vmax - vmin) + min
Cells(7, 7) = x05
x084 = (0.84 - vmin) * (max - min) / (vmax - vmin) + min
Cells(8, 7) = x084 - x05
Cells(7, 2) = "Готово."
End Sub
Приложение В
Текст программы макроса для алгоритма
прямой классификации
Private Sub CommandButton2_Click()
Dim i, j As Integer
Dim SUM As Integer
Dim flag As Integer
Dim max As Integer
Dim maxi As Double
Dim maxu As Double
Dim sr As Double
Dim sri As Double
Dim sru As Double
Dim l As Integer
Dim m As Integer
Dim jmin As Integer
Dim imin As Integer
Dim k(20) As Integer
SUM = 0
flag = 0
If OptionButton1.Value = True Then
Cells(19, 4) = "Ждите..."
n = Cells(1, 5)
среднее по выборкам
For i = 1 To n
sr = sr + Cells(i + 1, 1)
Next i
Application.Cells(4, 4) = sr / n
For i = 1 To n
sri = sri + Cells(i + 1, 2)
Next i
Application.Cells(4, 5) = sri / n
For i = 1 To n
sru = sru + Cells(i + 1, 3)
Next i
Application.Cells(4, 6) = sru / n
Максимальное значение
max = Cells(2, 1)
For i = 2 To n
If Cells(i, 1) > max Then max = Cells(i, 1)
Next i
Cells(7, 4) = max
maxi = Cells(2, 2)
For i = 2 To n
If Cells(i, 2) > maxi Then maxi = Cells(i, 2)
Next i
Cells(7, 5) = maxi
maxu = Cells(2, 3)
For i = 2 To n
If Cells(i, 3) > maxu Then maxu = Cells(i, 3)
Next i
Cells(7, 6) = maxu
maxu = Cells(2, 1)
For i = 2 To n
If Cells(i, 3) > maxu Then maxu = Cells(i, 1)
Next i
Cells(7, 4) = maxu
Нормировка по формуле(6)
n = Cells(1, 5)
For i = 1 To n
Application.Cells(i + 2, 7) = Cells(i + 1, 1) / Cells(7, 4)
Next i
For i = 1 To n
Application.Cells(i + 2, 8) = Cells(i + 1, 2) / Cells(7, 5)
Next i
For i = 1 To n
Application.Cells(i + 2, 9) = Cells(i + 1, 3) / Cells(7, 6)
Next i
по формуле (4)
n = Cells(1, 5)
For i = 1 To n
Application.Cells(i + 2, 10) = Cells(i + 1, 1) / Cells(4, 4)
Next i
For i = 1 To n
Application.Cells(i + 2, 11) = Cells(i + 1, 2) / Cells(4, 5)
Next i
For i = 1 To n
Application.Cells(i + 2, 12) = Cells(i + 1, 3) / Cells(4, 6)
Next i
Cells(19, 4) = "Готово"
GoTo metka
End If
If OptionButton5.Value = True Then
по формуле (6)формируем матрицу расстояний
Cells(19, 4) = "Ждите..."
n = Cells(1, 5)
For i = 1 To n
For j = 1 To n
Application.Cells(j + 2, 18 + i) = Abs(Cells(j + 2, 7) - Cells(i + 2, 7)) + Abs(Cells(j + 2, 8) - Cells(i + 2, 8)) + Abs(Cells(j + 2, 9) - Cells(i + 2, 9))
Next j
Next i
по формуле (4)формируем матрицу расстояний
n = Cells(1, 5)
For i = 1 To n
For j = 1 To n
Application.Cells(j + 24, 18 + i) = Sqr((Cells(j + 2, 10) - Cells(i + 2, 10)) * (Cells(j + 2, 10) - Cells(i + 2, 10)) + (Cells(j + 2, 11) - Cells(i + 2, 11)) * (Cells(j + 2, 11) - Cells(i + 2, 11)) + (Cells(j + 2, 12) - Cells(i + 2, 12)) * (Cells(j + 2, 12) - Cells(i + 2, 12)))
Next j
Next i
Cells(19, 4) = "Готово"
GoTo metka
End If
If OptionButton6.Value = True Then
Cells(19, 4) = "Ждите..."
Выделение классов разделением на две части
n = Cells(1, 5)
For i = 1 To n / 2
k(i) = 1
Application.Cells(26 + i, 3) = Application.Cells(1 + i, 1)
Application.Cells(26 + i, 4) = Application.Cells(1 + i, 2)
Application.Cells(26 + i, 5) = Application.Cells(1 + i, 3)
Application.Cells(26 + i, 1) = i
Next i
For i = n / 2 + 1 To n
k(i) = 2
Application.Cells(26 + i, 3) = Application.Cells(1 + i, 1)
Application.Cells(26 + i, 4) = Application.Cells(1 + i, 2)
Application.Cells(26 + i, 5) = Application.Cells(1 + i, 3)
Application.Cells(16 + i, 2) = i
Next i
формируем класс 1
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(2 + j, i + 18) < min Then
If i <> j Then
If (k(i) = 1) And (k(j) = 2) Then
imin = i
jmin = j
min = Application.Cells(2 + j, i + 18)
End If
End If
End If
Next j
Next i
k(jmin) = 1
Application.Cells(25 + l, 7) = jmin
Next l
формируем класс 2
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(2 + j, i + 18) < min Then
If i <> j Then
If (k(i) = 2) And (k(j) = 1) Then
imin = i
jmin = j
min = Application.Cells(2 + j, i + 18)
End If
End If
End If
Next j
Next i
k(jmin) = 2
Application.Cells(30 + l, 7) = jmin
Next l
Вывод классов на рабочий лист
l = 1
For i = 1 To n
If k(i) = 1 Then
Application.Cells(26 + l, 13) = i
Application.Cells(26 + l, 15) = Application.Cells(1 + i, 1)
Application.Cells(26 + l, 16) = Application.Cells(1 + i, 2)
Application.Cells(26 + l, 17) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
m = 1
For i = 1 To n
If k(i) = 2 Then
Application.Cells(26 + m, 14) = i
Application.Cells(36 + m, 15) = Application.Cells(1 + i, 1)
Application.Cells(36 + m, 16) = Application.Cells(1 + i, 2)
Application.Cells(36 + m, 17) = Application.Cells(1 + i, 3)
m = m + 1
End If
Next i
Выделение классов по признаку четность
n = Cells(1, 5)
l = 1
For i = 1 To n
If i Mod 2 = 0 Then
k(i) = 1
Application.Cells(76 + l, 1) = i
Application.Cells(76 + l, 3) = Application.Cells(1 + i, 1)
Application.Cells(76 + l, 4) = Application.Cells(1 + i, 2)
Application.Cells(76 + l, 5) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
l = 1
For i = 1 To n
If i Mod 2 <> 0 Then
k(i) = 2
Application.Cells(76 + l, 2) = i
Application.Cells(86 + l, 3) = Application.Cells(1 + i, 1)
Application.Cells(86 + l, 4) = Application.Cells(1 + i, 2)
Application.Cells(86 + l, 5) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
формируем класс 1 по признаку четность
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(2 + j, i + 18) < min Then
If i <> j Then
If (k(i) = 1) And (k(j) = 2) Then
imin = i
jmin = j
min = Application.Cells(2 + j, i + 18)
End If
End If
End If
Next j
Next i
k(jmin) = 1
Application.Cells(75 + l, 7) = jmin
Next l
формируем класс 2 по признаку четность
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(2 + j, i + 18) < min Then
If i <> j Then
If (k(i) = 2) And (k(j) = 1) Then
imin = i
jmin = j
min = Application.Cells(2 + j, i + 18)
End If
End If
End If
Next j
Next i
k(jmin) = 2
Application.Cells(80 + l, 7) = jmin
Next l
Вывод классов по признаку четность на рабочий лист
l = 1
For i = 1 To n
If k(i) = 1 Then
Application.Cells(76 + l, 13) = i
Application.Cells(76 + l, 15) = Application.Cells(1 + i, 1)
Application.Cells(76 + l, 16) = Application.Cells(1 + i, 2)
Application.Cells(76 + l, 17) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
m = 1
For i = 1 To n
If k(i) = 2 Then
Application.Cells(76 + m, 14) = i
Application.Cells(86 + m, 15) = Application.Cells(1 + i, 1)
Application.Cells(86 + m, 16) = Application.Cells(1 + i, 2)
Application.Cells(86 + m, 17) = Application.Cells(1 + i, 3)
m = m + 1
End If
Next i
Работа с матрицей по евклидовому расстоянию
n = Cells(1, 5)
For i = 1 To n / 2
k(i) = 1
Application.Cells(126 + i, 3) = Application.Cells(1 + i, 1)
Application.Cells(126 + i, 4) = Application.Cells(1 + i, 2)
Application.Cells(126 + i, 5) = Application.Cells(1 + i, 3)
Application.Cells(126 + i, 1) = i
Next i
For i = n / 2 + 1 To n
k(i) = 2
Application.Cells(126 + i, 3) = Application.Cells(1 + i, 1)
Application.Cells(126 + i, 4) = Application.Cells(1 + i, 2)
Application.Cells(126 + i, 5) = Application.Cells(1 + i, 3)
Application.Cells(116 + i, 2) = i
Next i
формируем класс 1
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(24 + j, i + 18) < min Then
If i <> j Then
If (k(i) = 1) And (k(j) = 2) Then
imin = i
jmin = j
min = Application.Cells(24 + j, i + 18)
End If
End If
End If
Next j
Next i
k(jmin) = 1
Application.Cells(125 + l, 7) = jmin
Next l
формируем класс 2
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(24 + j, i + 18) < min Then
If i <> j Then
If (k(i) = 2) And (k(j) = 1) Then
imin = i
jmin = j
min = Application.Cells(24 + j, i + 18)
End If
End If
End If
Next j
Next i
k(jmin) = 2
Application.Cells(130 + l, 7) = jmin
Next l
Вывод классов на рабочий лист
l = 1
For i = 1 To n
If k(i) = 1 Then
Application.Cells(126 + l, 13) = i
Application.Cells(126 + l, 15) = Application.Cells(1 + i, 1)
Application.Cells(126 + l, 16) = Application.Cells(1 + i, 2)
Application.Cells(126 + l, 17) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
m = 1
For i = 1 To n
If k(i) = 2 Then
Application.Cells(126 + m, 14) = i
Application.Cells(136 + m, 15) = Application.Cells(1 + i, 1)
Application.Cells(136 + m, 16) = Application.Cells(1 + i, 2)
Application.Cells(136 + m, 17) = Application.Cells(1 + i, 3)
m = m + 1
End If
Next i
n = Cells(1, 5)
l = 1
For i = 1 To n
If i Mod 2 = 0 Then
k(i) = 1
Application.Cells(176 + l, 1) = i
Application.Cells(176 + l, 3) = Application.Cells(1 + i, 1)
Application.Cells(176 + l, 4) = Application.Cells(1 + i, 2)
Application.Cells(176 + l, 5) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
l = 1
For i = 1 To n
If i Mod 2 <> 0 Then
k(i) = 2
Application.Cells(176 + l, 2) = i
Application.Cells(186 + l, 3) = Application.Cells(1 + i, 1)
Application.Cells(186 + l, 4) = Application.Cells(1 + i, 2)
Application.Cells(186 + l, 5) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
формируем класс 1 по признаку четность
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(26 + j, i + 1) < min Then
If i <> j Then
If (k(i) = 1) And (k(j) = 2) Then
imin = i
jmin = j
min = Application.Cells(26 + j, i + 1)
End If
End If
End If
Next j
Next i
k(jmin) = 1
Application.Cells(175 + l, 7) = jmin
Next l
формируем класс 2 по признаку четность
For l = 1 To n / 4
imin = 1
jmin = 2
min = 1000
For i = 1 To n
For j = 1 To n
If Application.Cells(26 + j, i + 1) < min Then
If i <> j Then
If (k(i) = 2) And (k(j) = 1) Then
imin = i
jmin = j
min = Application.Cells(26 + j, i + 1)
End If
End If
End If
Next j
Next i
k(jmin) = 2
Application.Cells(180 + l, 7) = jmin
Next l
Вывод классов по признаку четность на рабочий лист
l = 1
For i = 1 To n
If k(i) = 1 Then
Application.Cells(176 + l, 13) = i
Application.Cells(176 + l, 15) = Application.Cells(1 + i, 1)
Application.Cells(176 + l, 16) = Application.Cells(1 + i, 2)
Application.Cells(176 + l, 17) = Application.Cells(1 + i, 3)
l = l + 1
End If
Next i
m = 1
For i = 1 To n
If k(i) = 2 Then
Application.Cells(176 + m, 14) = i
Application.Cells(186 + m, 15) = Application.Cells(1 + i, 1)
Application.Cells(186 + m, 16) = Application.Cells(1 + i, 2)
Application.Cells(186 + m, 17) = Application.Cells(1 + i, 3)
m = m + 1
End If
Next i
Cells(19, 4) = "Готово"
GoTo metka
End If
metka:
End Sub
Private Sub CommandButton3_Click()
Очистка ячеек
Cells(19, 4) = "Ждите..."
Cells(4, 4) = ""
Cells(4, 5) = ""
Cells(4, 6) = ""
Cells(7, 4) = ""
Cells(7, 5) = ""
Cells(7, 6) = ""
For i = 2 To 20 + 2
Cells(i, 1) = ""
Cells(i, 2) = ""
Cells(i, 3) = ""
Next i
For i = 2 To 20 + 2
Cells(i + 1, 7) = ""
Cells(i + 1, 8) = ""
Cells(i + 1, 9) = ""
Next i
For i = 2 To 20 + 2
Cells(i + 1, 10) = ""
Cells(i + 1, 11) = ""
Cells(i + 1, 12) = ""
Next i
For i = 1 To 20
For j = 1 To 20
Cells(i + 2, j + 18) = ""
Next j
Next i
For i = 1 To 20
For j = 1 To 20
Cells(i + 24, j + 18) = ""
Next j
Next i
For i = 1 To 20 / 2
Cells(26 + i, 1) = ""
Cells(26 + i, 2) = ""
Cells(40 + i, 1) = ""
Cells(40 + i, 2) = ""
Cells(54 + i, 1) = ""
Cells(54 + i, 2) = ""
Cells(68 + i, 1) = ""
Cells(68 + i, 2) = ""
Cells(25 + i, 7) = ""
Cells(39 + i, 7) = ""
Cells(53 + i, 7) = ""
Cells(68 + i, 7) = ""
Next i
For i = 1 To 10
Cells(26 + i, 1) = ""
Cells(26 + i, 2) = ""
Cells(26 + i, 13) = ""
Cells(26 + i, 14) = ""
Cells(76 + i, 1) = ""
Cells(76 + i, 2) = ""
Cells(76 + i, 13) = ""
Cells(76 + i, 14) = ""
Cells(126 + i, 1) = ""
Cells(126 + i, 2) = ""
Cells(126 + i, 13) = ""
Cells(126 + i, 14) = ""
Cells(176 + i, 1) = ""
Cells(176 + i, 2) = ""
Cells(176 + i, 13) = ""
Cells(176 + i, 14) = ""
Cells(25 + i, 7) = ""
Cells(75 + i, 7) = ""
Cells(125 + i, 7) = ""
Cells(175 + i, 7) = ""
Next i
For i = 1 To 20
Cells(26 + i, 3) = ""
Cells(26 + i, 4) = ""
Cells(26 + i, 5) = ""
Cells(76 + i, 3) = ""
Cells(76 + i, 4) = ""
Cells(76 + i, 5) = ""
Cells(126 + i, 3) = ""
Cells(126 + i, 4) = ""
Cells(126 + i, 5) = ""
Cells(176 + i, 3) = ""
Cells(176 + i, 4) = ""
Cells(176 + i, 5) = ""
Cells(26 + i, 15) = ""
Cells(26 + i, 16) = ""
Cells(26 + i, 17) = ""
Cells(76 + i, 15) = ""
Cells(76 + i, 16) = ""
Cells(76 + i, 17) = ""
Cells(126 + i, 15) = ""
Cells(126 + i, 16) = ""
Cells(126 + i, 17) = ""
Cells(176 + i, 15) = ""
Cells(176 + i, 16) = ""
Cells(176 + i, 17) = ""
Cells(19, 4) = "Готово."
End Sub
Private Sub CommandButton4_Click()
UserForm1.Hide
End Sub
Private Sub CommandButton5_Click()
генерация элементов выборки 2
m = InputBox("Введите количество элементов второй подвыборки", "Ввод")
If m > 20 Then
MsgBox "Количество элементов более 20 не обрабатывается!", 48, "Ошибка!"
GoTo metka
End If
Cells(19, 4) = "Ждите..."
For i = 1 To m
Randomize
Cells(i + 11, 1) = RndN(2, 1)
Next i
For i = 1 To m
Randomize
Cells(i + 11, 2) = RndN(2, 1)
Next i
For i = 1 To m
Randomize
Cells(i + 11, 3) = RndN(2, 1)
Next i
Cells(19, 4) = "Готово."
metka:
End Sub
Приложение Г
Текст программы макроса для непараметрических методов статистического описания выборки
Dim task As Integer
Private Sub CommandButton1_Click()
Dim n As Integer, k As Integer, i As Integer, j As Integer, _
c() As Double, t As Double
For i = 18 To 500
For j = 3 To 7
Cells(i, j) = ""
Next j
Next i
If Cells(16, 3) = "" Then
Cells(17, 5) = "Введите объем выборки в ячейку C8"
End If
If Cells(17, 3) = "" Then
Cells(17, 5) = "Введите число интервалов в ячейку C9"
End If
n = Cells(16, 3)
k = Cells(17, 3)
ReDim c(n)
For i = 1 To n
c(i) = Cells(18 + i, 1)
Next i
For i = 1 To n - 1
For j = 1 To n - i
If c(j) > c(j + 1) Then
t = c(j)
c(j) = c(j + 1)
c(j + 1) = t
End If
Next j
Next i
Select Case task
Case 1: f = EIGistPol(k, n, c)
Case 2: f = EFGist(k, n, c)
If f = -1 Then
Cells(23, 4) = "Невозможно построить равнона-"
Cells(24, 4) = "полненную гистограмму"
End If
Case 3: f = NuclAppr(k, n, c)
End Select
End Sub
Private Sub OptionButton1_Click()
task = 1
End Sub
Private Sub OptionButton2_Click()
task = 2
End Sub
Private Sub OptionButton3_Click()
task = 3
End Sub
Function EIGistPol(k As Integer, n As Integer, c() As Double) As Integer
Dim i As Integer, j As Integer, m As Integer, _
h As Double, f() As Double
h = (c(n) - c(1)) / k
ReDim f(k)
Cells(18, 3) = "EIGdeltk"
Cells(19, 3) = c(1)
Cells(18, 6) = "EIGist"
For i = 1 To k
m = 0
For j = 1 To n
If c(j) >= c(1) + (i - 1) * h And c(j) <= c(1) + i * h Then m = m + 1
Next j
f(i) = m / (n * h)
Cells(19 + i, 3) = c(1) + i * h
Cells(18 + i, 6) = f(i)
Next i
Cells(18, 4) = "EIPdeltk"
Cells(19, 4) = c(1) - h / 2
Cells(19, 7) = 0
Cells(18, 7) = "EIPol"
For i = 1 To k
Cells(19 + i, 4) = c(1) + i * h - h / 2
Cells(19 + i, 7) = f(i)
Next i
Cells(20 + k, 4) = c(n) + h / 2
Cells(20 + k, 7) = 0
EIGistPol = 1
End Function
Function EFGist(k As Integer, n As Integer, c() As Double) As Integer
Dim i As Integer, j As Integer, s As Integer, m As Integer, _
f() As Double, p() As Double
ReDim f(k)
If n Mod k = 0 Then
m = n / k
Else
Cells(20, 4) = "Множество значений выборки "
Cells(21, 4) = "нельзя разбить на указанное "
Cells(22, 4) = "число равнонаполненных интервалов"
EFGist = -1
Exit Function
End If
If c(1) = c(n) Then
Cells(20, 4) = "Построить равнонаполненные гистограмму"
Cells(20, 4) = " и полигон частот по данной выборке "
Cells(20, 4) = "нельзя, так как выборка однородна"
End If
ReDim p(k, 3)
s = 0
For i = 0 To k - 1
For j = 0 To n - i * m + s - 1
If c((i + 1) * m) <> c(i * m - s + 1) Then
p(i + 1, 1) = c(i * m - s + 1)
p(i + 1, 2) = c((i + 1) * m + j) - c(i * m - s + 1)
p(i + 1, 3) = (m + j + s) / (n * k * p(i + 1, 2))
s = -j
GoTo ni
Else
j = j + 1
End If
Next j
ni: Next i
Cells(18, 4) = "EPxGist"
Cells(18, 5) = "EPhGist"
Cells(18, 6) = "EPxPol"
Cells(18, 7) = "EPhPol"
s = 0
For i = 1 To k
Cells(18 + 4 * i - 3, 4) = p(i, 1)
Cells(18 + 4 * i - 2, 4) = p(i, 1)
Cells(18 + 4 * i - 1, 4) = p(i, 1) + p(i, 2)
Cells(18 + 4 * i, 4) = p(i, 1) + p(i, 2)
Cells(18 + 4 * i - 3, 5) = 0
Cells(18 + 4 * i - 2, 5) = p(i, 3)
Cells(18 + 4 * i - 1, 5) = p(i, 3)
Cells(18 + 4 * i, 5) = 0
Cells(18 + i, 6) = p(i, 1) + p(i, 2) / 2
Cells(18 + i, 7) = p(i, 3)
Next i
EFGist = 1
End Function
Function NuclAppr(k As Integer, n As Integer, c() As Double) As Integer
Dim i As Integer, j As Integer, _
f As Double, x() As Double, _
d As Double, cof As Double
ReDim x(n, 2)
d = (c(n) - c(1)) / k
Cells(18, 5) = "x"
Cells(18, 7) = "NAp"
For i = 1 To n
x(i, 1) = c(i) - d / 2
x(i, 2) = c(i) + d / 2
Cells(18 + 2 * i - 1, 5) = x(i, 1)
Cells(18 + 2 * i, 5) = x(i, 2)
Next i
For i = 1 To n
cof = (k - 1) / (n + 1) / (c(n) - c(1)) / k
f = 0
For j = 1 To n
If c(j) >= x(i, 1) And c(j) <= x(i, 2) Then f = f + 1
Next j
f = cof + n / (n + 1) * f / d
Cells(18 + i, 7) = f
Next i
NuclAppr = 1
End Function
! | Как писать дипломную работу Инструкция и советы по написанию качественной дипломной работы. |
! | Структура дипломной работы Сколько глав должно быть в работе, что должен содержать каждый из разделов. |
! | Оформление дипломных работ Требования к оформлению дипломных работ по ГОСТ. Основные методические указания. |
! | Источники для написания Что можно использовать в качестве источника для дипломной работы, а от чего лучше отказаться. |
! | Скачивание бесплатных работ Подводные камни и проблемы возникающие при сдаче бесплатно скачанной и не переработанной работы. |
! | Особенности дипломных проектов Чем отличается дипломный проект от дипломной работы. Описание особенностей. |
→ | по экономике Для студентов экономических специальностей. |
→ | по праву Для студентов юридических специальностей. |
→ | по педагогике Для студентов педагогических специальностей. |
→ | по психологии Для студентов специальностей связанных с психологией. |
→ | технических дипломов Для студентов технических специальностей. |
→ | выпускная работа бакалавра Требование к выпускной работе бакалавра. Как правило сдается на 4 курсе института. |
→ | магистерская диссертация Требования к магистерским диссертациям. Как правило сдается на 5,6 курсе обучения. |
Дипломная работа | Формирование устных вычислительных навыков пятиклассников при изучении темы "Десятичные дроби" |
Дипломная работа | Технологии работы социального педагога с многодетной семьей |
Дипломная работа | Человеко-машинный интерфейс, разработка эргономичного интерфейса |
Дипломная работа | Организация туристско-экскурсионной деятельности на т/к "Русский стиль" Солонешенского района Алтайского края |
Дипломная работа | Разработка мероприятий по повышению эффективности коммерческой деятельности предприятия |
Дипломная работа | Совершенствование системы аттестации персонала предприятия на примере офиса продаж ОАО "МТС" |
Дипломная работа | Разработка системы менеджмента качества на предприятии |
Дипломная работа | Организация учета и контроля на предприятиях жилищно-коммунального хозяйства |
Дипломная работа | ЭКСПРЕСС-АНАЛИЗ ФИНАНСОВОГО СОСТОЯНИЯ ООО «АКТ «ФАРТОВ» |
Дипломная работа | Психическая коммуникация |