Как сделать ресамплинг

Обновлено: 06.07.2024

Я пытаюсь найти способ пересчитать данные временного ряда по месяцам в r.

это можно сделать с помощью повторной выборки фрейма данных в Python. Есть ли способ сделать то же самое в R?

Фрейм исходных данных

Следует изменить на

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

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

Tumuluri V Datta Vamshi

Я использовал термин передискретизация, потому что мы можем добиться того же, используя метод resample () в Python.

Chto takoye resempling

Цифровое аудио всегда сэмплируется, это означает, что любой цифровой аудиофайл создается с фиксированной частотой дискретизации (и разрешением). Частота дискретизации Red Book Audio CD составляет 44,1 кГц (16-битное разрешение). Аудио на DVD сэмплируется с частотой 96 кГц (24-битное разрешение). Преобразование частоты дискретизации необходимо, когда требуется преобразовать цифровой аудиофайл (аналоговый сигнал, который уже был оцифрован) из заданной частоты дискретизации в другую частоту (разрешение может остаться неизменным или измениться). Повышение частоты дискретизации (или интерполяция) — это процесс преобразования с низкой в более высокую (например, с 44,1 кГц до 48 кГц); понижающая дискретизация (также известная как прореживание) — это процесс преобразования с высокой частоты на более низкую (например, с 96 кГц до 48 кГц). Важно заметить: наша студия выполняет сведение и мастеринг на частоте 96кГц, потому прореживание используется для предоставления дополнительных форматов, предназначенных для распространения в социальных сетях и на стримминговых сервисах .

Изменения в битовой глубине, например от 16-битного до 24-битного или обратно может выполняться одновременно с повторной дискретизацией, но следует позаботиться о том, чтобы избежать смешения двух принципов. Низкокачественные алгоритмы повторной дискретизации, будь то повышающая или понижающая выборка, могут вносить артефакты, которые отчетливо слышны при воспроизведении. Типичный некачественный, но чрезвычайно быстрый алгоритм будет основан на линейной интерполяции. Высококачественные алгоритмы передискретизации используют больше процессорного времени, поскольку они требуют преобразования в частотную область. Современные процессоры ПК (тактовая частота ~ 2 ГГц) легко справляются с очень качественной передискретизацией в реальном времени. Звуковые карты, которые выполняют ресэмплинг в реальном времени, требуют хорошего DSP.

Очень часто требуется передискретизация, которая фактически является частью процесса мастеринга аудио для компакт-дисков, поскольку профессиональное аудиооборудование использует 96 кГц или 192 кГц для мастеров, тогда как в спецификации Red Book Audio CD используется частота дискретизации 44,1 кГц. Различные носители записываются с разной частотой дискретизации (CD на 44,1 кГц, DAT на 48 кГц, DVD-аудио на 96 кГц и т.д.). Цифровое микширование различных источников, отобранных с разной скоростью, потребует повторной выборки до общей скорости и разрешения.

Многие аудиокарты для ПК (в частности, кодеки Creative Labs на базе 10k1 и 10k2) и кодеки AC97 могут только вводить, выводить или обрабатывать аудиоданные на частоте 48 кГц и принудительно пересчитывать информацию на том или ином этапе. Иногда звуковое программное обеспечение, плагины и драйверы добавляют возможность пересемплирования, что позволяет получить более чистый звук (на разных уровнях алгоритмы продуктов могут показывать себя по-разному). Например: один и тот же синтезатор, на различных уровнях ресемплирования может давать различные оттенки одного и того же сигнала.

Как сделать resampling данных в еженедельные со значениями суммы по столбцам TotalCost?

Почему в задании специально указан столбец TotalCost? Разве resampling не по всем данным делается равномерно?



1 ответ 1

После ресемплинга обычно применяется агрегирующая функция:

Как бороться с NaN:


Quantity UnitPrice CustomerID TotalCost InvoiceDate 2010-12-06 7.165954 4.022677 15636.376412 16.809830 2010-12-13 7.647035 9.269148 15560.060500 16.794917 2010-12-20 9.673254 4.412251 15333.703230 18.484338 2010-12-27 8.558803 6.428859 15273.918347 22.897472 **2011-01-03 NaN NaN NaN NaN**


Иллюстрация эффекта наложения спектров при децимации изображения. Сверху — исходное изображение. Слева снизу — уменьшенное в два раза с фильтрацией. Справа снизу — уменьшенное в два раза без фильтрации (с наложением спектров).

Передискретиза́ция (англ. resampling ) в обработке сигналов — изменение частоты дискретизации дискретного (чаще всего цифрового) сигнала. Алгоритмы передискретизации широко применяются при обработке звуковых сигналов, радиосигналов и изображений.

В англоязычной литературе применяются также термины downsampling для обозначения понижения частоты дискретизации и upsampling для её повышения.

Понятие передискретизации не следует смешивать с процедурой дискретизации сигнала с запасом по частоте дискретизации (англ. oversampling ).

Содержание

Общие принципы

Вычисление промежуточного отсчёта дискретного сигнала с помощью идеального фильтра нижних частот. Синия кривая — исходный непрерывный сигнал, зелёная — импульсная характеристика идеального ФНЧ.

Согласно теореме Котельникова любой непрерывный сигнал с финитным спектром (то есть таким спектром, что спектральные составляющие, соответствующие частотам выше некоторой частоты f0 , отсутствуют) может быть представлен в виде отсчётов дискретного сигнала с частотой дискретизации fd > 2f0 . При этом такое преобразование является взаимно однозначным, то есть при соблюдении условий теоремы Котельникова по дискретному сигналу можно восстановить исходный сигнал с финитным спектром без искажений.

При передискретизации отсчёты сигнала, соответствующие одной частоте дискретизации, вычисляются по имеющимся отсчётам этого же сигнала, соответствующим другой частоте дискретизации (при этом предполагается, что обе частоты дискретизации соответствуют условиям теоремы Котельникова). Идеальная передискретизация эквивалентна восстановлению непрерывного сигнала по его отсчётам с последующей дискретизацией его на новой частоте.

Точное вычисление значения исходного непрерывного сигнала в определённой точке производится следующим образом:

\,\!s(t)=\sum_i s(t_i) \frac<\sin \omega_d(t-t_i)></p>
<p><\omega_d(t-t_i)>,

где s(ti) — i-й отсчёт сигнала, ti — момент времени, соответствующий этому отсчёту, s(t) — интерполированное значение сигнала в момент времени t .

\frac<\sin \omega_d(t-t_i)></p>
<p>Сложность практического применения этого выражения заключается в том, что функция <\omega_d(t-t_i)>
не является финитной, поэтому для вычисления значения сигнала в определённый момент времени необходимо обработать бесконечное число его отсчётов (как в прошлом, так и в будущем). В реальной жизни интерполяция осуществляется с помощью других фильтров, при этом выражение для неё принимает следующий вид:

\,\!s(t)=\sum_i s(t_i) h(t-t_i),

где h(t) — импульсная характеристика соответствующего восстанавливающего фильтра. Вид этого фильтра выбирается в зависимости от задачи.

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

  • децимация — уменьшение частоты дискретизации в целое число раз;
  • интерполяция в узком смысле — увеличение частоты дискретизации в целое число раз.

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

Передискретизация с помощью цифровых фильтров

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

Иллюстрация алгоритма интерполяции дискретного сигнала (с коэффициентом 2). Красные точки обозначают исходные отсчеты сигнала, сплошные линии — непрерывный сигнал, представлением которого эти отсчеты являются. Сверху — исходный сигнал. В середине — этот же сигнал со вставленными нулевыми отсчётами (зеленые точки). Снизу — интерполированный сигнал (синие точки — интерполированные значения отсчётов).

Децимация

Децимацией называют уменьшение частоты дискретизации в целое число раз (далее N ). Децимация цифрового сигнала производится в два этапа:

    сигнала с целью удаления высокочастотных составляющих, не удовлетворяющих условиям теоремы Котельникова для новой частоты дискретизации;
  1. Удаление (отбрасывание) лишних отсчетов (сохраняется каждый N -й отсчёт).

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

Интерполяция

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

Стандартный алгоритм интерполяции заключается в следующем:

  • вставка нулевых отсчетов на место отсчетов, которые необходимо вычислить;
  • фильтрация сигнала цифровым фильтром нижних частот для того, чтобы убрать спектральные составляющие сигнала, которых заведомо не могло быть в исходном сигнале согласно теореме Котельникова.

Точность этого метода ограничивается невозможностью реализации фильтра нижних частот с идеально прямоугольной частотной характеристикой.

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

Комбинация интерполяции и децимации

\frac<M></p>
<p>Для того, чтобы изменить частоту дискретизации сигнала в
раз ( M и N — целые положительные числа), можно сначала провести интерполяцию, увеличив частоту дискретизации в M раз, а затем с помощью децимации уменьшить её в N раз. Фильтрацию сигнала достаточно произвести всего один раз — между интерполяцией и децимацией.

Недостатком данного метода является необходимость фильтрации сигнала на повышенной в M раз частоте дискретизации, что требует значительных вычислительных ресурсов. При этом соответствующая частота может во много раз превосходить как исходную, так и окончательную частоту передискретизации, особенно если M и N — близкие большие числа. Так, например, при передискретизации звукового сигнала с 44100 Гц до 48000 Гц этим методом необходимо увеличить частоту дискретизации в 160 раз до 7056000 Гц и затем уменьшить её в 147 раз до 48000 Гц. Таким образом, в данном примере вычисления приходится производить на частоте дискретизации более 7 МГц.

Передискретизация с помощью полифазных фильтров

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

Передискретизация с помощью дискретного преобразования Фурье

Передискретизация с помощью ДПФ используется для повышения частоты дискретизации в целое или дробное число раз. Алгоритм работает только с конечными отрезками сигнала. Пусть N - начальное число отсчётов, M - число отсчётов в передискретизованном сигнале. Алгоритм включает в себя следующие операции:

1. Вычисляется ДПФ исходного сигнала (чаще всего по алгоритму быстрого преобразования Фурье).

2. В середину спектра вставляется необходимое число нулевых компонент:

2.1. если N нечётное: y_i=x_i &amp; 1 \le i \le \frac \\ y_i=0 &amp; \frac+1 \le i \le \frac+M-N\\ y_=x_ &amp; \frac+M-N+1 \le i \le M \end " width="" height="" />
2.2. если N чётное y_i=x_i &amp; 1 \le i \le \frac \\ y_i=\frac> &amp; i=\frac+1 \\ y_=0 &amp; \frac+2 \le i \le \frac+M-N \\ y_i=\frac> &amp; i=\frac+M-N+1 \\ y_i=x_ &amp; \frac+M-N+2 \le i \le M \end " width="" height="" />

3. Вычисляется обратное ДПФ.

Ограничением этого метода является то, что, как и любой метод, основанный на ДПФ, он даёт точный результат только для периодического дискретного сигнала. Для обработки непериодических сигналов необходимо применять оконные функции и выбирать отрезки сигнала для вычисления ДПФ таким образом, чтобы их концы перекрывались.

Применения

Широко применяется как аппаратная (на основе специализированных микросхем или FPGA), так и программная (на базе процессоров общего назначения или сигнальных процессоров) реализация алгоритмов передискретизации.

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

На практике передискретизация в большинстве случаев ведёт к потере информации о сигнале по следующим причинам:

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

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

При обработке звука

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

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

Существуют программные передискретизаторы звуковых сигналов с открытым исходным кодом:

  • SRC (Secret Rabbit Code) или libsamplerate [1] — существует плагин для [2] — существуют плагины для foobar2000.

Также передискретизация поддерживается программами-редакторами звука.

При обработке изображений

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

Типичные артефакты при изменении разрешения изображения:

  • Пикселизация (англ.blocking );
  • Звон (англ.ringing ); (англ.aliasing );
  • Размытие (англ.blurring ).

Для передискретизации изображений применяется большое число фильтров, которые можно классифицировать следующим образом [3] :

  1. Фильтры интерполяционного типа, обладающие сравнительно узкой импульсной характеристикой. К ним относятся, в частности, треугольный фильтр, производящий билинейную интерполяцию и полином Лагранжа, с помощью которого можно реализовать бикубическую интерполяцию. Применение таких фильтров позволяет осуществить передискретизацию изображения достаточно быстро.
  2. Фильтры с колоколообразной характеристикой, такие как фильтр Гаусса. Эти фильтры хорошо справляются с пикселизацией, звоном и алиасингом, а также отфильтровывают высокочастотные шумы. Их недостаток — заметное размытие изображения.
  3. Оконные sinc-фильтры. Sinc-фильтр — это идеальный фильтр нижних частот. Как говорилось выше, он не может быть реализован. Однако если частотную характеристику sinc-фильтра умножить на оконную функцию, получится реализуемый фильтр с хорошими спектральными свойствами. При применении данных фильтров к изображениям удаётся сохранить относительно высокую чёткость (даже при увеличении разрешения), но может быть сильно заметен эффект звона. Одним из наиболее часто применяемых фильтров данного типа является фильтр Ланцоша.

При обработке радиосигналов

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

Читайте также: