Задача по вычислению ковариации
От: denisn  
Дата: 22.02.02 07:04
Оценка:
Есть необходимость вычислить ковариацию по матрице размерностью NxM элементов. Вопрос как это дело запрограмировать? подойдет любой язык из (С, Бэйсик, Делфи). Если нетрудно скинте исходник. Спасибо. denisn@fromru.com
Re: Задача по вычислению ковариации
От: The Lex Украина  
Дата: 23.02.02 14:26
Оценка:
Здравствуйте denisn, Вы писали:

D>Есть необходимость вычислить ковариацию по матрице размерностью NxM элементов. Вопрос как это дело запрограмировать? подойдет любой язык из (С, Бэйсик, Делфи). Если нетрудно скинте исходник. Спасибо. denisn@fromru.com


Вот так и чувствуешь себя полным идиотом от полного непонимания того, что же может представлять из себя ковариация по матрице размерностью NxM элементов. Вот жизнь и прожита зря...
Голь на выдумку хитра, однако...
Re[2]: Задача по вычислению ковариации
От: Юнусов Булат Россия  
Дата: 23.02.02 19:08
Оценка:
Здравствуйте The Lex, Вы писали:

TL>Вот так и чувствуешь себя полным идиотом от полного непонимания того, что же может представлять из себя ковариация по матрице размерностью NxM элементов. :shuffle: Вот жизнь и прожита зря... :(


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

В принципе вся математика здесь — это алгебра 4-го класса. И с чего бы ей быть сложнее — всю статистику придумали в позапрошлом веке и считали буквально на пальцах а в лучшем случае на счетах.

Чтоб не быть голословным:

Z (нехай это будет знак суммы)

n
Z(X[i]-Mx)(Y[i]-My) == Ковариация :)
i=1 // i=0 конечно, в нашем, сишном случае


X[i] и Y[i] это элементы в столбцах
Mx и My это средние арифметические по соответствующим столбцам

Вот собственно и вся ковариация по двум переменным


В принципе ее можно переписать и так

Z (XiYi) — ((Z Xi)(Z Yi) / N)

А можно и так

С1 + С2 — Сd
где С это дисперсии (или суммы квадратов центрального отклонения, считаются тоже элементарно) по первому признаку, по второму признаку и по ряду разностей между ними.

А если ковариацию поделить на sqrt(C1*C2); то получится коэффициент корреляции.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.