Да. вопрос очень больной. Проблема проверки результатов и вообще обратной связи в науке встает все острее. Сейчас журналы обычно просто отклоняют статьи, где есть серьезное подозрение на подтасовку или неумышленную ошибку. Но ведь журналов много, рецензенты разные - скорее всего, эта работа просто выйдет где-то еще. А если сомнительная гипотеза для кого-то полезна, то такая статья в разных вариациях будет опубликована многократно, а ее автор может быстро набрать хирша и грантов, обзаведется лобби и станет авторитетом. Такого попробуй покритикуй.
Поэтому я считаю, что такие статьи все-таки надо не отклонять, а публиковать ВМЕСТЕ с откликом рецензента. Особенно если критикуемая статья (гипотеза) - это не единичный случайный всплеск озарения, а систематически развиваемая автором тема. (Кстати, это будет полезно не только для отсечения лженаучных концепций, но и чтобы не выплеснуть с водой ребенка, если он где-то внутри спорной работы все-таки есть).
К сожалению, организовать такой отклик гораздо сложнее, чем просто забраковать статью. Для подготовки контр-публикации рецензент должен вложить на порядок больше усилий, чем на обычную отрицательную рецензию. Часто это труднее, чем свою очередную статью написать. Ведь тема хоть и близкая, а немного чужая, а разобраться в ней надо на уровне "бог", т.к. каждая буква контр-отклика будет рассматриваться под микроскопом. А выхлоп рецензенту из всего этого почти нулевой: очков не заработаешь, по гранту не отчитаешься, да и просто надо от своей основной тематики оторваться. Еще и карму испортишь врагов наживешь..
Хотя мы в наших журналах пытаемся это делать, и иногда это
Раньше, пока научные журналы распространялись и читались в бумажном виде, такие контр-отклики как-то работали. Но сейчас все чаще статью скачивают в виде отдельного PDF-файла, из которого совершенно невозможно понять, что статья вызвала бурную дискуссию в том же номере журнала, или даже разгромную критику, но в следующих номерах. Вместо критического разбора гипотезы из любой публикации получается только дополнительная реклама автора.
А затем у такой квази-работы появляются последователи. Кто-то перелопачивает вагон аннотаций, находит там подтверждение своим идеям и мыслям, и без тени сомнения вставляет в свой труд ссылки на такие статьи. Ведь раскапывая нужные результаты в потоке работ, просто невозможно проверить каждый источник, а искать отклики на них просто некогда. А кто-то вполне понимает всю шаткость конструкции, и даже ее критику видел, но умышленно ссылается только на квази-статью, так как это выгодно по каким-то причинам. И к такому цитированию никакой комитет по этике не подкопается.
И что с этим делать - не ясно.
...дать эффективные способы проверки и исправления результатов, что требует тесной привязки анализа научной статьи к самой статье
Ну вот я написал про прямую дискуссию в формате контр-публикаций: казалось бы, куда уж эффективнее? А оказывается, теперь даже и это почти не работает, так как такая дискуссия в журнале средней руки запросто может пройти мимо целевой аудитории. А журналы первой руки (статьи в которых будут точно прочитаны всеми причастными) не особенно стремятся такие дискуссии открывать. Им от этого никакой выгоды нет, только сплошные убытки. Во-первых, теряется имидж (у нас вы найдете только лучшее и бесспорное!), во-вторых, надо как-то так совместить две альтернативные публикации, чтобы никто ни с кем не переругался; в-третьих, вместо такой дискуссии можно три обычных статьи опубликовать...
Если тренировка занимает больше времени, чем поход на нее, это сильно демотивирует.
Воистину! Даже если лес для пробежек - рядом, то просто чтобы собраться-одеться, а потом душ-отходняк... уже набирается минимум полчаса "накладных расходов". А если еще ехать надо куда-то... Поэтому частые, но короткие тренировки (ежедневно по полчаса), может, и самые полезные для здоровья, но очень уж дорого стоят в плане расхода времени.
Длинные мероприятия (на весь день или вообще птн-сб-вск непрерывно) по кпд использования времени гораздо эффективнее. Другой вопрос, что это максимум раз в месяц возможно...
На следующий день после тренировки как под кайфом.
Странно, я на следующий день просто умираю.
Может, это специфика "сверхдлинных" тренировок, но у меня после двухдневной экстремальной для меня нагрузки (ММБ и тому подобное) на следующий день не только ноги отваливаются, но и голова провисает. Зато на второй-третий день сознание ясное и чистое, когда все самые заковыристые задачки внезапно решаются: за пару часов иногда делаешь дневную работу. Хотя натертые и опухшие ноги еще не ходят при этом, и даже обуваться больно ;-) Правда, мне проще - я удаленно работаю...
Спасибо за совет, тоже думали об этом ;-) Температура почти стабильна, поэтому поправку за T все равно придется вводить, но ультразвук хотя бы к питанию не так чувствителен.
В той сфере, где я работаю - пишут программы для научных расчетов. Причем не только "одноразовки" для личного пользования (когда выбор языка определяется преимущественно тем, на чем учили программировать в ВУЗе), но и "перемалыватели чисел", так как по производительности на таких задачах современный фортран вполне себе держится в лидерах, а по простоте и удобству кодирования именно вычислений многих соперников превосходит. Насколько я знаю от коллег, во многих научных организациях (и не только в РФ) это до сих пор либо выбор номер 1, либо близко к тому.
Кстати, вот тут я недавно написал небольшое эссе о том, как и зачем научные сотрудники пишут "одноразовые" программы (носителям чересчур серьезного выражения лица просьба ссылку не открывать, не рискуйте, хотя в каждой шутке есть доля шутки ;-).
Какие бы вы пункты назвали универсальными за пределами С?
Ничего не могу сказать про универсальность, но, к примеру, в фортране вполне применимы 2-7, 13-15, 17-19, 22-23, 26-30, 35-37. Язык, конечно, не самый популярный сейчас, но в своей нише весьма конкурентоспособный
Ну вот у меня отладчик VS, и я не умею в нем поставить точку останова на вызове конкретной функции (например check_condition2() или на <Оператор_1> внутри строки:
if (check_condition1(...) .and. check_condition2(...)) then; <Оператор_1>; else; <Оператор_2>; end if
Поэтому для отладки мне удобнее написать:
condition1_is_true=check_condition1(...)
condition2_is_true=check_condition2(...)
if (condition1_is_true .and. condition2_is_true) then
<Оператор_1>
else
<Оператор_2>
end if
Может, конечно, это только в фортране такая специфика... или надо на более последнюю версию VS перейти?
Множественные return хороши в C++ в чистом C, правило одного return имеет смысл, потому что перед ним как правило стоит код освобождения ресурсов и метка для goto.
Кстати да - в фортране тоже так делаю. Если функция должна какие-то ресурсы освобождать, то этот код пишется в конце функции, перед return, и с меткой. А по тексту вместо return пишется goto. И это почти единственный случай (имхо), когда в современном фортране goto оправдан, т.к. позволяет избежать многоуровневой вложенности, если попытаться обойтись без него.
Правда, у такого стиля есть
свои недостатки
Например, у меня довольно часто функция настраивает свой контекст, потом открывает диалоговое окно и задает какие-то вопросы, потом работает с файлом и т.д. Причем брейк может из любого места случиться. Потому перед return может быть не одна метка, а две или даже три. Тут уже вопрос, а стоит ли так писать, или лучше структурно? Для себя я решаю так: пока переходы goto не "перекрещиваются", это терпимо, например:
...
goto 900
...
goto 800
....
800 ...
900 ...
А вот переход goto 900 после оператора goto 800 - это уже было бы некузяво, надо функцию декомпозировать.
Я здесь крокодилмимо (на С не пишу и язык не знаю), поэтому читал, примеряя все правила к своему языку. По ходу отмечал те пункты, которые к фортрану не очень подходят.... А потом открыл комментарий heCalligrapher и внезапно увидел, что почти все критикуемые им пункты (кроме 12 и 32),
уже присутствуют в списке моих пометок
Полностью применимы: 2-7, 13-15, 17-19, 22-23, 26-30, 35-37... Остальное (из не прокомментированного heCalligrapher), в основном, относится к специфике языка. Например, запись вида if (x = 10) ... у нас даст ошибку компиляции, поэтому писать что-то типа if (10 = x) ... никому и в голову не придет ;-) А за пп.33 отвечает язык (повторный USE игнорируется, что очень удобно при множественных ссылках на один модуль из других включаемых модулей). А вот к пп.17: небольшая добавка: если это не повлечет заметных накладных расходов, то лучше ВСЕ входные параметры функции проверять, а не только указатели. Ну и лично я стараюсь начинать файл с высокоуровневых функций, - мне проще иди от общего к частному. Если же частного слишком много, оно выноситься в отдельный модуль.
Если убрать специфику конкретного языка, то правила "хорошего тона" будут почти одинаковы для всех языков одной группы ;-)
Картинки говорят сами за себя, но статья могла бы быть гораздо понятнее (и полезнее для очень многих читателей), если добавить в ее начало преамбулу про анализ остатков, т.е. ошибок аппроксимации данных какой-то моделью. Обычно модель можно считать хорошей, если эти ошибки не только малы, но и случайны. Множество математических методов в том или ином виде опираются на гипотезу о случайности шумов и, соответственно, ошибок. Поэтому если вдруг выясняется, что ошибки не случайны, то это серьезный повод задуматься про адекватность модели. Вот простой пример: пусть некоторая величина меняется по параболическому закону, а мы видим только результат измерений и пытаемся аппроксимировать эту зависимость прямой линией. Зашумленный фрагмент параболы может быть очень похож на прямую, но если посмотреть на остатки аппроксимации, то там будет виден явный "зигзаг", что сразу же наведет на мысль о недостаточности линейной модели.
Вот нарисовал пару иллюстраций
прямо на своем "рабочем столе", даже не подбирая параметры (если поварьировать кривизну параболы, амплитуду шума и число точек данных, то можно сделать гораздо нагляднее):
Это фрагмент параболы с шумом, - график довольно похож на линейный рост.
А вот параметры линейной аппроксимации:
Коэффициент корреляции 0.983, 1-R^2=0.033, линейная модель объясняет более 98% дисперсии сигнала... она почти идеальна? Но посмотрим-ка теперь на график остатков:
По нему сразу же видно, что в данных есть еще какая-то неучтенная, но абсолютно четкая динамика. Да, конечно, внимательный исследователь мог бы это заметить уже по первому графику, а тем более по второму. Но когда у тебя сотни таких рядов, то часто на изучение таких подробностей нет времени. Картинки листаются со скоростью прокрутки экрана... потом чуть внимательнее смотрим на таблицу со значениями на 1-R^2, где все почти на нуле... все нормально?
А вот график остатков даже при самом беглом просмотре не оставляет ни малейших сомнений, что с моделью что-то не так ;-)
Ну а теперь самое главное: неслучайность остатков может быть самой разной. То есть там может присутствовать не только динамика (закономерное изменение) средних значений, но и динамика дисперсии. В частности, дисперсия остатков сплошь и рядом будет расти со временем, если ряд имеет тенденцию к экспоненциальному росту, а амплитуда флуктуаций пропорциональна текущему уровню (а это типичнейшая ситуация в эконометрике). Поэтому при построении любых моделей и аппроксимаций очень важно не просто оценивать погрешность модели, но и анализировать остатки на предмет выявления там скрытых (неучтенных моделью) зависимостей и закономерностей. Собственно, обсуждаемая статья именно этому и посвящена. Поэтому мне очень жаль, что она написана в расчете на крайне узкого специалиста, а у большинства остальных читателей возникает впечатление "ничего не понятно". Тема-то ведь важная и полезная...
А еще для законченности и завершенности в статье не хватает хотя бы беглого пояснения основных идей, на которые опираются тесты Диблази-Боуманна, Уайта, Юса и Чжоу. Как рассчитывается критическая статистика теста, и почему она хорошо реагирует на отсутствие гетероскедастичности? Подчеркну: не хватает не формул для расчета статистик (они легко ищутся), а именно внятного, на пальцах, описания идей. Ведь базовые идеи у практически всех статистик весьма ясные и понятные. Вообще, сейчас довольно модно начинать изучение анализа данных с освоения программ и обучения правильному порядку "нажимания кнопок". При этом математика, которая стоит за всем этим, иногда кажется сложной и непонятной. Хотя на самом деле там все очень просто! Точнее, формулы могут быть очень заумными, но вот стоящие за ними идеи - почти всегда просты и прозрачны. Но понять эти идеи, просто читая инструкции к программе, можно далеко не всегда. Тут как никогда важен диалог с преподавателем (лектором). Именно этим и хороши многие хабросстатьи, что они "про идеи", а потом в обсуждении - диалог.
Поэтому, во-первых, спасибо Артему @acheremuhin за его цикл статей по статистике. А во-вторых, большая просьба к нему же не забывать рассказывать про идеи, прежде чем придавливать читателя полезными, но не всегда простыми для понимания фактами ;-)
Я очень ценю переводы, которые делает OlegSivchenko, и обычно с большим удовольствием их читаю, но этой статье пока что поставил минус. К сожалению, с точки зрения геофизика, она содержит слишком много весьма сомнительных (мягко говоря) гипотез и утверждений. Многие из них прямо противоречат общепризнанным научным моделям и фактам. Например:
"… Залежи железа вытягиваются вдоль линий магнитного поля..."
"Само такое облако очень велико, и на его полное прохождение через Солнечную систему могло уйти порядка 500 000 лет, что и объясняет хотя бы одну итерацию «снежка», а также быстрое и кардинальное перемагничивание Земли"
Механизм геодинамо - конвективные процессы в жидком ядре, там совсем другая энергетика и характерные времена. Облако космической пыли для него - ни о чем. Специалисты пишут, что типичная инверсия МП происходит на порядок быстрее, за 1-10 тыс.лет. И что их было множество за "последнее время" (Фанерозой). То есть: 1) прохождение Земли через облако пыли вряд ли может вызвать инверсию МПЗ, и 2) инверсия вовсе не приводит к замораживанию поверхности. Сразу два вопроса к одному предложению...
"наклон земной оси, сейчас составляющий 23,44°, мог резко увеличиться из-за столкновения с крупным астероидом, а затем постепенно выравниваться"
Я не верю в теорию заговоров, но такое впечатление, что адепты гипотезы ударного изменения наклона земной оси действительно сговорились ;-) Вот тут можно глянуть небольшой список вопросов к этой теории
и это далеко не все глюки, увы...
На мой взгляд, текст нуждается в серьезной доработке, а пока что его научный (технический?) уровень не соответствует требованиям Хабра :-((( Очень надеюсь увидеть исправленный вариант статьи, так как тема действительно интересная...
У копытных травоядных в отличии от хищников «прошивка» в мозгах довольно примитивная, до описанной Вами стратегии еще надо додуматься.
Согласен, повод для размышлений имеется,
и даже не один ;-)
Например, это именно стратегия или все-таки тактика? А если серьезно, то:
травоядные ведь чешутся о землю, деревья, камни и прочее, чтобы от паразитов избавиться? (Кстати, подскажите, пожалуйста: а олени так чешутся?). И если от этого навыка исходить, то вроде бы не такой уж и большой шаг получается. Или не пытаются, потому что все равно не получится?
А почему олени в видео так спокойно реагируют на приближающегося дхоля? Никакой попытки убежать или хотя бы лягнуть? У самки ведь рогов нет, голову наклонять и бодаться полностью бесполезно. Может ли быть такое, что дхоли мимикрируют под телят (размер-то похожий и цвет близкий), и из-за этого копытные не сразу понимают, что перед ним хищник?
Или просто эволюция еще не успела их приучить реагировать на этот вид хищников?
И второй вопрос: когда дхоль он уже вцепился, олень выглядит беззащитным. Но почему он не пытается, например, придавить дхоля, навалившись этим местом на дерево? Массы-то не сопоставимые, собачке вряд ли понравится.
Я уж не говорю, что второй олень в этот момент дхоля запросто мог бы лягнуть. Но это, видимо, сложно и опасно для лягающей особи, хотя и может быть полезно для вида...
Отбеливание спектра - это довольно распространенный подход при анализе данных и поиске связей между сигналами, но у него есть изрядное количество недостатков. Во-первых, для этого надо уметь в дробное дифференцирование, а при наличии пропущенных наблюдений и прочего брака (а в геофизике и при мониторинге без них не бывает) это не так просто сделать. Я вот в своем пакете для анализа временных рядов до сих пор не смог это реализовать. А принудительно заполнять пропуски не хочу, у нас вся идеология обработки строится на том, чтобы вымышленные значения не использовать. Ведь любое заполнение пропусков требует наличия модели сигнала, по которой эти значения генерируются. А у нас одна из основных целей обработки обычно как раз и состоит в том, чтобы такую модель построить.
Во-вторых, отбеливать спектр - это намного сложнее, чем просто посчитать "квазикорреляцию" и оценить ее значимость по специально подкорректированным формулам. Если, конечно, такие формулы удастся построить (для чего как раз и нужно то самое теоретическое распределение посчитать).
В- третьих, при работе в терминах корреляций (когда имеешь дело с практическими сигналами) обычно несложно построить робастную версию алгоритма процессинга данных без слишком искусственных ухищрений. Если же анализ включает процедуру отбеливания спектра, то это гораздо сложнее (во всяком случае, для меня), и уж точно не слишком интуитивно. Я вообще предпочитаю работать во временной области, а не в частотной - это намного понятнее и результаты интерпретировать проще почти всегда. А что получится, если сделать преобразование Фурье, потом прологарифмировать спектр, потом обратное преобразование Фурье, мне сложно представить. Попробовать можно, конечно, но там же еще с фазами какие-то трюки потребуются... И шуметь такой алгоритм на неидеальных данных (а реальные данные мониторинга всегда со странностями) наверняка будет ужасно.
Исходный-то сигнал логарифмировать бесполезно. Ведь нестационарность при логарифмировании не устраняется. И степенной спектр плоским тоже не станет: если сигнал далек от нуля, то после логарифмирования его спектр так и останется степенным. Я уж не говорю о том, что операция логарифмирования чувствительна к добавлению константы - а в геофизике довольно много измерений выполняются как раз с точностью до произвольной константы. Поэтому логика здравого смысла требует, чтобы при обработке симметрия результатов относительно смещения уровня не нарушалась.
Отличный выбор статьи (интересная тема и хороший уровень изложения) и перевод человеческий! Спасибо и за первое, и за второе! Прочитал с большим удовольствием, чего желаю и всем остальным!
Будем думать... но я все-таки поясню ситуацию: мои коллеги, с которыми я недавно работал в недрах Эльбруса, с помощью лидаров наблюдают за динамикой выделения газов во внутренностях (почти) действующего вулкана. Эти измерения ведутся в самых дальних тупиковых штреках 4-километровой штольни БНО, специально вырубленной в горе Андырчи для решения разнообразных научных задач. Контроль воздушных потоков для них - это вспомогательные измерения, чтобы вводить в свои данные поправку "за ветер". Сотни датчиков им точно не нужны :-(
Я еще попробую пообщаться с метеорологами, которые детально изучают процессы в приземном слое для уточнения глобальных атмосферных моделей. У них, в частности, есть задача измерения воздушных потоков под пологом густого леса (в том числе в тропиках). Есть подозрение, что там ветры тоже не очень сильные... Возможно, что им тоже были бы интересны точные анемометры для малых скоростей ветра. Тогда уже можно будет ставить вопрос о не-символической партии таких датчиков.
Интересный график! А чем может быть вызван рост ошибки на начальном участке (примерно 100-300мс)? Какие-то установочные процессы после включения? Или это типовой дефект при малых скоростях потока? Меня недавно спрашивали, чем лучше измерять скорость ветра в пещерах, а там обычно ветер слабый довольно. Т.е. нужна возможность измерять 0.1м/с и менее.
Простите, пожалуйста... я не хотел никого обидеть и грубоватый намек у меня получился совершенно непреднамеренно. И, тем более, к Вам это абсолютно точно не относится (чтобы в этом убедиться, достаточно просто пролистать ветки). Я имел в виду, что кто-то из "заглянувших на огонек", возможно, просматривает комментарии по диагонали, и поэтому для них продублировал ссылку.
Мне стыдно, что формулировка вышла очень двусмысленная... но отредактировать уже не могу - время вышло :-(((
Это нормальный сайт и хороший критерий, но как обычно, все эти формулы выведены и доказаны для случайных величин. Для временных рядов они будут работать, только если ряд эргодический. Но на практике подавляющее большинство временных рядов таким свойством совершенно точно не обладают. Во всяком случае, если это долговременные наблюдения за природными или социальными процессами (в эконометрике все еще хуже).
Что же касается второй статьи, то пока что я уперся в свой потолок. Не получается даже эмпирически вывести аналогичные формулы для случая, когда на входе вместо случайной величины имеем случайный процесс со степенным спектром. А надо ведь не просто вывести, но еще доказать. Для этого всего-то надо придумать некоторую статистику (или взять готовую) и построить ее теоретическую функцию распределения. Но математики, к которым я обращался с таким вопросом, либо говорят, что это не их специализация, либо обещают подумать... но ответ пока не дают. Да и я их
не слишком активно дергаю...
у меня же ведь тоже своя работа интересная есть... А в свободное время то велосипед, то байдарка, то лыжи, или вообще в горы зовут. Остается надеяться на удачно подстроенную аварию, чтобы ногу сломать, а голова при этом не пострадала. Забью на работу, завернусь в гипс, лягу в больницу и буду обдумывать формулы. А пока что не получается :-(
Да. вопрос очень больной. Проблема проверки результатов и вообще обратной связи в науке встает все острее. Сейчас журналы обычно просто отклоняют статьи, где есть серьезное подозрение на подтасовку или неумышленную ошибку. Но ведь журналов много, рецензенты разные - скорее всего, эта работа просто выйдет где-то еще. А если сомнительная гипотеза для кого-то полезна, то такая статья в разных вариациях будет опубликована многократно, а ее автор может быстро набрать хирша и грантов, обзаведется лобби и станет авторитетом. Такого попробуй покритикуй.
Поэтому я считаю, что такие статьи все-таки надо не отклонять, а публиковать ВМЕСТЕ с откликом рецензента. Особенно если критикуемая статья (гипотеза) - это не единичный случайный всплеск озарения, а систематически развиваемая автором тема. (Кстати, это будет полезно не только для отсечения лженаучных концепций, но и чтобы не выплеснуть с водой ребенка, если он где-то внутри спорной работы все-таки есть).
К сожалению, организовать такой отклик гораздо сложнее, чем просто забраковать статью. Для подготовки контр-публикации рецензент должен вложить на порядок больше усилий, чем на обычную отрицательную рецензию. Часто это труднее, чем свою очередную статью написать. Ведь тема хоть и близкая, а немного чужая, а разобраться в ней надо на уровне "бог", т.к. каждая буква контр-отклика будет рассматриваться под микроскопом. А выхлоп рецензенту из всего этого почти нулевой: очков не заработаешь, по гранту не отчитаешься, да и просто надо от своей основной тематики оторваться. Еще и
карму испортишьврагов наживешь..Хотя мы в наших журналах пытаемся это делать, и иногда это
все-таки получается
Пример: статья и отклик. Или вот эта статья и отклики на нее вот тут и вот тут.
Раньше, пока научные журналы распространялись и читались в бумажном виде, такие контр-отклики как-то работали. Но сейчас все чаще статью скачивают в виде отдельного PDF-файла, из которого совершенно невозможно понять, что статья вызвала бурную дискуссию в том же номере журнала, или даже разгромную критику, но в следующих номерах. Вместо критического разбора гипотезы из любой публикации получается только дополнительная реклама автора.
А затем у такой квази-работы появляются последователи. Кто-то перелопачивает вагон аннотаций, находит там подтверждение своим идеям и мыслям, и без тени сомнения вставляет в свой труд ссылки на такие статьи. Ведь раскапывая нужные результаты в потоке работ, просто невозможно проверить каждый источник, а искать отклики на них просто некогда. А кто-то вполне понимает всю шаткость конструкции, и даже ее критику видел, но умышленно ссылается только на квази-статью, так как это выгодно по каким-то причинам. И к такому цитированию никакой комитет по этике не подкопается.
И что с этим делать - не ясно.
...дать эффективные способы проверки и исправления результатов, что требует тесной привязки анализа научной статьи к самой статье
Ну вот я написал про прямую дискуссию в формате контр-публикаций: казалось бы, куда уж эффективнее? А оказывается, теперь даже и это почти не работает, так как такая дискуссия в журнале средней руки запросто может пройти мимо целевой аудитории. А журналы первой руки (статьи в которых будут точно прочитаны всеми причастными) не особенно стремятся такие дискуссии открывать. Им от этого никакой выгоды нет, только сплошные убытки. Во-первых, теряется имидж (у нас вы найдете только лучшее и бесспорное!), во-вторых, надо как-то так совместить две альтернативные публикации, чтобы никто ни с кем не переругался; в-третьих, вместо такой дискуссии можно три обычных статьи опубликовать...
Если тренировка занимает больше времени, чем поход на нее, это сильно демотивирует.
Воистину! Даже если лес для пробежек - рядом, то просто чтобы собраться-одеться, а потом душ-отходняк... уже набирается минимум полчаса "накладных расходов". А если еще ехать надо куда-то... Поэтому частые, но короткие тренировки (ежедневно по полчаса), может, и самые полезные для здоровья, но очень уж дорого стоят в плане расхода времени.
Длинные мероприятия (на весь день или вообще птн-сб-вск непрерывно) по кпд использования времени гораздо эффективнее. Другой вопрос, что это максимум раз в месяц возможно...
На следующий день после тренировки как под кайфом.
Странно, я на следующий день просто умираю.
Может, это специфика "сверхдлинных" тренировок, но у меня после двухдневной экстремальной для меня нагрузки (ММБ и тому подобное) на следующий день не только ноги отваливаются, но и голова провисает. Зато на второй-третий день сознание ясное и чистое, когда все самые заковыристые задачки внезапно решаются: за пару часов иногда делаешь дневную работу. Хотя натертые и опухшие ноги еще не ходят при этом, и даже обуваться больно ;-) Правда, мне проще - я удаленно работаю...
Спасибо за совет, тоже думали об этом ;-) Температура почти стабильна, поэтому поправку за T все равно придется вводить, но ультразвук хотя бы к питанию не так чувствителен.
В той сфере, где я работаю - пишут программы для научных расчетов. Причем не только "одноразовки" для личного пользования (когда выбор языка определяется преимущественно тем, на чем учили программировать в ВУЗе), но и "перемалыватели чисел", так как по производительности на таких задачах современный фортран вполне себе держится в лидерах, а по простоте и удобству кодирования именно вычислений многих соперников превосходит. Насколько я знаю от коллег, во многих научных организациях (и не только в РФ) это до сих пор либо выбор номер 1, либо близко к тому.
Кстати, вот тут я недавно написал небольшое эссе о том, как и зачем научные сотрудники пишут "одноразовые" программы (носителям чересчур серьезного выражения лица просьба ссылку не открывать, не рискуйте, хотя в каждой шутке есть доля шутки ;-).
Какие бы вы пункты назвали универсальными за пределами С?
Ничего не могу сказать про универсальность, но, к примеру, в фортране вполне применимы 2-7, 13-15, 17-19, 22-23, 26-30, 35-37. Язык, конечно, не самый популярный сейчас, но в своей нише весьма конкурентоспособный
del
А может отладчик нормальный завести?
Ну вот у меня отладчик VS, и я не умею в нем поставить точку останова на вызове конкретной функции (например check_condition2() или на <Оператор_1> внутри строки:
Поэтому для отладки мне удобнее написать:
Может, конечно, это только в фортране такая специфика... или надо на более последнюю версию VS перейти?
Множественные return хороши в C++ в чистом C, правило одного return имеет смысл, потому что перед ним как правило стоит код освобождения ресурсов и метка для goto.
Кстати да - в фортране тоже так делаю. Если функция должна какие-то ресурсы освобождать, то этот код пишется в конце функции, перед return, и с меткой. А по тексту вместо return пишется goto. И это почти единственный случай (имхо), когда в современном фортране goto оправдан, т.к. позволяет избежать многоуровневой вложенности, если попытаться обойтись без него.
Правда, у такого стиля есть
свои недостатки
Например, у меня довольно часто функция настраивает свой контекст, потом открывает диалоговое окно и задает какие-то вопросы, потом работает с файлом и т.д. Причем брейк может из любого места случиться. Потому перед return может быть не одна метка, а две или даже три. Тут уже вопрос, а стоит ли так писать, или лучше структурно? Для себя я решаю так: пока переходы goto не "перекрещиваются", это терпимо, например:
А вот переход goto 900 после оператора goto 800 - это уже было бы некузяво, надо функцию декомпозировать.
Я здесь крокодилмимо (на С не пишу и язык не знаю), поэтому читал, примеряя все правила к своему языку. По ходу отмечал те пункты, которые к фортрану не очень подходят.... А потом открыл комментарий heCalligrapher и внезапно увидел, что почти все критикуемые им пункты (кроме 12 и 32),
уже присутствуют в списке моих пометок
Полностью применимы: 2-7, 13-15, 17-19, 22-23, 26-30, 35-37... Остальное (из не прокомментированного heCalligrapher), в основном, относится к специфике языка. Например, запись вида if (x = 10) ... у нас даст ошибку компиляции, поэтому писать что-то типа if (10 = x) ... никому и в голову не придет ;-) А за пп.33 отвечает язык (повторный USE игнорируется, что очень удобно при множественных ссылках на один модуль из других включаемых модулей). А вот к пп.17: небольшая добавка: если это не повлечет заметных накладных расходов, то лучше ВСЕ входные параметры функции проверять, а не только указатели. Ну и лично я стараюсь начинать файл с высокоуровневых функций, - мне проще иди от общего к частному. Если же частного слишком много, оно выноситься в отдельный модуль.
Если убрать специфику конкретного языка, то правила "хорошего тона" будут почти одинаковы для всех языков одной группы ;-)
Кто-то что-нибудь понял?
Картинки говорят сами за себя, но статья могла бы быть гораздо понятнее (и полезнее для очень многих читателей), если добавить в ее начало преамбулу про анализ остатков, т.е. ошибок аппроксимации данных какой-то моделью. Обычно модель можно считать хорошей, если эти ошибки не только малы, но и случайны. Множество математических методов в том или ином виде опираются на гипотезу о случайности шумов и, соответственно, ошибок. Поэтому если вдруг выясняется, что ошибки не случайны, то это серьезный повод задуматься про адекватность модели. Вот простой пример: пусть некоторая величина меняется по параболическому закону, а мы видим только результат измерений и пытаемся аппроксимировать эту зависимость прямой линией. Зашумленный фрагмент параболы может быть очень похож на прямую, но если посмотреть на остатки аппроксимации, то там будет виден явный "зигзаг", что сразу же наведет на мысль о недостаточности линейной модели.
Вот нарисовал пару иллюстраций
прямо на своем "рабочем столе", даже не подбирая параметры (если поварьировать кривизну параболы, амплитуду шума и число точек данных, то можно сделать гораздо нагляднее):
Это фрагмент параболы с шумом, - график довольно похож на линейный рост.
А вот параметры линейной аппроксимации:
Коэффициент корреляции 0.983, 1-R^2=0.033, линейная модель объясняет более 98% дисперсии сигнала... она почти идеальна? Но посмотрим-ка теперь на график остатков:
По нему сразу же видно, что в данных есть еще какая-то неучтенная, но абсолютно четкая динамика. Да, конечно, внимательный исследователь мог бы это заметить уже по первому графику, а тем более по второму. Но когда у тебя сотни таких рядов, то часто на изучение таких подробностей нет времени. Картинки листаются со скоростью прокрутки экрана... потом чуть внимательнее смотрим на таблицу со значениями на 1-R^2, где все почти на нуле... все нормально?
А вот график остатков даже при самом беглом просмотре не оставляет ни малейших сомнений, что с моделью что-то не так ;-)
Ну а теперь самое главное: неслучайность остатков может быть самой разной. То есть там может присутствовать не только динамика (закономерное изменение) средних значений, но и динамика дисперсии. В частности, дисперсия остатков сплошь и рядом будет расти со временем, если ряд имеет тенденцию к экспоненциальному росту, а амплитуда флуктуаций пропорциональна текущему уровню (а это типичнейшая ситуация в эконометрике). Поэтому при построении любых моделей и аппроксимаций очень важно не просто оценивать погрешность модели, но и анализировать остатки на предмет выявления там скрытых (неучтенных моделью) зависимостей и закономерностей. Собственно, обсуждаемая статья именно этому и посвящена. Поэтому мне очень жаль, что она написана в расчете на крайне узкого специалиста, а у большинства остальных читателей возникает впечатление "ничего не понятно". Тема-то ведь важная и полезная...
А еще для законченности и завершенности в статье не хватает хотя бы беглого пояснения основных идей, на которые опираются тесты Диблази-Боуманна, Уайта, Юса и Чжоу. Как рассчитывается критическая статистика теста, и почему она хорошо реагирует на отсутствие гетероскедастичности? Подчеркну: не хватает не формул для расчета статистик (они легко ищутся), а именно внятного, на пальцах, описания идей. Ведь базовые идеи у практически всех статистик весьма ясные и понятные. Вообще, сейчас довольно модно начинать изучение анализа данных с освоения программ и обучения правильному порядку "нажимания кнопок". При этом математика, которая стоит за всем этим, иногда кажется сложной и непонятной. Хотя на самом деле там все очень просто! Точнее, формулы могут быть очень заумными, но вот стоящие за ними идеи - почти всегда просты и прозрачны. Но понять эти идеи, просто читая инструкции к программе, можно далеко не всегда. Тут как никогда важен диалог с преподавателем (лектором). Именно этим и хороши многие хабросстатьи, что они "про идеи", а потом в обсуждении - диалог.
Поэтому, во-первых, спасибо Артему @acheremuhin за его цикл статей по статистике. А во-вторых, большая просьба к нему же не забывать рассказывать про идеи, прежде чем придавливать читателя полезными, но не всегда простыми для понимания фактами ;-)
Я очень ценю переводы, которые делает OlegSivchenko, и обычно с большим удовольствием их читаю, но этой статье пока что поставил минус. К сожалению, с точки зрения геофизика, она содержит слишком много весьма сомнительных (мягко говоря) гипотез и утверждений. Многие из них прямо противоречат общепризнанным научным моделям и фактам. Например:
"… Залежи железа вытягиваются вдоль линий магнитного поля..."
Палеомагнетизм - это немного о другом, вот классический учебник.
"Само такое облако очень велико, и на его полное прохождение через Солнечную систему могло уйти порядка 500 000 лет, что и объясняет хотя бы одну итерацию «снежка», а также быстрое и кардинальное перемагничивание Земли"
Механизм геодинамо - конвективные процессы в жидком ядре, там совсем другая энергетика и характерные времена. Облако космической пыли для него - ни о чем. Специалисты пишут, что типичная инверсия МП происходит на порядок быстрее, за 1-10 тыс.лет. И что их было множество за "последнее время" (Фанерозой). То есть: 1) прохождение Земли через облако пыли вряд ли может вызвать инверсию МПЗ, и 2) инверсия вовсе не приводит к замораживанию поверхности. Сразу два вопроса к одному предложению...
"наклон земной оси, сейчас составляющий 23,44°, мог резко увеличиться из-за столкновения с крупным астероидом, а затем постепенно выравниваться"
Я не верю в теорию заговоров, но такое впечатление, что адепты гипотезы ударного изменения наклона земной оси действительно сговорились ;-) Вот тут можно глянуть небольшой список вопросов к этой теории
и это далеко не все глюки, увы...
На мой взгляд, текст нуждается в серьезной доработке, а пока что его научный (технический?) уровень не соответствует требованиям Хабра :-((( Очень надеюсь увидеть исправленный вариант статьи, так как тема действительно интересная...
У копытных травоядных в отличии от хищников «прошивка» в мозгах довольно примитивная, до описанной Вами стратегии еще надо додуматься.
Согласен, повод для размышлений имеется,
и даже не один ;-)
Например, это именно стратегия или все-таки тактика? А если серьезно, то:
травоядные ведь чешутся о землю, деревья, камни и прочее, чтобы от паразитов избавиться? (Кстати, подскажите, пожалуйста: а олени так чешутся?). И если от этого навыка исходить, то вроде бы не такой уж и большой шаг получается. Или не пытаются, потому что все равно не получится?
А почему олени в видео так спокойно реагируют на приближающегося дхоля? Никакой попытки убежать или хотя бы лягнуть? У самки ведь рогов нет, голову наклонять и бодаться полностью бесполезно. Может ли быть такое, что дхоли мимикрируют под телят (размер-то похожий и цвет близкий), и из-за этого копытные не сразу понимают, что перед ним хищник?
Или просто эволюция еще не успела их приучить реагировать на этот вид хищников?
И второй вопрос: когда дхоль он уже вцепился, олень выглядит беззащитным. Но почему он не пытается, например, придавить дхоля, навалившись этим местом на дерево? Массы-то не сопоставимые, собачке вряд ли понравится.
Я уж не говорю, что второй олень в этот момент дхоля запросто мог бы лягнуть. Но это, видимо, сложно и опасно для лягающей особи, хотя и может быть полезно для вида...
Отбеливание спектра - это довольно распространенный подход при анализе данных и поиске связей между сигналами, но у него есть изрядное количество недостатков. Во-первых, для этого надо уметь в дробное дифференцирование, а при наличии пропущенных наблюдений и прочего брака (а в геофизике и при мониторинге без них не бывает) это не так просто сделать. Я вот в своем пакете для анализа временных рядов до сих пор не смог это реализовать. А принудительно заполнять пропуски не хочу, у нас вся идеология обработки строится на том, чтобы вымышленные значения не использовать. Ведь любое заполнение пропусков требует наличия модели сигнала, по которой эти значения генерируются. А у нас одна из основных целей обработки обычно как раз и состоит в том, чтобы такую модель построить.
Во-вторых, отбеливать спектр - это намного сложнее, чем просто посчитать "квазикорреляцию" и оценить ее значимость по специально подкорректированным формулам. Если, конечно, такие формулы удастся построить (для чего как раз и нужно то самое теоретическое распределение посчитать).
В- третьих, при работе в терминах корреляций (когда имеешь дело с практическими сигналами) обычно несложно построить робастную версию алгоритма процессинга данных без слишком искусственных ухищрений. Если же анализ включает процедуру отбеливания спектра, то это гораздо сложнее (во всяком случае, для меня), и уж точно не слишком интуитивно. Я вообще предпочитаю работать во временной области, а не в частотной - это намного понятнее и результаты интерпретировать проще почти всегда. А что получится, если сделать преобразование Фурье, потом прологарифмировать спектр, потом обратное преобразование Фурье, мне сложно представить. Попробовать можно, конечно, но там же еще с фазами какие-то трюки потребуются... И шуметь такой алгоритм на неидеальных данных (а реальные данные мониторинга всегда со странностями) наверняка будет ужасно.
Исходный-то сигнал логарифмировать бесполезно. Ведь нестационарность при логарифмировании не устраняется. И степенной спектр плоским тоже не станет: если сигнал далек от нуля, то после логарифмирования его спектр так и останется степенным. Я уж не говорю о том, что операция логарифмирования чувствительна к добавлению константы - а в геофизике довольно много измерений выполняются как раз с точностью до произвольной константы. Поэтому логика здравого смысла требует, чтобы при обработке симметрия результатов относительно смещения уровня не нарушалась.
Отличный выбор статьи (интересная тема и хороший уровень изложения) и перевод человеческий! Спасибо и за первое, и за второе! Прочитал с большим удовольствием, чего желаю и всем остальным!
Спасибо за информацию, идеи и предложения!
Будем думать... но я все-таки поясню ситуацию: мои коллеги, с которыми я недавно работал в недрах Эльбруса, с помощью лидаров наблюдают за динамикой выделения газов во внутренностях (почти) действующего вулкана. Эти измерения ведутся в самых дальних тупиковых штреках 4-километровой штольни БНО, специально вырубленной в горе Андырчи для решения разнообразных научных задач. Контроль воздушных потоков для них - это вспомогательные измерения, чтобы вводить в свои данные поправку "за ветер". Сотни датчиков им точно не нужны :-(
Я еще попробую пообщаться с метеорологами, которые детально изучают процессы в приземном слое для уточнения глобальных атмосферных моделей. У них, в частности, есть задача измерения воздушных потоков под пологом густого леса (в том числе в тропиках). Есть подозрение, что там ветры тоже не очень сильные... Возможно, что им тоже были бы интересны точные анемометры для малых скоростей ветра. Тогда уже можно будет ставить вопрос о не-символической партии таких датчиков.
Интересный график! А чем может быть вызван рост ошибки на начальном участке (примерно 100-300мс)? Какие-то установочные процессы после включения? Или это типовой дефект при малых скоростях потока? Меня недавно спрашивали, чем лучше измерять скорость ветра в пещерах, а там обычно ветер слабый довольно. Т.е. нужна возможность измерять 0.1м/с и менее.
Простите, пожалуйста... я не хотел никого обидеть и грубоватый намек у меня получился совершенно непреднамеренно. И, тем более, к Вам это абсолютно точно не относится (чтобы в этом убедиться, достаточно просто пролистать ветки). Я имел в виду, что кто-то из "заглянувших на огонек", возможно, просматривает комментарии по диагонали, и поэтому для них продублировал ссылку.
Мне стыдно, что формулировка вышла очень двусмысленная... но отредактировать уже не могу - время вышло :-(((
Это нормальный сайт и хороший критерий, но как обычно, все эти формулы выведены и доказаны для случайных величин. Для временных рядов они будут работать, только если ряд эргодический. Но на практике подавляющее большинство временных рядов таким свойством совершенно точно не обладают. Во всяком случае, если это долговременные наблюдения за природными или социальными процессами (в эконометрике все еще хуже).
Что же касается второй статьи, то пока что я уперся в свой потолок. Не получается даже эмпирически вывести аналогичные формулы для случая, когда на входе вместо случайной величины имеем случайный процесс со степенным спектром. А надо ведь не просто вывести, но еще доказать. Для этого всего-то надо придумать некоторую статистику (или взять готовую) и построить ее теоретическую функцию распределения. Но математики, к которым я обращался с таким вопросом, либо говорят, что это не их специализация, либо обещают подумать... но ответ пока не дают. Да и я их
не слишком активно дергаю...
у меня же ведь тоже своя работа интересная есть... А в свободное время то велосипед, то байдарка, то лыжи, или вообще в горы зовут. Остается надеяться на удачно подстроенную аварию, чтобы ногу сломать, а голова при этом не пострадала. Забью на работу, завернусь в гипс, лягу в больницу и буду обдумывать формулы. А пока что не получается :-(
..
Хорошо. Ну так опровергните меня или Вольтера не словами, а мат. анализом
Прошу прощения за занудство, но для тех, кто читает комментарии выборочно, дам ссылку на опровержение именно матанализом в ветке чуть выше.