Вопрос с округлениями

Автор Alter, 01 июня 2022, 23:32:02

« назад - далее »

Alter

Цитата: Vasilii от 02 июня 2022, 01:27:26
За 10000 месяцев получается накопится 0.005 ошибка средней (если сумма 50 за 10000 строк, в примере с баблом)?
За 2000 месяцев (167 лет наблюдений, к примеру) 0.001 градуса (одна тысячная градуса) :)
10000 строк, во-первых, не равно сумме в 10000 ;D
Это первое. Но не главное.
Хоть там и получается на первый взгляд мизерная доля, надо учитывать, что когда имеешь дело со значениями разного знака, тут достаточно всего нескольких примеров, чтобы навести серьезную "кривизну". Рассмотрим год в каком-нибудь сибирском городке.
Предположим средняя одного такого года была +0,05.
А еще одного -0,05.
По методу "до большего" У нас есть год со средней 0,0 и год со средней +0,1. И нет никакого года  с отрицательной средней.
На самом деле такой год есть. По методу округления до четных получаем 2 года со средней +0,0. Да, тоже не совсем верно,  но общая картина не портится в одну сторону.
Да и в принципе можно поговорить о суммах таких лет.
Вероятность такого года - 1/12. Нет сомнения, что в климатических рядах может накопиться с десяток таких лет. И это лишь при среднем математическом ожидании. В реальности с отличной от 0 вероятностью могут быть ситуации, когда таких лет будет несколько десятков. 

Alter

#16
Цитата: Vasilii от 02 июня 2022, 00:06:29
Цитата: Ilgiz от 02 июня 2022, 00:01:03
Alter
насколько я помню из школьной программы математики, пятёрки принято округлять именно вверх.
Это не просто принято, а логично, для баланса. Если бы пятёрки округляли в меньшую сторону, то чисел от 0 до 0.50 - было бы 51, а от 0.51 до 0.99: 49
Это так логично, что у Вас сумма отклонений не сходится ;D
Итак, при округлении возникают отклонения. Допустим, как Вы говорите. Будем идти с 2 сторон.
С 0.00 до 0.49 и с 0.99 до 0.50.
Начинаем. Округляем 0,00 до 0,00. Отклонение 0. Сумма 0. Округляем 0,99 до 1,00. Отклонение +0,1. Сумма отклонений +0,01.
0,01 до 0,00 и 0,98 до 1,00. Сумма отклонений опять -0,1 + 0,02 = +0,01.
И так по каждому шагу итерации. На каждом будет накапливаться 0,01 отклонения в плюс.
На 50-м шагу нам встретится округление 0,50 до 1,0 с отклонением +0,5 и 0,49 до 0,0 с отклонением -0,49. Те же +0,01.
Вот и имеем, что при каждом возможном таком округлении накапливается отклонение в одну сторону с финальной суммой отклонений в 0,5. В сбалансированном же методе округления эта сумма должна быть если не 0, то хотя бы стремиться к 0 на бесконечности, а не к 0,5.
Метод совершенно очевидно кривой и точно несбалансированный. На практике могут быть совершенно разные ситуации от той, когда действительно плевать на то, какой метод использовать до такого, где он вполне может повлиять на итоговые цифры. Но в любом случае нельзя утверждать, что этот метод "верный", "сбалансированный", "справедливый" и проч.

Ilgiz

Alter
так если я не ошибаюсь, при отрицательных значениях округление по такой методике идёт зеркально относительно нуля, "вверх по модулю", то есть вниз по факту. Или я не прав?
Поддерживаю потепление климата Москвы, МО и соседних областей Центра ЕТР, но при условии, что после сильного весеннего тепла не будет убийственных заморозков.

Vasilii

Цитата: Alter от 02 июня 2022, 12:05:39
Это так логично, что у Вас сумма отклонений не сходится ;D
Итак, при округлении возникают отклонения. Допустим, как Вы говорите. Будем идти с 2 сторон.
.....
Я писал про зрительный баланс, почему принято округлять в большую сторону, а не в меньшую, а вы мне доказываете, что ровно половина, середина и 1/2 - это именно половина, середина и 1/2. Это, по-моему, и дошкольнику понятно, что у ровно половины нет перевеса к какому-либо ближайшему числу ;D

Цитата: Alter от 02 июня 2022, 11:53:23
что в климатических рядах может накопиться с десяток таких лет.
Так и пусть будут, они совсем незначительно, а лучше сказать, совсем никак не влияют на средню таких рядов.

Возьмём и сгенерируем по формуле апрели с условной средней в 7 градусов и стандартным отклонением в 2 градуса. Вот что получится за 143 апреля:

6,8656 сотые
6,8727 округление до десятых по правилу в большую.

Погрешность округления:
0.0071 (до десятых это 0.0)

Возьмём условный февраль по этой же формуле со средней -6 и отклонением 4:

-6.2163
-6.2196

Погрешность округление:
0.0033 (до десятых это 0.0)

Я ещё забыл добавить с утра, что помимо куда более существенных отклонений в виде погрешностей и подсчёту суток, а не дней есть же ещё и просто ошибки. Достаточно вспомнить хотя бы сайт Костяна ;D

Цитата: Ilgiz от 02 июня 2022, 12:42:09
так если я не ошибаюсь, при отрицательных значениях округление по такой методике идёт зеркально относительно нуля, "вверх по модулю", то есть вниз по факту. Или я не прав?
В Америке, вроде, в сторону положительной бесконечности округляют, т.е. -1.5 там -1

Alter

Ilgiz, здесь все округляется в сторону большего. В январе 2020 округлялись отрицательные значения средних метеосуток: -0,15 превратилось в -0,1. Вчера вот +18,85 стало +18,9.
Vasilii, зрительный баланс в арифметики. Ну и чушь. Дошкольнику, может, и понятно, а мне нет.
На среднюю они не влияют, а на знак средней вполне могут. Выше уже написал, почему.
Но Вы взяли апрели со средней выше 0. Ну Ок. Берите, что хотите. То что в общем случае ошибки не столь значительны, я знал без Вас и указал это сразу. То, что в некоторых случаях они могут давать видимые погрешности, тоже очевидно. Так что Вы мне хотите доказать?
Случайно раз сгенерировали и получили малую ошибку - ну поздравляю. Только это не эксперимент, увы.
Один раз - даже не... А уж тем более единичный эксперимент не имеет веса в статистике.
Но лучше не пытайтесь проводить опыт тысячи раз. Легче все это посчитать по формулам вероятностей. С вероятностью процентов 5-10 это может повлиять на среднюю ряда вплоть до 10-х. Есть разница между "может" и "обычно не будет". Если в местности может случиться потоп
с вероятностью хоть 1%, а нет канализации - это хреновое дело. И отсылки к климату, что тут выпадает по 5 мм. в месяц, не помогут никак.

Vasilii

#20
Цитата: Alter от 02 июня 2022, 18:35:47
зрительный баланс в арифметики. Ну и чушь. Дошкольнику, может, и понятно, а мне нет.
Ну как же не понятно? В большую выбрали для зрительного баланса (а не просто так договорились случайно), чтобы не разбивать число. Если мы 0.500001 округляем до единицы, то логичнее и 0.5 (что б цифру 5 не разделять) туда же, чем в меньшую (зачем одно то тоже число направо совать и налево)? :D Я про это говорил.

Цитата: Alter от 02 июня 2022, 18:35:47
Вчера вот +18,85 стало +18,9.
А что ж с американскими Фаренгейтами творится - сложно представить :o

Цитата: Alter от 02 июня 2022, 18:35:47
Случайно раз сгенерировали и получили малую ошибку - ну поздравляю. Только это не эксперимент, увы.
Один раз - даже не... А уж тем более единичный эксперимент не имеет веса в статистике.
Но лучше не пытайтесь проводить опыт тысячи раз. Легче все это посчитать по формулам вероятностей. С вероятностью процентов 5-10 это может повлиять на среднюю ряда вплоть до 10-х. Есть разница между "может" и "обычно не будет".
Чем больше ряд, тем сильнее значение погрешности будет стремиться к 0.005
В ряду из 10000 значений сумма погрешностей часто будет около 50 при нормальном распределении.
Погрешность в 0.1 исключена полностью, даже в небольших рядах, ибо в небольших рядах и на *.*5 сложнее нарваться.

Alter

При чем здесь, чем больше ряд, о боже мой ;D ;D ;D
Речь идет о том же ряде в нескольких экспериментах. 0,005 - это всего лишь мат. ожидание. Существуют флуктуации, выходящие далеко за его пределы.
Еще раз: мат. ожидание ливня в степном городе может быть даже меньше процента за месяц. Но если он все же будет, то без канализации случится полный улет. Это я к тому, что никто не застрахован от ситуаций, когда данная ошибка будет критичной. Никто и никогда. И проще ее исправить, чем вести бессмысленный диалог о том, что "в среднем"-то ничего страшного не будет. Что мы "застрахованы", и нафиг нам не нужно улучшать точность там, где можем. Температура по больнице +36,6. Детский сад, короче. Не хотите вникать и разбираться, так и скажите. А то мне, честно, уже надоело ходить по кругу и одно и то же истолковывать. А Вы даже не понимаете, о чем я.
Вообще говоря, совершенно пофиг на Вас. До Костяна я донес, остальное не имеет значения.

Kostian

#22
Alter

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

Во-вторых, не стоит забывать что компьютер работает в двоичной системе и никакой абсолютной точности в любом случае не получится, т.к. дробные десятичные числа при переводе в двоичную  систему могут не иметь точного выражения и уже на этом этапе возникнет погрешность.  Мне как-то полгода назад задавали вопрос, почему в климатическом мониторе норма +16.9, фактическая температура +14.9, а отклонение от нормы получилось -1.9.  Я перепроверил среднемесячную и ее значение вышло без округления 14.94516129. Тогда 16.9 - 14.94516129 = 1.95483871.  Строго математически должно округлиться в большую сторону, до 2.0. Но, если считать в двоичной системе, нужно иметь ввиду, что разрядность формата числа с плавающей точкой float не позволяет при делении получить число 14.94516129. В двоичной системе среднемесячная получается несколько больше. И вот этой добавки, которая возникает из-за счета в двоичной системе, достаточно, чтобы округление произошло не до 2.0, а до 1.9 градуса.
Тепла в октябре не дождался. Ноябрь не оправдал ожиданий. Жду холодный декабрь!!!

Alter

Kostian, это все понятно. Про это я даже выше писал.
Но я бы поспорил с тем, что несмотря на то, что если погрешности измерений и перевода из двоичной системы больше, чем возможные(а не средние) погрешности при округлении, то не стоит это учитывать. Факторы влияют разные - какие-то исключить нельзя, а какие-то можно.
Поэтому еще раз: что можно исключить, то нужно исключить.
Ну или тогда наставления вполне допускают существование ошибок и по годовым, и по среднемесячным по крайней мере на 1 десятую. Если так, то пофиг. Хотя опять же, если можно повысить точность, почему ее бы не повысить. Понятно, что мы не разрешим этим всех проблем точности, но почему бы не исключить хотя бы одну из них? Потому что все равно все не точно. Сгорел сарай, гори и хата?
Ну тогда я умываю руки ;)

Kostian

#24
Вот, кстати оно: http://www.pogodaiklimat.ru/monitor.php?id=27459&month=8&year=2019  Ну и как тут быть?  Такие артефакты вычислений могут вылезти в любой момент.  Так что никто никогда не обращает на это внимания. А еще зависит от того как считать: по срокам или по суткам? Вот как, по-вашему, правильно? А ведь это тоже может дать расхождение в 0.1 градуса. И любая незначительная ошибка в любом из 248 срочных значений тоже может дать погрешность среднемесячной в 0.1 градуса. В итоге приходим к тому, что ошибка в 0.1 градуса - это вполне допустимо и очень часто встречается в климатических рядах.
Тепла в октябре не дождался. Ноябрь не оправдал ожиданий. Жду холодный декабрь!!!

Alter

Kostian, по срокам конечно правильнее. Когда не было  мощных ЭВМ, считали по суткам, потому что так легче. Каждые сутки складывали в среднюю, потом вычисляли ее из 30-31 таких для месяца. Сейчас никаких проблем просчитать среднюю 240-248 значений.
Но тут мы вступаем в противоречие с правилами климатологии. Их бы надо менять, но никому это особо не нужно.