В чем сложность вычисления коэффициента ранговой корреляции Спирмена?

10

Я изучал ранговый коэффициент корреляции Спирмена

ρзнак равноΣя(Икся-Икс¯)(Yя-Y¯)Σя(Икся-Икс¯)2Σя(Yя-Y¯)2 .

для двух списков и . В чем сложность алгоритма?Икс1,...,ИксNY1,...,YN

Поскольку алгоритм должен просто вычислять N вычитаний, возможно ли быть О(N) ?

DavideChicco.it
источник

Ответы:

8

Вы должны вычислить

  • два средних,
  • 2N различия,
  • три суммы с слагаемыми - которые можно вычислить за постоянное время - каждая иN
  • одно деление, одно умножение и один квадратный корень.

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

Что касается пространства, у вас есть несколько вариантов:

  • Храните только средние значения, то есть два числа ( с максимальным числом). Вы должны пересчитать все различия, то есть выполнить в общей сложности вычитаний.О(журналM)M6N
  • Сохраните среднее и различия, то есть числа ( ). Это экономит вам вычитаний.2N+2О(NжурналM)4N

Что предпочтительнее, зависит от вашего контекста.

Рафаэль
источник
6

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

Дерек МакКрей Нортон
источник