Вопрос о взаимной корреляции Matlab и коэффициенте корреляции

#matlab #analysis #correlation #data-analysis

#matlab #анализ #корреляция #анализ данных

Вопрос:

Я пишу программу на C , но использую данные из matlab, включающие взаимную корреляцию. Я понимаю, что когда я делаю корреляцию для 2 наборов данных, это дает мне одно число коэффициента корреляции, указывающее, связаны ли они. Но я хочу использовать взаимную корреляцию для рядов данных. Когда я запускаю взаимную корреляцию в Matlab, это дает мне много данных, и при построении графика график выглядит как треугольник… Я понимаю, что корреляция должна быть где-то между / — 1, но данные к вершине треугольника не увеличиваются одновременно и т.д. У меня путаница с тем, что дает мне перекрестная корреляция, или данные, которые дает мне перекрестная корреляция, на самом деле являются коэффициентами корреляции для каждой точки s (t), p (t), например? Приветствуется любая помощь в разъяснении.

Правка 1 (после ответа Phonon)

Мой главный вопрос заключается в следующем: являются ли данные, которые я получаю при перекрестной корреляции 2 рядов данных, коэффициентом корреляции для каждой точки. Например, (0,10) и (0,8); Являются ли данные, которые я получаю, коэффициентом корреляции этих двух графиков при x = 0?

Комментарии:

1. Как вы вычисляете корреляцию?

2. xcorr но мой главный вопрос заключается в том, какие данные я получаю, когда я сопоставляю 2 ряда данных с коэффициентом корреляции для каждой точки. Например, (0,10) и (0,8); Являются ли данные, которые я получаю, коэффициентом корреляции этих двух графиков при x = 0?

Ответ №1:

В Matlab xcorr(x,x) выдает автоматическую корреляцию сигнала x. Он не масштабируется, это просто вектор внутренних произведений сигнала со сдвинутыми версиями самого себя. Чтобы масштабировать его, используйте xcorr(x,x,'coeff') . Эта команда масштабирует вашу автокорреляцию по энергии сигнала (другими словами, она разделит каждый коэффициент на значение коэффициента с нулевым запаздыванием). Обратите внимание, что когда вы выполняете взаимную корреляцию, xcorr(x,y'coeff') вы не получите значение 1 и нулевую задержку, потому что масштабирование выполняется по-другому. Это будет только 1, если вы соотносите сигнал с самим собой (я бы хотел, чтобы ТАК поддерживались математические формулы, чтобы я мог записать это для вас).

Комментарии:

1. Это имеет смысл, но мне нужна взаимная корреляция для 2 наборов данных, а не автокорреляция, которая является перекрестной корреляцией для одного набора данных и самой себя или чего-то еще

2. Используйте 'coeff' , это позволит масштабировать данные. Все, что я пытался сказать, это то, что вы получите ровно 1 при нулевой задержке, только если вы сопоставите сигнал с самим собой.

3. Phonon Вы поняли мой пересмотренный вопрос выше и ваш ответ все еще применим?

4. Я не думаю, что я это хорошо понимаю. Это практически не поддается расшифровке.

5. Коэффициенты корреляции не вычисляются для каждой точки. Они рассчитываются для каждого сдвига единицы измерения.

Ответ №2:

Вы, вероятно, хотите corrcoef , не xcorr .

Комментарии:

1. @Tyler31: Непонятно, что вы имеете в виду. В общем случае коэффициент корреляции — это единственное значение для двух наборов данных, описывающее, существует ли линейная взаимосвязь между ними. Неясно, что означало бы «выполнение corrcoeff для каждой точки».

Ответ №3:

Чтобы прояснить несколько концепций.

  1. Взаимная корреляция и взаимная ковариация. Основное отличие заключается в том, что перекрестная ковариация нормализует данные путем вычитания среднего значения.

  2. перекрестная ковариация против нормализованной перекрестной ковариации. Более поздний разделен на стандартное отклонение входных данных.

  3. нормализованная взаимная ковариация и коэффициент корреляции. Более поздний вариант является частным случаем первого при delay = 0.