я получил два N-мерных ряда точек, каждая из которых имеет длину M .. цель состоит в том, чтобы сопоставить их и вычислить коэффициент корреляции .. используя формулы для дисперсии, ковариации и стандартного отклонения, можно рассчитать коэффициент корреляции ..
что я не понимаю, так это как адаптировать алгоритм для учета всех N измерений, а не только одного ... рассмотрим следующее ..
series A = [0, 0] [1, 1] [2, 2] [3, 3]
series B = [0, 0] [1, -1] [2, -2] [3, -3]
если мы используем только первое измерение для корреляции, мы получим +1,00 .. если мы используем второе, мы получим -1,00 ... но мы можем видеть, что если мы рассмотрим оба измерения для корреляции, ответ не будет таким простым, как +1.00 или -1.00 ..
так что я хочу знать, как сформулировать этот тип многомерной корреляции, предпочтительно в c # ..
Не стесняйтесь просить дальнейших разъяснений или редактировать, чтобы улучшить публикацию .. =)
РЕДАКТИРОВАТЬ: серии, которые я использую, являются временными рядами запаса. Я получаю последние М выборок цен ЗАКРЫТЬ в виде серии А и начинаю сопоставлять их со всеми историческими данными в виде скользящего окна (данные [1] - данные [М + 1 ], данные [2] - данные [M + 2], данные [1000] - данные [M + 1000] и т. д.) .. смещение, где корреляция является наибольшей, является моментом времени, когда поведение цены было почти идентично текущему моменту .. проанализировав, если цена поднялась или опустилась после этого момента времени, мы можем сделать прогноз, каким образом цена может совершить движение в этот момент времени ... но я не использую только ЗАКРЫТЬ цены (1-измерение) ... я хочу определить регионы, в которых число метрик было схожим, например, ЗАКРЫТЬ, ОБЪЕМ и т. д., поэтому временной ряд имеет не одно значение для каждого индекса, а целый массив значений.
если я использую только ЗАКРЫТЬ в корреляции, я не могу гарантировать, что последовательность VOLUME этих рядов также будет аналогичной. Аналогично, если я использую VOLUME в корреляции, я не могу гарантировать, что последовательность CLOSE этих рядов также будет аналогичной. поэтому мне нужна формула для нормализованной корреляции, которая основана на некоторой метрике расстояния ... что-то вроде ^ 2 + b ^ 2 .. если значения ЗАКРЫТЫ одинаковы, то ^ 2 будет небольшим .. если значения VOLUME похожи, b ^ 2 будет маленьким .. теперь, если a ^ 2 + b ^ 2 маленькое, это означает, что и CLOSE и VOLUME похожи ..
Ранее я делал следующее:
1. используйте ЗАКРЫТЬ цены для расчета корреляции.
2. используйте VOLUME для расчета корреляции.
3. умножить эти значения вместе .. это обеспечит, что высокие значения корреляции будут означать, что как ЗАКРЫТЬ, так и ОБЪЕМ имеют сильные индивидуальные корреляции.
EDIT:
stdDevX = Sqrt (Summation ((x - Mean(x)) * (x - Mean(x)) / N)
stdDevY = Sqrt (Summation ((y - Mean(y)) * (y - Mean(y)) / N)
corrXY = Summation ((x - Mean(x) * (y - Mean(y)) / (stdDevX * stdDevY)) / (N - 1)
http://en.wikipedia.org/wiki/Standard_deviation
http://en.wikipedia.org/wiki/Pearson_product-moment_correlation_coefficient
Приведенные выше формулы предполагают, что оба ряда x и y являются одномерными. Моя главная задача состоит в том, как адаптировать эти формулы для многомерных векторов. Я хочу использовать его, чтобы найти регионы, в которых все ценовые метрики похожи в история ... но она может использоваться любым, кто желает сопоставить любые типы вершин .. x, y, z координаты объекта и т. д ..