Еленочка
			  Апрель 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