Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 17, 2008 22:03:11

Еленочка
От:
Зарегистрирован: 2008-04-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

Мне опять нужна помощь:)
Ребят, кто-нибудь знает как рассчитать ковариационную матрицу?



Офлайн

#2 Апрель 18, 2008 17:01:28

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

Еленочка
вас интересуют формулы или модуль, позволяющий без лишних телодвижений все расчитать? :)



Офлайн

#3 Апрель 18, 2008 19:25:26

Еленочка
От:
Зарегистрирован: 2008-04-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

В модулях такого не нашла, формул много разной сложности, но затрудняюсь в их реализации на Python. Если кто сможет мне помочь буду очень рада :)



Офлайн

#4 Апрель 18, 2008 19:56:56

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

Еленочка
как я понимаю формулы у вас есть. не могли бы вы привести их? а еще очень хорошо было бы, если б вы показали свой код, тогда вам бы указали на ошибки. потому что “сделайте все за меня” не очень хороший вариант…



Офлайн

#5 Апрель 18, 2008 23:27:40

Еленочка
От:
Зарегистрирован: 2008-04-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

не знаю как посчитать формулу для корруляции двух величин 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.
А как воедино это связать не знаю.



Офлайн

#6 Апрель 19, 2008 08:02:30

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

Еленочка
а для чего у вас функция 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 числа и одно из них совпало с моим результатом )))))



Офлайн

#7 Апрель 19, 2008 20:53:46

Еленочка
От:
Зарегистрирован: 2008-04-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

hellslade, скажи пожалуйста, а у тебя значение получилось больше единицы?



Офлайн

#8 Апрель 19, 2008 21:13:49

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

Еленочка
вообще получаемое значение зависит от последовательности, иногда больше 0, а иногда меньше.
наверно при расчете ковариации есть какие нибудь фичи, о которых я не знаю…



Офлайн

#9 Апрель 19, 2008 21:44:43

Еленочка
От:
Зарегистрирован: 2008-04-12
Сообщения: 24
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

Разброс значений должен быть от -1 до 1. А у меня намного больше, вот и хотела узнать, какой у вас разброс получился.
Спасибо за код, суть поняла :)



Офлайн

#10 Апрель 19, 2008 21:56:49

hellslade
От:
Зарегистрирован: 2008-01-28
Сообщения: 240
Репутация: +  0  -
Профиль   Отправить e-mail  

кто знает?

насколько я понимаю, от -1 до 1 варьируется индекс корреляции, а ковариация это немного другое)
тему пора на какой-нить математический форум :D



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version