Еленочка
Апрель 17, 2008 22:03:11
Мне опять нужна помощь:)
Ребят, кто-нибудь знает как рассчитать ковариационную матрицу?
hellslade
Апрель 18, 2008 17:01:28
Еленочка
вас интересуют формулы или модуль, позволяющий без лишних телодвижений все расчитать? :)
Еленочка
Апрель 18, 2008 19:25:26
В модулях такого не нашла, формул много разной сложности, но затрудняюсь в их реализации на Python. Если кто сможет мне помочь буду очень рада :)
hellslade
Апрель 18, 2008 19:56:56
Еленочка
как я понимаю формулы у вас есть. не могли бы вы привести их? а еще очень хорошо было бы, если б вы показали свой код, тогда вам бы указали на ошибки. потому что “сделайте все за меня” не очень хороший вариант…
Еленочка
Апрель 18, 2008 23:27:40
не знаю как посчитать формулу для корруляции двух величин Ra и Rb. Формула такого вида σ12 =1/T* E(Ra - rA)(Rb - rB), Ra и Rb - случайные величины,а точнее последовательности случайных величин, равной длины. rA и rB - средние значения для соответствующих Ra, Rb. T - длина последовательности, E - знак суммы, суммирование идет по всем элементам от 1 до Т.
Как я понимаю:
с 1/Т понятно, есть 1/len(Ra)
со средним значением тоже вроде понятно, ищем как мат.ожидание, average() от Ra,Rb
с суммированием, у меня
def summa(a):
n = len(a)
sumi=i = 0
for i in xrange(len(a)):
sumi = sumi + a
return sumi.
А как воедино это связать не знаю.
hellslade
Апрель 19, 2008 08:02:30
Еленочкаа для чего у вас функция summa?
как я понимаю по формуле, считать нужно сумму элементов не одной последовательности, а сразу обоих, при этом вычитая среднее значение из каждого элемента. вообще в математике не силен(, поправьте если не так…Но если я прав, то функция должна выглядеть примерно так:
def _sum(a,b):
t = len(a)
sum = 0
for i in range(t):
sum += (a[i]-ra)*(b[i]-rb)
return sum
ra, rb определяются ранее, как среднее.
в принципе, делал тоже самое в Excel с помощью встроенных функций из пакета анализа, он вывел 4 числа и одно из них совпало с моим результатом )))))
Еленочка
Апрель 19, 2008 20:53:46
hellslade, скажи пожалуйста, а у тебя значение получилось больше единицы?
hellslade
Апрель 19, 2008 21:13:49
Еленочка
вообще получаемое значение зависит от последовательности, иногда больше 0, а иногда меньше.
наверно при расчете ковариации есть какие нибудь фичи, о которых я не знаю…
Еленочка
Апрель 19, 2008 21:44:43
Разброс значений должен быть от -1 до 1. А у меня намного больше, вот и хотела узнать, какой у вас разброс получился.
Спасибо за код, суть поняла :)
hellslade
Апрель 19, 2008 21:56:49
насколько я понимаю, от -1 до 1 варьируется индекс корреляции, а ковариация это немного другое)
тему пора на какой-нить математический форум :D