Писаный (1195951), страница 2
Текст из файла (страница 2)
В работе исследуются около 300 архивов прогностических и фактических значений температуры в пунктах наблюдения Дальнего Востока. Архивы были сгенерированы с использованием фактических данных из пунктов наблюдения и прогностических данных, полученных в результате работы модели. Каждый архив представляет собой таблицу, содержащую фактическую температуру
и прогностическую температуру
в градусах Цельсия в определенном пункте наблюдения с промежутком между измерениями, равным 3 часам. Архивы разделены по годам. Название файла содержит код пункта наблюдения и год, данные для которого содержатся в архиве.
К архивам прилагаются вспомогательные файлы с дополнительной информацией, такие как файлы данных о кодах и названиях пунктов наблюдения и данных о местонахождении пунктов наблюдения: их широте, долготе и высоте над уровнем моря.
На момент написания работы для анализа были предоставлены архивы данных за 2014-2016 гг, а также данные за начало 2017 года. Ввиду неполноты данных 2017 года и возможности использования как контрольной выборки в исследовании использовались только данные до 2017 года.
1.3 Определение оценок качества прогнозов
При оценке качества прогнозов необходимо рассматривать два фактора. Первый фактор должен наглядно демонстрировать, насколько сильно полученные в результате работы численной модели данные температуры отличаются от фактических. Второй должен демонстрировать, насколько часто численная модель дает неверный прогноз. Для определения этих факторов можно рассмотреть следующие понятия.
- Систематическая погрешность – разность между прогностическим и фактическим значением температуры в определенный момент времени.
(1)
-
(2)
Абсолютная погрешность – абсолютная величина разности между прогностическим и фактическим значением температуры в определенный момент времени.
- Средняя систематическая погрешность
– среднее значение
за определенный период. Эта оценка позволяет выявить систематическое отклонение прогностической температуры от фактической. Знания этого отклонения достаточно для коррекции метода прогноза. Благодаря этому, данную погрешность также называют устранимой погрешностью.
- Средняя абсолютная погрешность
– среднее значение
за определенный период. Эта оценка характеризует среднюю величину отклонения прогноза и позволяет судить о его качестве.
-
(3)
Оправдываемость прогнозов – доля прогнозов, абсолютная погрешность которых не превышает заданного значения.
Для анализа качества прогнозов температуры на протяжении заданных периодов будем использовать понятия средней систематической погрешности, средней абсолютной погрешности и оправдываемости прогнозов.
Согласно «Наставлению по краткосрочным прогнозам погоды общего назначения» [1], прогноз приземной температуры оправдался, если температура находилась в пределах прогнозируемой градации или отличалась от крайних ее значений не более чем на 2 ̊ С.
2 Разработка программного комплекса для анализа архивов температур
2.1 Сведения о разработке программ для интерпретатора языка Python
Для анализа информации архивов фактических значений приземной температуры и результатов работы численной модели в виде массива прогностических значений приземной температуры, а также систематизации и представления этих данных в виде, удобном для исследования качества прогнозов, необходимо разработать соответствующий комплекс программ, способный решать эту задачу. Так как данное исследование связано с использованием специфичного способа представления исходных данных, то общедоступные программные решения принято считать отсутствующими, и необходимо разработать собственный инструмент для анализа и систематизации данных из исходных архивов.
Поскольку данное исследование предполагает не только неоднократный анализ имеющихся данных, но и возможность дальнейшего использования разработанных инструментов, то к ним выставлены следующие требования:
- кроссплатформенность: обеспечить возможность запуска программ независимо от используемой операционной системы;
- возможность настройки: незначительные изменения, такие как путь к исходным данным или интервалы для группировки результатов, не должны приводить к необходимости изменять код программ;
- возможность параллельной обработки данных;
- простота развертывания комплекса на новой вычислительной машине.
В качестве языка программирования, на котором производится разработка программного комплекса, был выбран интерпретируемый язык программирования Python.
Python является простым и, в то же время, мощным интерпретируемым объектно-ориентированным языком программирования. Он предоставляет структуры данных высокого уровня, имеет лаконичный и гибкий синтаксис и использует динамический контроль типов, что делает его идеальным языком для быстрого написания различных приложений, работающих на большинстве распространенных платформ.
Python — интерпретируемый язык, что позволяет сэкономить значительное количество времени, обычно расходуемого на компиляцию. Этот язык программирования позволяет писать очень компактные и удобочитаемые программы, которые обычно значительно короче эквивалента на C или C++ по причине использования динамической типизации и типов данных высокого уровня, позволяющих выразить сложные операции одной инструкцией.
Python позволяет разбивать программы на модули, которые затем могут быть использованы в других программах. Интерпретатор языка Python поставляется с большой библиотекой стандартных модулей, которые можно использовать как основу для вновь создаваемых программ или в качестве примеров при изучении языка. Стандартные модули предоставляют средства для работы с файлами, системных вызовов, сетевые соединения и даже интерфейсы к различным графическим библиотекам. Также имеются средства использования многопоточности.
Вместе с интерпретатором языка Python используется pip - система управления программными пакетами, написанными на Python. С ее помощью можно устанавливать в системе подключаемые библиотеки для этого языка, необходимые при решении поставленных задач.
Относительная простота подключения дополнительных библиотек позволяет использовать общедоступные инструменты для расширения функциональности своего программного комплекса. К примеру, существуют подключаемые библиотеки для трехмерной графики, рисования карт и т.д.
Простота языка и наличие интерпретатора упрощают разработку программ за счет сокращения времени и облегчения их отладки. Python предоставляет простые средства для чтения из файлов и записи в файлы больших массивов данных, а также облегчает работу с файловой системой.
Функциональное программирование предполагает обходиться вычислением результатов функций от исходных данных и результатов других функций, и не предполагает явного хранения состояния программы. Соответственно, не предполагает оно и изменяемость этого состояния (в отличие от императивного, где одной из базовых концепций является переменная, хранящая свое значение и позволяющая менять его по мере выполнения алгоритма). Придерживаясь технологии функционального программирования, программист способен создавать такие программные продукты, модификация которых не будет требовать значительных затрат.
Использование многопоточности предполагает разбиение больших массивов данных на части и их параллельную обработку для улучшения производительности и ускорения работы программы.
2.2 Разработка программного решения для анализа архивов температур
Для анализа качества прогнозов необходимо рассчитать численные показатели оценок качества. Для решения этой задачи необходимо обработать имеющиеся архивы температур.
На территории Дальнего Востока работают около 300 пунктов наблюдения, записывающих фактические значения приземной температуры в течение суток. Наблюдения проводятся 8 раз в день ежедневно. Для анализа были предоставлены архивы за 2014-2017 гг, следовательно, имеется достаточное количество данных для статистической обработки и расчета оценок качества прогнозов.
Статистическая обработка этих данных вручную представляет сложную задачу, требующую больших затрат времени. Поскольку не существует средства автоматической обработки архивов данного формата, а также ввиду необходимости систематизации полученных результатов, то необходимо создать специализированное программное решение, способное обработать имеющиеся данные и представить результаты в виде таблиц и графиков.
К разрабатываемой программе предъявляются следующие требования:
- программа должна по имеющимся архивам температур рассчитать оценки качества прогнозов отдельно для каждого пункта наблюдения и вывести результаты в форме однотипных таблиц;
- требуемые для расчета оценки: средняя систематическая погрешность
, средняя абсолютная погрешность
, оправдываемость прогнозов
(M = 1, M = 3, M = 5);
- возможность группировки результатов по периодам или сезонам, а также интервалам среднесуточных температур;
- учесть возможность отсутствия по каким-либо причинам данных о фактическом значении температуры;
- для возможности суждения об обеспеченности расчетов каждый набор результатов должен быть сопровожден указанием количества корректных элементов в выборке;
- для каждой таблицы должны быть указаны расположение пункта наблюдения, и исследуемые периоды;
- автоматическая обработка архивов для всех имеющихся пунктов наблюдения. Ввиду наличия большого количества пунктов наблюдения нерационально вручную указывать расположение архива для данного пункта. Автоматический поиск архива избавит пользователя от необходимости перечисления большого списка файлов, а также от лишних затрат времени на коррекцию этого списка, удаление и добавление новых пунктов наблюдения.
Приступим к решению поставленной задачи.
Поскольку архив для каждого пункта наблюдения содержится в отдельных файлах, то для удобства настройки и избегания излишней сложности кода заранее предположим, что в рабочей директории содержатся только файлы архивов. В таком случае исчезает необходимость поиска необходимых файлов, а достаточно только считать все файлы в директории.
Так как архив для одного пункта наблюдения разделен по годам, то для возможности последующего отбора и систематизации данных в первую очередь необходимо найти все части одного архива и соединить в один непрерывный набор данных. Затем из восстановленного архива необходимо исключить некорректные строки, которые не будут учитываться в расчетах.
Поскольку данные были получены лишь один раз и далее изменяться не будут, то выполнять их подготовку к расчетам каждый раз невыгодно: это увеличивает содержание кода в инструментах расчета и увеличивает их время работы. Так, любое незначительное исправление в программе расчета может потребовать повторного соединения и фильтрации всех архивов. Для избегания указанных трудностей первоначальная обработка файлов была вынесена в отдельный инструмент, который используется при получении новых архивов или каком-либо другом использовании исходных данных.
На этом шаге происходит формирование базы данных, необходимой для работы других инструментов. В ней содержатся сведения о прогностических и фактических температурах для всех пунктах наблюдения, предварительно обработанные, исправленные и представленные в удобном для последующих расчетов формате. Помимо этого в базу данных входит дополнительная информация о кодах, названиях и координатах пунктов наблюдения.
Алгоритм работы этого инструмента прост. Изначально архивы наблюдений за определенный год содержатся в директории, название которой содержит номер года. В первую очередь программа выбирает одну из таких директорий. Поскольку известно, что имя файла архива содержит информацию о пункте наблюдения, то составляется список имен файлов, из которого извлекается номер пункта наблюдения. Далее для каждого пункта наблюдения из списка производится поиск его годовых архивов в соответствующих директориях. После этого шага мы получим список пунктов наблюдения и расположение частей архива для каждого пункта.
На следующем шаге алгоритма происходит поочередное открытие и считывание данных из файлов-частей архива. Затем считанные данные записываются поочередно в файл с обработанными данными. Этот файл располагается во вновь созданной директории, содержащей информацию, необходимую для работы инструментов анализа. Результат работы алгоритма на данном шаге – предварительно обработанные архивы значений температур в пунктах наблюдения за все имеющиеся периоды.
На последнем шаге алгоритма каждый архив фильтруется, и из него удаляются некорректные строки - такие, в которых отсутствуют данные о фактической температуре или которые не соответствуют формату архива (например, текстовые заголовки). После выполнения данного шага также формируются вспомогательные файлы: файл со списком номеров пунктов наблюдения и файл со сведениями о пунктах наблюдения, такими как название, координаты, регион пункта наблюдения.
После предварительной обработки данных можно приступать к анализу качества прогнозов. Рассчитаем выбранные в разделе 1.3 оценки точности прогнозов отдельно по каждому пункту наблюдения. Далее представлен алгоритм решения поставленной задачи.
В первую очередь программа отбирает все записи из файла архива, дата которых входит в заданный исследуемый период. Затем записи группируются по суткам. Если архив полный и наблюдения проводились регулярно, то каждой дате будут соответствовать 8 записей, так как наблюдения проводятся 8 раз в сутки. Поскольку нет гарантии, что для каждого пункта наблюдения и каждой даты периода имеются все данные, то из полученного сгруппированного набора исключаются записи, соответствующие датам, для которых не предоставлено 8 записей.
Для возможности группировки по интервалам среднесуточных температур вычисляется среднесуточная температура для каждых суток из оставшихся данных. Если необходимые интервалы указаны, происходит распределение данных по группам, соответствующим этим интервалам.
Для каждой записи вычисляются значения систематической и абсолютной погрешностей по формулам (1) и (2). Затем в пределах каждой группы вычисляются средние значения систематической и абсолютной погрешности, а по формуле подсчитывается число записей, в которых абсолютная погрешность не превышает заданных пороговых значений. В нашем случае это будут значения в 3 и 5 градусов.














