Обнаружение сигнала на основе языка R

Содержание

Задание на курсовую работу…………………………………………………3

Введение………………………………………………………………….…….4

Раздел 1.  Основы языка  R……………………………………………..…….6

Раздел 2. Обнаружение сигнала……………………………………………..13

Приложение 1

Приложение 2

Литература

 

 

Задание на курсовую работу:

  1. Изучить язык программирования R.
  2. Исследовать алгоритмы обнаружения сигнала

 

Введение

 

 

Обнаружение полезных сигналов на фоне шума и помех является одной  из основных проблем обработки сигналов во многих информационных системах. Задача обнаружения обычно решается на первой стадией приема сигналов в радиолокационных, гидроакустических и радиосвязных системах. В простой (двухальтернативной) постановке задача обнаружения сводится к принятию решения о наличии или отсутствии полезного сигнала в наблюдённой реализации входного процесса.

Если статистические характеристики полезного сигнала и действующих  шумов и помех априорно (до проведения измерений) известны, то решение задачи оптимального обнаружения в соответствии с наиболее распространенными критериями оптимальности (идеального наблюдателя, Неймана-Пирсона, максимума правдоподобия  и др.) сводится к нахождению отношения  правдоподобия и сравнению его  величины для наблюдённой реализации с некоторым пороговым значением. Однако подобный классический подход к обнаружению не удается осуществить при рассмотрении большинства практически интересных задач обработки сигналов. Основной причиной невозможности прямого применения метода отношения правдоподобия является недостаточное количество имеющейся априорной информации о полезном сигнале и действующих шумах. Существует несколько подходов к преодолению указанной трудности. Среди них мы выделим два основных метода:

1.Метод усредненного отношения  правдоподобия. В этом методе, для решения задачи обнаружения используется отношение правдоподобия, дополнительно усредненное по априорному распределению неизвестных параметров. В качестве приближенных априорных плотностей вероятности неизвестных параметров в этом случае часто используются равномерные распределения в ожидаемом интервале изменения параметров или другие достаточно "широкие" плотности вероятности. В радиотехнике этот метод применяется по отношению к таким параметрам, как амплитуда и время появления радиоимпульса, а также другим параметрам, которые на этапе обнаружения рассматриваются как неинформативные. Например, неинформативными параметрами на этом этапе обнаружения, характеризующими цель, могут являться размер, форма, отражающая поверхность, а характеризующими характер ее движения - скорость, дальность, ускорение.

Следует однако отметить, что применение метода усредненного отношения правдоподобия, во-первых, требует априорного знания функций распределения неизвестных параметров полезного сигнала (или шума) и, во-вторых, фактически приводит к оптимальному решению "в среднем" для всех возможных реализаций полезного сигнала.

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

2. Метод обобщенного отношения  правдоподобия. При использовании  этого метода по имеющимся  наблюдениям предварительно отыскиваются  максимально правдоподобные оценки  всех или части неизвестных  параметров сигналов и шумов  и эти оценки подставляются  в отношение правдоподобия в  качестве "истинных" значений  неизвестных параметров. После этого задача сводится к классической задаче обнаружения или различения детерминированных сигналов, в которых вместо истинных значений сопутствующих параметров фигурируют их оценки. Этот метод наиболее эффективен в том случае, когда по принятой реализации можно получить достаточно хорошую оценку неизвестного параметра (то есть в случае большого отношения сигнал/шум или большого объема выборки). Решающие статистики, получаемые на основе обобщенного отношения правдоподобия, мы будем для краткости называть GLR (Generalized Likelihood Ratio) статистиками.

Можно строго доказать, что при  большом отношении сигнал/шум  и/или при большом объеме выборки (в случае длинных реализаций наблюдаемого процесса) метод обобщенного отношения  правдоподобия является асимптотически оптимальным. В настоящее время  достаточно хорошо разработаны асимптотические  аналитические методы вычисления пороговых  значений GLR статистик. Для коротких выборок и малых отношений  сигнал/шум аналитические методы нахождения пороговых значений GLR статистик  отсутствуют и сам вопрос об эффективности  метода обобщенного отношения правдоподобия  остается открытым.

 

 

 

РАЗДЕЛ 1. ОСНОВЫ ЯЗЫКА R

 

 

 

    1. Что из себя представляет пакет R

 

 

R — язык программирования для статистической обработки данных и работы с графикой, а также свободная программная среда вычислений с открытым исходным кодом в рамках проекта GNU. Язык создавался как аналогичный языку S, разработанному в Bell Labs и является его альтернативной реализацией, хотя между языками есть существенные отличия, но в большинстве своём код на языке S работает для среды R. Изначально R был разработан сотрудниками статистического факультета Оклендского университета Россом Айхэкой (англ. Ross Ihaka) и Робертом Джентлменом (англ. Robert Gentleman) (первая буква их имён — R), на момент 2011 года язык и среда поддерживаются и развиваются организацией R Foundation.

R широко используется  для статистического программного  обеспечения и анализа данных  и фактически стал стандартом  для статистических программ.

R доступен под лицензией  GNU GPL. Распространяется в виде  исходных кодов, а также откомпилированных  приложений под ряд операционных  систем: некоторые дистрибутивы Linux, FreeBSD, Microsoft Windows, Solaris, Mac OS X и некоторые другие Unix.

В R используется интерфейс  командной строки, хотя доступны и  несколько графических интерфейсов  пользователя.

R поддерживает широкий  спектр статистических и численных  методов и обладает хорошей  расширяемостью с помощью пакетов.  Пакеты представляют собой библиотеки  для работы специфических функций  или специальных областей применения. В базовую поставку R включен основной  набор пакетов, а всего по  состоянию на 2006 год доступно  более 800 пакетов.

Ещё одной особенностью R являются графические возможности, заключающиеся в возможности  создания качественной графики, которая  может включать математические символы.

 

 

1.2 «Плюсы» и «Минусы» R

 

 

Перечислим достоинства и недостатки пакета R.

«Плюсы»:

 

– R является свободно распространяемым  программным обеспечением (ПО), каждый может его бесплатно скачать с сайта http://www.r- project.org;

 

– достаточно просто устанавливается под Windows, MacOS X, Linux;

 

– базовая комплектация R занимает немного  места на жёстком диске и включает в себя все функции, необходимые для статистического анализа;

– для более серьёзной работы всегда можно дополнительно установить вспомогательные пакеты с необходимыми функциями;

 

– на данный момент разработаны пакеты, применимые практически во в всех областях знания, где используется статистика;

 

– можно работать с большими массивами данных (несколько сотен тысяч наблюдений);

 

– встроенная система помощи и подсказок;

 

– хорошие графические возможности представления результатов исследо- ваний;

 

– возможность самостоятельного написания необходимых функций;

 

– много свободной литературы по R.

 

Недостатки:

– в отличие от большинства коммерческих программ R имеет не графиче- ский интерфейс, а интерфейс командной строки, таким образом нужно знать необходимые для работы функции и синтаксис языка программи- рования;

 

– нет коммерческой поддержки (но есть международная система рассылки сообщений об обновлениях);

 

– довольно мало литературы по R на русском языке (в основном литера- тура на английском), но при желании можно найти в Интернете.

 

 

    1. Объекты и типы данных языка R

 

 

Каждый язык программирования предполагает наличие одного или  нескольких типов данных. Тип данных характеризует некоторое множество  значений и операции, которые можно  применять к этим значениям. Любые  данные, используемые в программе, относятся  к тому или иному типу. Так, например, строковый тип предполагает, что  объект содержит произвольное количество любых символов. Операции применимые к строкам - это объединение, разбиение, замена символов, но никак не арифметические вычисления.

Все манипуляции с данными  в языке R основаны на векторах. Вектор представляет собой структуру, содержащую последовательность значений одного типа. На первый взгляд, может показаться странным такой подход к программированию, однако на практике он оказывается  очень удобным. Если же возникает  необходимость использования в  программе скаляров, то их можно  заменить единичными векторами, т. е. векторами содержащими только одно значение.

Элементы вектора могут  принадлежать к одному из типов данных, определенных в языке R:

  • numeric - числовой тип, который включает в себя как целые числа, так и дроби;
  • integer - целочисленный тип;
  • character - символьный тип данных, каждый элемент в таком векторе является последовательностью из одного или более символов. Следует отметить, что совокупность элементов символьного вектора не является единой строкой;
  • complex - комплексный тип;
  • logical - логический тип, принимает значения TRUE или FALSE.

Numeric

Объекты этого типа могут содержать  только числа. Эквивалентные обозначения: double или real, последнее существует только для сохранения обратной совместимости  со старым кодом. Таким образом, в  языке R имеют место три варианта обозначения векторов, содержащих числа  с плавающей точкой. Очевидно, что  объекты данного типа созданы  для выполнения математических операций. Проверка на принадлежность переменной типу numeric выполняется функцией is.numeric()

Integer

Этот тип создан для того, чтобы  обеспечивать совместимость с кодом, на языках C или Fortran таким образом, чтобы  представить целочисленные данные наиболее компактно. Следует отметить, что в актуальной на сегодня реализации R используется 32-битный тип integer, разброс  значений которого ограничен +/- 2*10^9. В свою очередь, объекты типа double могут вмещать целые числа из более широкого диапазона. Чтобы убедиться, что некоторый вектор содержит целые числа можно использовать функцию is.inetger().

Character

Тип данных character создан для выполнения операций с символами. Символом может  быть что угодно: буквы алфавита, доступные в той или иной кодировке, цифры, а так же любой другой символ, который пользователь сможет найти  на своей клавиатуре. Понятно, что  со строковыми векторами невозможно проводить никаких вычислений, даже если в них содержатся цифры. В  языке R есть предопределенные константы 'letters' и 'LETTERS' которые содержат соответственно строчные и прописные буквы английского  алфавита.

В тех случаях, когда с цифрами, содержащимися в строковых векторах необходимо провести вычисления их следует преобразовать в числовой тип функциями as.integer() или as.numeric(). Соответственно, если мы хотим преобразовать число в строку, то используется функция as.character(), а для выяснения типа переменной - is.character().

Complex

Комплексные векторы содержат комплексные  числа. Больше об этом типе данных мне  сказать нечего.

Logical

Логические переменные могут принимать  только два значения TRUE (истина) и FALSE (ложь). TRUE и FALSE - зарезервированные слова языка R, обозначающие логические константы. Эти обозначения в программном коде можно заменять символами 'T' и 'F'. Если попытаться конвертировать логический вектор в вектор типа integer, то в результате все значения TRUE будут заменены на 1, а FALSE - на 0.

Объекты языка R

 

Вектор является объектом языка R и, как уже было сказано, может содержать  компоненты только одного типа, а так  же NA-значения, т. е. пропущенные значения, которые могут быть в векторе любого типа. Однако в R есть и другие объекты: матрицы, списки, таблицы, функции, факторы. Тем не менее, в основе всех этих типов объектов лежит базовый объект - вектор.

Каждый объект имеет ряд атрибутов, характеризующих его свойства. Основные атрибуты это тип объекта и  его длина. Под типом объекта  понимается тот тип данных, к которому принадлежат его компоненты. Например, вектор, содержащий числовые значения типа numeric, является объектом типа numeric. В свою очередь длина объекта - это количество элементов, которые он содержит. Для определения типа и длины объектов используются функции mode() и length() соответственно. Функция length() позволяет еще и задавать размер объекта, так строка length(x) <- 3 задает вектору x размер в три единицы. Если ранее в векторе x было более трех компонентов, то данное действие удалит все остальные значения, если же длина вектора была менее трех, то функция добавит недостающее количество NA-значений. Следует отметить, что даже пустой вектор принадлежит определенному типу, так пустой символьный вектор обозначается character(0).

Оба описанных атрибута называют внутренними  свойствами объекта. Для того, чтобы  получить все остальные, если они  есть, необходимо использовать функцию attributes(). В том случае, когда мы хотим получить определенные атрибуты объекта не являющиеся внутренними  используется функция attr().

Классы  объектов

 

 

Один из атрибутов любого объекта - это класс. Принадлежность к тому или иному классу определяет способ представления данных пользователю, а также их обработку некоторыми функциями. Данный атрибут является символьным вектором, содержащим список классов, к которым относится данный объект. Пользователь может изменять значения этого вектора без каких-либо ограничений, при этом проверка на соответствие содержания этого атрибута и фактической принадлежность объекта некоторому классу не производится. Другими словами, можно задать любое, даже ничего не значащее, строковое значение атрибуту class через функцию class(). Следовательно, пользоваться этой возможностью следует крайне осторожно.

 

 

 

Матрицы

 

Матрица - это вектор, представленный в виде двумерного массива. Следовательно, как и вектор, матрица может содержать значения только одного типа данных. Для создания матрицы можно использовать функции matrix() или array(), указав в качестве аргумента исходный вектор, а также размерность массива для array() либо количество столбцов и строк для matrix().

Факторы

 

 

Фактор – это специальный тип объектов, предназначенный для работы с категориальными или порядковыми данными. Категориальные данные, или данные измеренные в номинальной шкале, не имеют количественного выражения. Примером таких значений могут быть названия городов или имена людей. Порядковые переменные отличаются от категориальных тем, что позволяют упорядочивать объекты. Типичный пример порядковой или ординальной переменной – уровень доходов человека: низкий, средний, высокий. Очевидно, что низкий ниже среднего, а средний ниже высокого. Однако величину различий порядковая шкала измерений, как и номинальная, установить не позволяет.

Объект класса factor можно получить из числового или строкового вектора  с помощью функции factor(). Следует  иметь в виду, что числовые векторы  данная функция преобразует в  строку, поэтому выполнение каких-либо арифметических действий с факторами  полученными из чисел невозможно, что соответствует требованиям  к данным, выраженным в качественной шкале измерений.

Может показаться, что факторы – это излишество, поскольку в R уже есть тип строковых данных character. Тем не менее, это не так. Объекты данного класса позволяют эффективно использовать категориальные и порядковые переменные. В отличие от строковых векторов, эти объекты имеют два аттрибута: levels и class. Аттрибут class содержит название класса factor, а levels – уровни фактора. Уровни фактора – это все уникальные значения переменной.

Списки

 

Список (list) – это класс, позволяющий хранить в одной переменной объекты одного или разных типов, в том числе и другие списки. Объекты, входящие в список, могут быть не только разных типов, но и разного размера.

Таблицы данных

 

Таблица данных (data.frame) – класс позволяющий представлять данные в табличном виде. Таблица представляет собой набор векторов одинаковой длины, где каждый вектор – это столбец таблицы. Столбцы могут содержать данные разных типов, но в пределах одного столбца допустимы только однотипные значения. По сути, таблица данных – это модифицированный список, в котором каждый элемент представлен в виде столбца таблицы, и все элементы одинаковой длины.

Функции

 

В языке R функции – это объекты, принадлежащие классу function. Создавая собственные функции пользователь может значительно облегчить свою работу. Следует отметить, что большинство функций, используемых в языке R на нем же и написаны.

 

РАЗДЕЛ 2. ОПТИМАЛЬНОЕ ОБНАРУЖЕНИЕ ПОЛНОСТЬЮ ИЗВЕСТНОГО СИГНАЛА

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

Выберем решающую функцию так, чтобы  весовая разность была бы максимальна. Так как , а

где и - плотности вероятности шума и смеси сигнала с шумом, то

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

Таким образом, оптимальный алгоритм принятия решения приемником сводится к вычислению отношения правдоподобия  и сравнения его с порогом .

Например, для белого гауссовского шума на интервале плотность вероятности равна

где - спектральная плотность мощности белого шума. Т.к. , то

и

Отношение правдоподобия 

Т.к. - энергия сигнала, выделяемая в сопротивлении 1 Ом, а - значение взаимной корреляционной функции сигнала с шумом при , то можно записать

Таким образом, алгоритмы обнаружения  полностью известного сигнала на фоне белого гауссовского шума таковы:

,

или

или

и, следовательно, схема оптимального приемника должна состоять из устройства, вычисляющего взаимную корреляционную функцию (ВКУ), и порогового устройства (ПУ). Эта схема показана на рис.1.

   Рис. 1. Структурная схема оптимального приемника.

 

 

ПРИЛОЖЕНИЕ 1

 

Текст программы

 

hits <- rbinom(100,25,.6)

fa <- rbinom(100,25,.2)

miss <- rbinom(100,25,.4)

cr <- rbinom(100,25,.7)

sdtout <- sdt(hits,fa,miss,cr)

sdtout[1:3,]

sdt(hits,fa,miss,cr,meas=c("d","A"))

sdt(hits,fa,miss,cr,meas=c("d","A"),flat=.5)

HC <- function(hits,fas,misses,cr)

   return((hits+cr-fas-misses)/(hits+cr+fas+misses))

HCsqrt <- function(hits,fas,misses,cr)

   return(sqrt((hits+cr-fas-misses)/(hits+cr+fas+misses)))

HCstats <- sdt(hits,fa,miss,cr, meas={},newst=c(HC,HCsqrt))

HCstats[1:3,]

sdt(hits,fa,miss,cr, meas=c("d","A"), pmeans=TRUE)

sdt(hits,fa,miss,cr,meas=c("d","A"), pmeans=TRUE,trim=.2)

sdt(hits,fa,miss,cr, meas=c("A"),pmeans=TRUE,trim=.2,runboot=TRUE,confl=.90)

 

Результаты:

>sdtout[1:3,]

 

HR                              

FAR

d

csdt

A

B

lnbeta

1

0.63333

0.217391

1.121728

0.220169

0.797058

0.154316

0.246970

2

0.548387

0.310344

0.616460

0.1866428

0.694809

0.0728363

0.11505

3

0.708333

0.230769

1.284838

0.0938968

0.823760

0.0757134

0.120642


 

 

beta                                    

OR 

lnOR 

kappa

phi

Q   

eta 

PC

1

1.28014

6.21818

1.82747

0.40365

0.41414

0.72292

0.401022

0.698113

2

1.12193

2.69841

0.99266

0.23672

0.24005

0.45922

0.608759

0.616666

3

1.12822

8.09523

2.09127

0.47833

0.47871

0.78010

0.351467

0.740000


 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ 2

 

Список использованной литературы

  1. Зарядов И.С. Введение в статистический пакет R: типы переменных, структура данных, чтение и запись информации, графика. Москва, 2010 год.
  2. Шипунов А.Б., Волкова П.А. Статистическая обработка данных в учебно-исследовательских работах. Москва, 2008 год.
  3. Шипунов А.Б. Справочная карта по R.
  4. http://r-analytics.blogspot.com/
  5. http://vkontakte.ru/club8142131
  6. http://cran.r-project.org/
  7. http://rss.acs.unt.edu/Rdoc/library/signal/html/00Index.html

 


Обнаружение сигнала на основе языка R