Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отклонение от среднего арифметического, без хранения всех значений 
:(
    Опции темы
KOLANICH
Дата 24.10.2011, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 21.4.2010

Репутация: нет
Всего: нет



как посчитать  отклонение от среднего арифметического не храня все значения
то есть есть поток из n значений (сначала поступает первое, затем второе, затем - третье и тд, но количество их заранее известно)
нужно вычислить для каждого значения отклонение от среднего арифметического, возвести в квадрат и просуммировать
сохранять все, а потом считать нельзя - их может быть ОЧЕНЬ МНОГО, памяти может не хватить
также должна соблюдаться точность
PM MAIL   Вверх
ksnk
Дата 24.10.2011, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 7
Всего: 386



Цитата(KOLANICH @  24.10.2011,  00:09 Найти цитируемый пост)
нужно вычислить для каждого значения отклонение от среднего арифметического ...  а потом считать нельзя -

а каким образом предлагается узнать среднее арифметическое для первого элемента потока? smile

Само среднее арифметическое несложно считать на лету, просто храня сумму всего потока и считая количество элементов потока.




--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
sQu1rr
Дата 24.10.2011, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: нет
Всего: 13



Цитата(KOLANICH @  24.10.2011,  00:09 Найти цитируемый пост)
нужно вычислить для каждого значения отклонение от среднего арифметического, возвести в квадрат и просуммировать

дисперсию считаете?


Цитата(KOLANICH @  24.10.2011,  00:09 Найти цитируемый пост)
как посчитать  отклонение от среднего арифметического не храня все значения

Помоему никак smile Как минимум 2 раза прогнать иначе придется, 1й раз дня вычесления среднего арифметического, второй раз для нахождения отклонения
PM MAIL Skype GTalk   Вверх
Earnest
Дата 24.10.2011, 06:58 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Цитата(sQu1rr @  24.10.2011,  02:05 Найти цитируемый пост)
Помоему никак

Из формулы-определения дисперсии D = 1/N*Sum ((Di - M)^2) легко выводится другая:  D = 1/N*Sum (Di^2) - M^2,
где Di - i-й элемент, M - среднее. Таким образом, если хранить 3 величины (сумму элементов, сумму их квадратов и количество), дисперсию можно считать на лету.



--------------------
...
PM   Вверх
Akina
Дата 24.10.2011, 11:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(ksnk @  24.10.2011,  01:19 Найти цитируемый пост)
каким образом предлагается узнать среднее арифметическое для первого элемента потока?

Среднее арифметическое для множества из одного элемента равно значению этого единственного элемента. Очевидно же. А отклонение в этом случае - нулевое.




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
sQu1rr
Дата 24.10.2011, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 597
Регистрация: 11.11.2008
Где: london

Репутация: нет
Всего: 13



Цитата(Akina @  24.10.2011,  11:20 Найти цитируемый пост)
Среднее арифметическое для множества из одного элемента равно значению этого единственного элемента. Очевидно же. А отклонение в этом случае - нулевое.

В дисперсии отклонение считается от среднего арифметического всего потока а не множества пройденных элементов
PM MAIL Skype GTalk   Вверх
Akina
Дата 24.10.2011, 12:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(sQu1rr @  24.10.2011,  13:06 Найти цитируемый пост)
В дисперсии отклонение считается от среднего арифметического всего потока а не множества пройденных элементов 

Правильно. Но не всего потока, который теоретически пройдёт через счётный механизм, а того, который УЖЕ прошёл. А если на данный момент прошёл только один элемент - то дисперсия считается для потока из 1 элемента. Когда поступит второй - она будет считаться для потока из 2 элементов... и так далее, пока не будет принят весь объём данных - и только тогда будет получено окончательное, а не промежуточное, значение.

Цитата(Earnest @  24.10.2011,  07:58 Найти цитируемый пост)
D = 1/N*Sum ((Di - M)^2) легко выводится другая:  D = 1/N*Sum (Di^2) - M^2, где Di - i-й элемент, M - среднее

 smile А не затруднит продемонстрировать это самое "легко выводится"? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Earnest
Дата 24.10.2011, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Цитата(Akina @  24.10.2011,  13:32 Найти цитируемый пост)
А не затруднит продемонстрировать это самое "легко выводится"? 

Подставь M в первую формулу, раскрой скобки и т.д. Это известная формула из теорвера или мат. статистики, уже не помню, где-то на втором курсе в приличном вузе должны проходить. 


--------------------
...
PM   Вверх
Akina
Дата 24.10.2011, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Earnest, давай попробуем на примере.
N=3
D(1)=1
D(2)=2
D(3)=3
M=(1+2+3)/3=2
1/(N*Sum(Di-M)^2) = 1/3*((1-2)^2+(2-2)^2+(3-2)^2)=1/(3*2)=1/6
1/(N*Sum (Di^2)) - M^2 = 1/(3*(1^2+2^2+3^2)) - 2^2 = 1/(3*14) - 4 = ну ни разу не 1/6...

Может, ты имел в виду, что дисперсия равна разности квадрата матожидания и матожидания квадрата?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Earnest
Дата 24.10.2011, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 7
Всего: 183



Так и результат ни разу ни 1/6.
В первой формуле ты чего-то того:
сумма квадратов отклонений = 1/3 * ((1-2)^2 + (2-2)^2 + (3-2)^2) = 1/3 * (1+1) = 2/3. Как у тебя двойка в знаменатель попала, не пойму.
Цитата(Akina @  24.10.2011,  14:15 Найти цитируемый пост)
Может, ты имел в виду, что дисперсия равна разности квадрата матожидания и матожидания квадрата? 

А я разве не это написала?


--------------------
...
PM   Вверх
Akina
Дата 24.10.2011, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



Цитата(Earnest @  24.10.2011,  14:31 Найти цитируемый пост)
А я разве не это написала? 

Хм... и правда, если присмотреться... но пока поймёшь... милль пардон.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KOLANICH
Дата 24.10.2011, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 21.4.2010

Репутация: нет
Всего: нет



всем спасибо
на другом форуме товарищ по никнейму val_nnm подсказал решение
user posted image

Это сообщение отредактировал(а) KOLANICH - 24.10.2011, 18:02
PM MAIL   Вверх
Akina
Дата 24.10.2011, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 20
Всего: 454



KOLANICH, Это абсолютно то же, что тебе сказала Earnest.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
KOLANICH
Дата 24.10.2011, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 21.4.2010

Репутация: нет
Всего: нет



DELETED

Это сообщение отредактировал(а) KOLANICH - 24.10.2011, 22:47
PM MAIL   Вверх
_Y_
Дата 26.10.2011, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 8
Всего: 34



Цитата(Earnest @  24.10.2011,  06:58 Найти цитируемый пост)
если хранить 3 величины (сумму элементов, сумму их квадратов и количество), дисперсию можно считать на лету.

Но, надо понимать, дисперсия каждый раз будет считаться для выборки разной величины (увеличивающейся с каждым шагом на единицу). Впрочем, если в потоке данных нет дрифта (постепенного законопмерного изменения величин и/или закона их рассеяния), то где-то после 50-й точки все выйдет на более-менее достоверную постоянную величину. В других же случаях, похоже, без двух проходов через данные не обойтись.

ЗЫ: Помнится когда-то для чего-то подобного мы считали статистические характеристики не для всего потока, а только для последних N точек (штук 100-200 брали - с запасом, если правильно помню).


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.0953 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.