Русский
Русский
English
Статистика
Реклама

Зависимость

Перевод Путаница зависимостей. Как я взломал Apple, Microsoft и десятки других компаний

02.04.2021 20:22:21 | Автор: admin

С тех пор как я начал учиться программировать, я восхищаюсь уровнем доверия, который мы вкладываем в простую команду, подобную этой:

pip install package_name

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

Вы, наверное, уже слышали о таких инструментах у Node есть менеджер npm и реестр npm, система управления пакетами pip языка Python использует PyPI (Python Package Index), а систему gems для языка Ruby можно найти на сайте RubyGems.

Загрузив и установив пакет из любого из этих источников, вы, по сути, доверяете его издателю, запуская соответствующий код на своём компьютере. Так может ли эта слепая вера быть использована злоумышленниками?


Конечно, может.

Ни одна из служб размещения пакетов не может гарантировать, что весь код, загружаемый её пользователями, не содержит вредоносных программ. Прошлое исследование показало, что typosquatting атака с использованием версий имён популярных пакетов с опечатками может быть невероятно эффективной при получении доступа к случайным компьютерам по всему миру.

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

Идея

Пытаясь взломать PayPal вместе со мной летом 2020 года, Джастин Гарднер поделился интересным фрагментом исходного кода Node.js, найденного в GitHub.

Код предназначался для внутреннего использования в PayPal, и в его файле package.json, по-видимому, содержалась смесь публичных и частных зависимостей публичные пакеты от npm, а также имена непубличных пакетов, скорее всего, размещённых внутри PayPal. В то время этих имён не было в публичном реестре npm.

С логикой, диктующей, какой пакет должен быть получен из неясного здесь источника, возникло несколько вопросов:

  • Что произойдёт при загрузке в npm вредоносного кода с этими именами? Возможно ли, что некоторые внутренние проекты PayPal начнут по умолчанию переходить на новые публичные пакеты вместо частных?

  • Начнут ли разработчики или даже автоматизированные системы выполнять код внутри библиотек?

  • Если это сработает, сможем ли мы получить за это вознаграждение?

  • Сработает ли такая атака и против других компаний?

Без лишних церемоний я стал разрабатывать план, чтобы ответить на эти вопросы.

Идея заключалась в загрузке собственных вредоносных пакетов Node в реестр npm под всеми невостребованными именами, которые будут звонить домой с каждого компьютера, на котором они были установлены. Если какой-либо из пакетов в итоге устанавливается на серверах, принадлежащих PayPal, или в любом другом месте, то содержащийся в них код немедленно уведомляет меня.

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

Это всегда DNS

К счастью, npm позволяет при установке пакета автоматически выполнять произвольный код, что облегчает создание пакета Node, который собирает некоторую базовую информацию о каждом компьютере, на котором он установлен, с помощью своего сценария preinstall.

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

Остался только вопрос: как мне вернуть эти данные?

Зная, что большинство возможных целей находится глубоко внутри хорошо защищённых корпоративных сетей, я решил, что кража данных DNS это правильный путь.

Отправка информации моему серверу по протоколу DNS не была важна для работы самого теста, но она указывала на меньшую вероятность блокировки трафика и его обнаружения на выходе.Данные в шестнадцатеричной кодировке использовались как часть DNS-запроса, который достигал моего собственного полномочного сервера доменных имён напрямую или через промежуточные сопоставители. Сервер был настроен для регистрации каждого полученного запроса, по сути, сохраняя запись каждого компьютера, в который были загружены пакеты.

Чем больше, тем лучше

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

Первая стратегия заключалась в поиске альтернативных экосистем для атаки. Поэтому я перенёс код как на Python, так и на Ruby, чтобы можно было загружать аналогичные пакеты в PyPI (Python Package Index) и RubyGems соответственно.

Однако, возможно, самой важной частью этого теста был поиск максимально возможного количества значимых имён зависимостей.

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

Однако, оказалось, что лучше всего искать имена частных пакетов... в файлах JavaScript.

Видимо, довольно часто внутренние файлы package.json с именами зависимостей проектов JavaScript, встраиваются в общедоступные файлы сценариев во время их сборки, раскрывая имена внутренних пакетов. Точно так же получаемые по каналам утечки внутренние пути или вызовы require() в таких файлах также могут содержать имена зависимостей. Apple, Yelp и Tesla это лишь несколько примеров компаний, у которых внутренние имена были раскрыты таким образом.

Во второй половине 2020 года, благодаря помощи пользователя @streaak и его замечательным навыкам реконструкции, мы смогли автоматически просканировать миллионы доменов, принадлежащих целевым компаниям, и извлечь сотни дополнительных имён пакетов JavaScript, которые ещё не были заявлены в реестре npm.Затем я загрузил свой код в службу размещения пакетов под всеми найденными именами и стал ждать обратных вызовов.

Результаты

Успех был просто поразительным.

От единичных ошибок, допущенных разработчиками на собственных компьютерах, до неправильно сконфигурированных внутренних или облачных серверов сборки, до системно уязвимых конвейеров разработки, было ясно одно: использование действительных имён внутренних пакетов было способом, который почти наверняка позволял проникнуть в сети некоторых крупнейших технологических компаний, получить доступ к удалённому выполнению кода и, возможно, позволить злоумышленникам добавлять бэкдоры во время сборки.

На тот момент уязвимость этого типа, которую я начал называть путаницей зависимостей, была обнаружен более чем в 35 организациях, во всех трёх тестируемых языках программирования. У подавляющего большинства затронутых компаний больше 1000 сотрудников, что, скорее всего, отражает более высокую распространённость внутреннего использования библиотек в более крупных организациях.

Поскольку имена зависимостей JavaScript легче найти, почти 75% всех зарегистрированных обратных вызовов исходили из пакетов npm, но это не обязательно означает, что Python и Ruby менее восприимчивы к такой атаке. На самом деле, несмотря на то что во время моих поисков мне удалось идентифицировать лишь внутренние имена gem для Ruby, принадлежащие восьми организациям, четыре из этих компаний оказались уязвимыми для путаницы зависимостей посредством RubyGems.

Одна такая компания канадский гигант электронной коммерции Giant Shopify, система сборки которой автоматически устанавливала пакет gem для Ruby с именем shopify-cloud всего лишь через несколько часов после того, как я его загрузил, а затем попытался выполнить код внутри него. Специалисты Shopify подготовили исправление в течение дня, а за обнаружение ошибки была присуждена награда в размере 30000 долларов.

Ещё одна награда в размере 30000 долларов была получена от Apple после того, как код в пакете Node, который я загрузил в npm в августе 2020 года, был выполнен на нескольких компьютерах внутри сети этой компании. Затронутые проекты оказались связаны с системой аутентификации Apple, известной за пределами компании как Apple ID.

Когда я подал идею о том, что эта ошибка, возможно, позволяла злоумышленникам внедрять бэкдоры в Apple ID, в компании Apple не посчитали, что этот уровень воздействия точно отражает проблему, и заявили:

Реализация бэкдора в оперативной службе требует более сложной последовательности событий, и это очень специфический термин, который несёт в себе дополнительные коннотации.

Однако в компании Apple подтвердили возможность удалённого выполнения кода на серверах Apple с помощью этой технологии пакетов npm. Судя по потоку установок пакетов, проблема была исправлена в течение двух недель после моего отчёта, но премия за обнаружение ошибки была присуждена менее чем за день до этой публикации.

Такое же использование пакетов npm, устанавливаемых как на внутренние серверы, так и на ПК отдельных разработчиков, наблюдалось и в нескольких других успешных атаках на другие компании, причём некоторые установки часто выполнялись через часы или даже минуты после загрузки пакетов.

О, а имена PayPal, с которых всё началось? Они тоже сработали, что привело к ещё одной награде в размере 30 000 долларов. Фактически размер большинства присужденных премий за обнаружение ошибки был максимально разрешённым в рамках политики каждой программы, а иногда и превышал максимум, подтверждая в целом высокую серьезность уязвимости путаница зависимостей.

К затронутым компаниям также относятся Netflix, Yelp и Uber.

Это не баг, это фича

Несмотря на получение большого количества результатов по уязвимости путаница зависимости, одна деталь была и в определённой степени остаётся до сих пор неясной: почему это происходит? Каковы основные первопричины уязвимости такого рода?

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

Например, главный виновник путаницы зависимостей в Python, это, по-видимому, неправильное использование небезопасного по своей конструкции аргумента командной строки --extra-index-url. Если, используя этот аргумент с командой pip install library, указать собственный индекс пакета, можно обнаружить, что он работает ожидаемым образом, но то, что pip на самом деле делает за кулисами, выглядит примерно так:

  • проверяет существование library в указанном (внутреннем) индексе пакетов;

  • проверяет существование library в публичном индексе пакетов (PyPI);

  • устанавливает любую найденную версию. Если пакет существует в обоих индексах, то по умолчанию он устанавливается из источника с более высоким номером версии.

Поэтому загрузка пакета с именем library 9000.0.0 в PyPI приведёт к захвату зависимости в приведённом выше примере.

Хотя такое поведение уже было широко известно, простого поиска в GitHub выражения --extra-index-url было достаточно, чтобы найти несколько уязвимых сценариев, принадлежащих крупным организациям, включая ошибку, влияющую на компонент Microsoft .NET Core. Данная уязвимость, которая, возможно, позволила бы добавлять бэкдоры в .NET Core, к сожалению, была обнаружена вне рамок программы вознаграждения за нахождение ошибок в .NET.

В Ruby команда gem install --source работает аналогичным образом, но мне не удалось подтвердить, было ли её использование основной причиной каких-либо моих находок.

Конечно, замена --extra-index-url на --index-url быстро и прямо исправляет уязвимость, но снизить риск некоторых других вариантов уязвимости путаница зависимостей оказалось гораздо труднее.

JFrog Artifactory, часть программного обеспечения, широко используемая для размещения внутренних пакетов всех типов, предлагает возможность смешивать внутренние и публичные библиотеки в одном виртуальном репозитории, значительно упрощая управление зависимостями. Однако несколько клиентов заявили, что в Artifactory используется точно такой же уязвимый алгоритм, что был описан выше, при выборе между обслуживанием внутреннего и внешнего пакета с одним именем. На момент написания статьи не было никакого способа изменить это поведение по умолчанию.

В JFrog, как сообщается, знают об этой проблеме, но рассматривает её возможное исправление как запрос функции без расчётного времени его реализации, в то время как некоторые клиенты компании прибегли к изменению системной политики управления зависимостями, чтобы уменьшить риск путаницы зависимостей.

Компания Microsoft также предлагает аналогичную службу размещения пакетов под названием Azure Artifacts. По результатам одного из моих отчётов в эту службу были внесены некоторые незначительные улучшения, чтобы она могла гарантированно предоставить надёжный путь обхода уязвимостей путаница зависимостей. Как ни странно, эта проблема была обнаружена не в результате тестирования самой службы Azure Artifacts, а, скорее, путём успешной атаки на облачную систему Microsoft Office 365, в результате чего за этот отчёт была получена самая высокая награда Azure в размере 40 000 долларов.

Более подробную информацию о первопричинах и рекомендациях по профилактике можно найти в техническом документе Microsoft 3 Ways to Mitigate Risk When Using Private Package Feeds (Три способа снижения риска при использовании каналов частных пакетов).

Будущие исследования?

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

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

Тем не менее я искренне призываю вас, независимо от вашего уровня опыта, потратить некоторое время и проработать эту идею в глубине своего сознания, независимо от того, связана она с безопасностью управления зависимостями или нет.

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

Узнайте, как прокачаться в других специальностях или освоить их с нуля:

Другие профессии и курсы
Подробнее..

Из песочницы Зависимость от новостей как слезть с крючка отслеживания событий. Личный опыт специалиста по цифровой психологии

07.07.2020 12:09:02 | Автор: admin
image

Ежечасный беспорядочный скроллинг ленты в соцсетях, беглые взгляды на ТОП-5 новостей и последующее неизбежное залипание на них, а также бесчисленные переходы по подпискам с горячими новостями все это часть опасной повседневности миллионов людей.

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

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

Новости в моей ладони


Если в эпоху аналоговых СМИ телевизионный зэппинг и его крайняя форма грейзинг считались апофеозом медиа зависимости, то цифровой век, подаривший нам весь мир в кармане, а корне поменял практики потребления новостей. Сегодня лишь немногие заглядывают в почтовый ящик в ожидании свежей хрустящей газеты, а тех, кто спешит к началу вечерних новостных выпусков, становится все меньше и меньше. Актуальный контент находится у нас прямо под пальцами. И при всех преимуществах мгновенного персонального доступа к информации и обилия точек входа, такая доступность скрывает неизбежный побочный эффект нехимическая зависимость от постоянных новостных потоков.

image

Неполезный источник знаний


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

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

Опасность горячих новостей


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

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

Триггеры новостной аддикции


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

Данный эффект описан Ниром Эйялем в работе Hooked. На крючке, где раскрывается цепочка формирования привычек постоянно обновлять почту, проверять новые сообщения в мессенджерах и соцсетях. В отношении новостного серфинга все то же самое: ссылки на стартовых страницах поисковиков (Яндекс, Рамблер, Mail.ru) и мобильных браузеров (Opera, Chrome), а также Push-уведомления, всплывающие окна все это внедренные триггеры, заботливо презентуемые производителями софта и контента для усиления вовлеченности клиента (читай, усугубления зависимости).

image

Новостные ленты: зачем нам все это?


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

  1. Стремление переключиться с негативных мыслей о работе, проблем в личных отношениях и финансовых трудностей. Таким образом, мы даем краткосрочные передышки нервной системе от изнуряющих житейских рефлексий.
  2. Откладывание принятия сложного решения или начала работы. Залипание в соцсетях или новостном агрегаторе популярное проявление эффекта прокрастинации. Благодаря иллюзии полезного времяпрепровождения (ведь новости это важно!) мы стремимся обмануть самих себя, бесконечно оттягивая принятие решения или начала действия.
  3. Взращивание псевдокомпетентности. Благодаря нахождению в постоянном информационном потоке мы создаем ментальный конструкт эрудита человека, который в курсе самых последних событий и трэндов, осведомленного собеседника. Подобное потребление новостей сопоставимо с неструктурированной навигацией по гиперссылкам при попытке изучить новое явление или понятие. Итогом такого познания становится поверхностное и фрагментарное представление о чем-либо, пустое и никчемное знание.

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

Как с этим бороться: личный опыт


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

Автор, длительное время не представлявший своей повседневности без обращения к политическим и общественно-экономическим событиям из ТОП новостей, осознал пагубность этой привычки, применив алгоритм работы с сознанием. Вот перечень предпринятых действий.

  1. Осмыслить запрос. Каждый раз при включении смартфона и нажатии иконки браузера необходимо задавать себе вопрос Зачем?. Ответ должен быть таким же четким напр., посмотреть курс доллара, погоду на завтра, сделать конкретный запрос в поисковике. Питательная среда интернет-зависимости работа на автомате, неосознаваемое действие по потреблению того, что покажут, а самый эффективный антидот осмысленность любого, даже самого небольшого действия.
  2. Только одна новость. Принципиальное следование правилу один день одна новость ограничивает беспорядочный новостной серфинг. На практике это выглядит так: в конце дня я обращаюсь все к тому же списку событий дня, выбираю наиболее интересное и изучаю в первоисточнике. Общая продолжительность даже с учетом изучения комментариев 10 -12 минут.
  3. Не комментировать. Каждый коммент, оставленный под публикацией, провоцирует последующий возврат к нему, чтобы посмотреть, поспорить, а где-то и потроллить. Осознав все это, я поставил запрет на любое текстовое выражение мнений под новостями.
  4. Цифровые детоксикации. Этот прием хорошо известен желающим уменьшить время, проводимое с цифровыми устройствами. В моем случае это сработало в полной мере. В период с 21.00 до 9.00 по будним полный запрет на выход в интернет. То же самое, но на протяжении всего дня в воскресенье. Запрет распространяется на все, включая мессенджеры и почту. Только телефонные звонки. Лучше всего в этот период отключать передачу мобильных данных и Wi-fi.
  5. Отключение триггеров. Сразу после принятия решения я удалил приложения с новостями со смартфона, которые ранее регулярно присылали мне уведомления о важных и неважных событиях. В Telegram отписался от большинства каналов, а в оставшихся отключил уведомления. Также я стал использовать поисковики без информации на титульной странице (у Яндекса ya.ru, у Google первая страница и так только с окошком ввода запроса). То же самое применил к мобильным браузерам, отключив ссылки на новости на стартовом экране.

Список литературы:

1. Olds J. Self-stimulation of the brain; its use to study local effects of hunger, sex, and drugs". Science. 127 (3294): 31524.
2. Травкина Н. Дофаномика: как рынок обманывает наш мозг и как перестать проверять смартфон 80 раз в день.
3. Эйяль Н. Hooked. На кючке. Как создавать продукты, формирующие привычку.
Подробнее..

Корреляция между временными рядами что может быть проще?

16.02.2021 12:20:24 | Автор: admin

Предварительные замечания

К сожалению, прежде чем перейти к собственно материалу статьи, я вынужден сделать небольшое лирическое отступление и объяснить, почему нормально оформленный текст лежит в облаке, а сюда я смог вставить только его сокращенную копию. Дело в том, что я просто не справился с хабраредактором. Очень надеюсь, что кто-то из модераторов не поленится ответить на вопросы под спойлером:

Сказ о том, почему я не справился с оформлением

Для начала, я внимательно прочитал все советы для новичков о том, как оформить статью. Я честно старался им следовать. Подготовив статью в гуглдоках, я проверил текст, расставил ссылки и примечания, добавил формулы и картинки, предварительно сохраненные в habrastorage. После чего воспользовался рекомендованным хабраконвертером.

Я был готов, что при конвертации все сноски исчезнут, и что спойлеры придется заново расставить вручную. Меня не смущало, что все форматирование надо будет проверить, ссылки на рисунки - поправить, а формулы - набрать еще раз. Единственное, к чему я не был готов - что при копировании текста из хабраконвертора в окно редактирования статьи исчезнут АБСОЛЮТНО ВСЕ теги. Причем, буфер обмена у меня работает правильно - в Notepad конвертированный текст вставляется без ошибок.

Конечно, первое, что приходит в голову в такой ситуации: я ведь использую режим wysiwyg (это следует из адресной строки браузера), может, все дело в этом? Наверно, надо переключиться в режим редактирования исходного текста и что-нибудь там поправить? Но на странице редактора просто нет такой кнопки! Получается, что режим wysiwyg - основной и единственный... Но ведь тогда я должен сразу видеть все гиперссылки? А их просто нет?! Или для этого все же надо переключиться в режим "просмотра оформленной публикации"? Но такой кнопки тоже нет! Есть только кнопка отправить на модерацию. Нажав которую, я больше ничего в своем посте изменить не смогу...

Ошеломленный, но не сломленный до конца, я честно взялся за редактирование статьи. Сначала я попытался расставить заголовки. Как это делают нормальные люди в большинстве нормальных редакторов? Выделяют будущий заголовок и нажимают кнопку "Heading N". Но как оказалось, в окне редактирования Хабра сделать это нельзя! Выделяю текст, появляется контекстное меню... но такой опции там просто нет (см. скриншоты)! Как нет и соответствующей кнопки рядом с окном редактора. А по нажатию рекомендованной клавиши "/" выделенный текст просто заменяется на "/" (самое прикольное, что меню, - видимо, относящееся к уже уничтоженному тексту, - при этом все же всплывает!) Если же просто нажать слэш, ничего не выделяя, то контекстное меню позволяет вставить только формулу или изображение. Но не заголовок (см. скриншоты).

Чтобы получить доступ к более полному меню, надо почему-то сначала создать пустую строку. При этом кнопка "...", продублированная в правом верхнем углу любого абзаца, содержит только одну опцию "Удалить". Признаюсь, мне это показалось немножко странным. Но ведь Хабр - это сайт, сделанный профессионалами IT для общения профессионалов IT?! Наверно, я просто что-то не до конца понимаю в современном эргономически выверенном дизайне?!

Ладно, приступим к вставке рисунков. Оформляя статью в гуглдоках, я заранее загрузил их на habrastorage. Теперь надо только открыть хранилище и добавить ссылки в статью. На всякий случай, вхожу в хранилище и... где мои файлы, загруженные в прошлый раз? Их нет (см. скриншоты)! Хотя я всегда логинился под своим именем.

Ну ладно, у всех бывают свои причуды. Очевидно, хранилище Хабра считает излишним хранить историю загрузок пользователя. Но я же все-таки не совсем идиот. В прошлый раз при загрузке изображений я предусмотрительно скопировал прямые ссылки на них. И, понятно, проверил, что эти ссылки работают. Точнее, что они работали сразу после загрузки изображений:

Выбираю в контекстном меню редактора пункт "Картинка". Я уже почти не надеюсь увидеть перед собой "ноготки" от изображений, ранее загруженных мной в habrastorage, хотя по здравому смыслу именно такой результат (с возможностью выбора нужной картинки) был бы самым логичным. И верно - на экране всплывает обычное окно выбора файла. Ничего не поделаешь, надо вручную копипастить ссылку на ранее загруженное изображение. Вставляю... и получаю ответ habrastorage: "Файл не найден".

Вы знаете, это все-таки слишком.

Конечно, любое сообщество вправе ставить входные барьеры и отсеивать тех, кто заведомо профнепригоден. Но я же пишу статью про статобработку, а не собеседуюсь на оформителя публикаций в стеке технологий ушедшего века. Хотя, даже в редакторах MS DOS я все-таки мог перемещаться по тексту клавишами "вправо" и "влево", прыгать на соседнее слово с помощью "Ctrl+вправо" и "Ctrl+влево", а также выделять текст, добавляя к этим клавишам Shift. Поэтому мне трудно понять, почему в 2021г, работая в одном из самых популярных браузеров Google Chrome (версия 87.0.4280.141-64), на сайте Хабра я лишен этих возможностей. Или почему невозможно вставить слово, скопированное в буфер обмена из начала строки, в конец той же самой строки (оно почему-то обрамляется двумя пустыми строчками сверху и снизу). Или почему при копировании фрагмента, содержащего только что оформленную гиперссылку, в соседний абзац, эта гиперссылка таинственно исчезает. Нет, я не критикую редактор Хабра - но как человек, генерирующий и набирающий сотни страниц оригинального текста в год, хочу все-таки высказать сомнение в том, что такое поведение редактора, хмм, удобно для всех. Впрочем, я совсем не профессионал IT, а всего лишь научный сотрудник и по совместительству программист. Возможно, я и правда просто не дорос до нужного уровня.

Тем не менее, я все еще не оставил надежду увидеть свою статью про ложные корреляции здесь, на Хабре. Эта тематика уже не раз звучала тут прежде и вызывала большой интерес. Но самое главное так никто почему-то и не сказал - а у меня, как я думаю, есть ответ на эти вопросы. Заинтересованная и компетентная аудитория, чья критика будет аргументированной и полезной -что еще нужно автору подобных статей?

Однако потратив полный рабочий день на подготовку статьи, я не готов потратить еще два раза по столько на преодоление барьера хабраредактора. Как бы высоко я не оценивал местное сообщество, я просто не вижу смысла осваивать ущербный ретроредактор в качестве теста на профпригодность. Невольно закрадывается сомнение в уровне профессионализма команды Хабра, которая не может (или не хочет?) дать новым пользователям простые и понятные инструменты для оформления публикаций. Или хотя бы доходчиво объяснить, как пользоваться теми, что есть. Но если так, то стоит ли прилагать столько усилий, чтобы стать частью такого сообщества?

P.S. И - да, я несколько раз пытался задать эти вопросы редакторам, писал на почту neo@habr.team, прежде чем высказать все это здесь. Даже пробовал задавать такие вопросы авторам статей, посвященных оформлению хабр-публикаций (хотя это с моей стороны уже почти спам). Но ответов не получил. Поэтому и решил обернуть свою просьбу о помощи вот в такой вот немного странный формат..

Ну или не отвечайте - а просто пропустите эту статью в том виде, как она получилась. Не только затем, чтобы всем "явить дурость автора" ((с) Петр I), но, главное, чтобы интересующиеся этой темой смогли разобраться, откуда же появляются "ложные корреляции" и почему они кажутся суперзначимыми, а затем обсудить это с автором.

А теперь обращаюсь к читателям:

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

Чтобы бегло понять основные тезисы - смотрите текст ниже (но он получился без гиперссылок, рисунков, формул и большинства спойлеров - причины описаны под спойлером в начале статьи).

Содержание:

Дополнительное замечание про распределения: нормально ли, что анализируя данные геофизического мониторинга, мы никогда не встретимся с нормальным распределением?


Часть 1 необходимая тривиальщина

Если вы еще не совсем забыли прочитанное в учебниках по статистике, можете смело этот раздел пропустить, и переходить сразу к части 2-ой.

Как известно, математика невероятно эффективно описывает реальность. Построив абстрактную математическую модель, мы отвлекаемся от всего несущественного, и это позволяет нам не только лаконично выразить свойства моделируемого объекта на языке формул, но часто также и сделать далеко идущие выводы о закономерностях его поведения. Сказать, что такие выводы полезны для практики это не сказать ничего. Буквально вся окружающая нас сейчас техника была бы невозможна без математики, транслирующей физические законы и их следствия в тот формат, который можно непосредственно применять для разных практических нужд.

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

Например, чтобы оценить наличие связи между двумя случайными величинами X и Y, мы можем вычислить коэффициент Rxy корреляции между ними.

Для независимых случайных величин с не слишком экзотическими свойствами значение Rxy будет обычно приближаться к нулю по мере роста объема той выборки, по которой мы оцениваем Rxy. Прелесть и мощь математики проявляется в том, что, имея самую минимальную информацию об исходных случайных величинах (достаточно знать их функцию распределения), мы можем точно сказать, как именно (по какому закону) будет приближаться к нулю Rxy, если X и Y действительно независимы. Например, если X и Y имеют нормальное распределение, то 95%-ный доверительный уровень z95 можно приблизительно оценить по формуле:

z95=2/sqrt(N)

где N это количество пар измерений в выборке (будем считать, что их достаточно много). Говоря простыми словами, если мы оценим коэффициент корреляции Rxy между X и Y по выборке, содержащей 100 пар значений, то для независимых X и Y лишь в одном случае из 20 модуль Rxy окажется больше 0.2. А значениеz99=3/sqrt(N) =0.3) и вовсе будет превышено лишь в 1% случаев. Поэтому, получив в такой ситуации Rxy=0.4 (то есть, намного выше, чем z), мы говорим, что произошло очень редкое и маловероятное, в рамках выдвинутой гипотезы, событие. Настолько редкое, что гипотеза о независимости X и Y (иногда ее называют "нулевая гипотеза"), скорее всего, неверна, и ее надо отвергнуть. Именно так обычно доказывают, что X и Y статистически связаны.

Мало-мальски искушенный читатель, наверно, уже начинает зевать: зачем я опять повторяю известные вещи? Все сказанное выше, действительно, очень похоже на правду. Однако, как говорили еще в древнем Риме, тут не вся правда.

Первый (и очень важный) подводный камень состоит в том, что наши расчеты (которые только что привели к противоречию) на самом деле опирались не только на предположение о независимости случайных величин X и Y, но также еще и на предположение о нормальности их распределения. Аномальное (в рамках нашей модели) значение Rxy действительно говорит, что модель, по всей видимости, неверна. Однако ошибка может быть в любом месте. Вполне возможно, что в X и Y действительно независимы, просто они имеют другое (не гауссовское) распределение. При котором значение Rxy=0.4 при объеме выборки N=100 вполне обыденно и типично.

В частности, наши формулы для оценки z будут бесстыдно врать, если окажется, что дисперсия X и Y бесконечна. Простейший пример такой ситуации это так называемое "пушечное" распределение. Давайте поставиморудие на вращающийся лафет, повернем его в случайное положение (все углы от 0 до 180 равновероятны) и пальнем в прямую бесконечную стену. (Не забываем, что это модель, и снаряд летит по прямой). Теперь, чтобы ввести случайную величину L с бесконечным матожиданием и бесконечной дисперсией, достаточно взять линейку и измерить то расстояние, которое пролетит ядро

до попадания в стенку

Интересно, что если слегка изменить условия, и ввести на стене-мишени ось координат с нулем в основании перпендикуляра, опущенного от пушки на стену, и определить L, как значение на этой оси, то матожидание L теперь будет просто нулем. А дисперсия все равно бесконечна. Для любознательных предлагаю задачку: попробуйте построить "антоним" нашей случайной величины, с конечной дисперсией, но бесконечным матожиданием. Возможно ли это?

К счастью для большинства аналитиков, столь экзотические распределения в обычной практической жизни встречаются редко. Бывает, что распределение может оказаться, например, равномерным, однако это не очень сильно повлияет на уровни значимости z статистики Rxy . Они лишь немного изменятся по сравнению со значениями, рассчитанными для гауссовых X и Y. Конечно, есть еще проблема "тяжелых хвостов", или выбросов, но она сравнительно просто может быть решена выбраковкой таких значений перед началом анализа.

Так все-таки, нужно ли проверять функцию распределения исходных случайных величин на нормальность? Формально, конечно, да... Но могу вас заверить, что для достаточно длинного экспериментального ряда (если, конечно, это не выходной сигнал гауссовского генератора белого шума) такая проверка всегда покажет, что распределение достоверно отличается от нормального. Поэтому общепринятый метод заключается в том, что в такой ситуации уровни значимости все равно вычисляются по стандартным формулам для случайных величин с гауссовым распределением. А затем оговаривается, что поскольку условия применимости этих формул немного нарушены, реальная значимость вместо 99%-ной может оказаться, например, 97%-ной. Считается, что такие различия не играют особой роли, если рассчитанный уровень значимости превышается многократно. Например, если при объеме выборки 10000 корреляция Rxy=0.25 (а оценка 3/sqrt(N) дает значение z99=0.03), то исходную гипотезу о независимости X и Y все равно можно смело отвергнуть. Ведь значение z превышено на порядок!

Буквоеды, конечно, скажут, что подобный вывод не является математически строгим. Но реальный мир всегда отличается от абстрактной модели. При обработке результатов любого эксперимента мы неизбежно должны принимать какие-то допущения, доказать которые невозможно. Вот и в описанном выше примере, несмотря на отсутствие строгости, этот вывод будет верным по существу, так как для действительно независимых случайных величин X и Y такое событие (Rxy=0.25 при объеме выборки 10000) практически невероятно ни при каком разумном распределении X и Y.

Ну что, переходим к расчетам?

Часть 2. Критерий истины практика

А теперь приведу пару фактов, сопоставление которых друг с другом полностью разрушает только что сформулированную, такую стройную и прекрасную картину нашего модельного мира.

Факт первый: при числе измерений порядка 10000 для любых независимых случайных величин с "адекватным" распределением вероятность получения |Rxy| > 0.1 исчезающе мала. Во всяком случае, она существенно меньше, чем 0.01.

Факт второй: если посчитать коэффициент корреляции между любыми геофизическими параметрами, для которых имеются достаточно длинные ряды наблюдений, то сплошь рядом окажется, что Rxy по модулю больше, чем 0.1. Иногда много больше. Причем, это верно для любых пар рядов. В зависимости от конкретного набора параметров, такие "суперзначимые" корреляции могут наблюдаться в половине всех случаев или даже в трех четвертях. Точная цифра не имеет значения ведь согласно теории вероятностей, для действительно независимых величин они должны обнаруживаться чуть чаще, чем никогда. Так что же, все до одного геофизические параметры правда взаимозависимы? Погодите немного с ответом...

Не будем зацикливаться на геофизике. Посчитаем, к примеру, коэффициент корреляции между уровнем воды в скважине на Камчатке и активностью тараканов в аквариуме в подвале лаборатории на Памире (активность измерялась автоматически, непрерывно в течение 5 лет, в рамках эксперимента по прогнозу землетрясений биологическим способом): Внезапно, корреляция равна Rxy= 0.35 при числе измерений около 20 000 (рисунок с графиками сигналов).

А вот для уровня активности сомиков в соседнем аквариуме расчеты дают значение Rxy= +0.16 (рисунок корреляционного поля). Неужели животные как-то чувствуют происходящее в скважине за тысячи километров?!

Дальше еще интереснее. Возьмем ряды чисел микроземлетрясений, произошедших в 1975-1985 годах в нескольких сейсмоактивных районах, и формально их сдвинем по времени лет на 20 (просто добавим поправку к календарю). Теперь прокоррелируем эти ряды, например, с изменениями солнечного радиоизлучения на волне 2800 МГц (10.7 см) в 1955-1965гг. Здравый смысл говорит, что после такого сдвига всякая корреляция должна исчезать. А вот и неправда! Сами значения Rxy при сдвиге, разумеется, поменяются. Но они все равно на порядки выше формальных 99%-ных уровней значимости. Хотя ни о какой причинно-следственной связи при подобном временном сдвиге

и речи не может быть

Например, для сейсмических станций NN 1-6 Гармского полигона корреляция получилась равной +0.04, +0.12, -0.01, +0.28, +0.45 и +0.17при количестве наблюдений около 3800 шт на каждой станции, что соответствует значению z=0.05. А всего из 15 станций значимая на 99%-ном уровне корреляция наблюдается в 9 случаях...

Те же зашкаливающие корреляции наблюдаются и практически для любых социальных процессов, а также в эконометрике. Правда, тут длина временных рядов по объективным причинам намного меньше десятки, в лучшем случае сотни точек. Зато можно коррелировать практически что угодно! Например, успеваемость школьников в Нижневартовске с урожаем кокосов на Филиппинах. А среднегодовую заболеваемость легочными инфекциями в Санкт-Петербурге (возьмем наблюдения за последние 30 лет) с индексом Доу-Джонса. Впрочем, вместо индекса Доу-Джонса с тем же успехом можно подставить в формулы урожайность пшеницы во Франции в двадцатом веке (только добавьте +100 к номеру года), или поголовье овец в Австралии в девятнадцатом (тут уже придется добавить две сотни). Можно даже проделать небольшой трюк, и интерпретировать число 1899 (и другие номера лет), как номер суток, считая с определенной даты. Если подобрать начальную дату так, чтобы этот ряд хронологически совместился с количеством вызовов скорой помощи в сутки в среднем российском городе (для которого вам повезет найти эти данные), итоговый вывод от этого не изменится! То есть, пробуя коррелировать разные случайно выбранные пары достаточно длинных экспериментальных рядов, мы будем лишь изредка получать Rxy, близкий к нулю. Гораздо чаще коэффициент корреляции будет намного выше любых формальных

уровней значимости

Необходимое уточнение: "гораздо чаще" получится, только если наблюдений достаточно много десятки и сотни тысяч отсчетов. Чем короче ряды, чем меньше значение N и чем выше значение z. Поэтому для коротких рядов вероятность, что коэффициент корреляции случайно попадет в интервал [-z, +z], возрастает.

Получается, что абсолютно любые процессы взаимосвязаны? Только для доказательства наличия "значимой" корреляции нужно нарастить длину ряда? Но как тогда быть с примерами, где мы просто "сдвинули" ряд во времени или вообще подменилишаг временной шкалы? Ведь речь тут идет уже не о синхронных процессах (при очень большом желании, поверить в связь школьников и кокосов все-таки можно), а именно о случайно наложенных друг на друга произвольных экспериментальных сигналах?!

Я понимаю, что у половины читателей рука уже тянется к пистолету, чтобы приставить его к виску автора и потребовать доказательства, то есть данные. Сразу скажу, что данных в табличном виде не будет. Оригинальные данные я не имею права выкладывать в сеть (но их описание и картинки можно найти, например, вот тут: раз, два, три). А давать ссылки на общедоступные данные просто не вижу смысла всегда можно возразить, что они специально подобраны. Однако, вы легко можете проверить написанное выше, прокоррелировав между собой пару десятков случайно выбранных рядов долговременных наблюдений практически любых природных и/или социальных процессов, доступных в Сети. Чем более длинные серии вы загрузите, тем ощутимее окажется разница между корреляциями, ожидаемыми для случайных независимых переменных, и фактически полученными значениями Rxy. Самое сложное, что вам придется для этого сделать это импортировать данные в выбранную программу статистического анализа. После этого расчет коэффициента корреляции обычно выполняется нажатием одной кнопки.

Впрочем, пора уже вспомнить о другой половине читателей, которые не поленились проверить мои утверждения (или просто поверили на слово), и теперь пребывают в сомнении когнитивного диссонанса. Ведь расчеты сделаны стопроцентно надежными методами, а достоверность данных не вызывает ни малейших сомнений. При этом причинная связь между рядами абсолютно исключена (особенно, когда они сдвинуты на столетия). И несмотря на все это, корреляция в доброй половине случаев просто зашкаливает. Боюсь, что рука у них уже тоже тянется к пистолету, только дуло направлено не в сторону автора, а к собственному виску...

Так вот, НЕДЕЛАЙТЕЭТОГО!

Прочтите сначала третью часть этого опуса. Я очень старался написать ее так, чтобы предотвратить ненужные жертвы!

Часть 3. А вот и ответы

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

Главное, что отличает случайный процесс от случайной величины процесс явным образом зависит от времени. Проводя наблюдения за каким-то природным явлением, мы вовсе не извлекаем получаемые значения из одной и той же генеральной совокупности. Даже если настройки прибора и положение датчиков не менялись, состояние измеряемого объекта в каждый новый момент времени будет другое. Попросту говоря, это будет уже другая случайная величина. Серию измерений, выполненных одним и тем же прибором, даже неподвижно стоящим под одной и той же горой, нельзя рассматривать, как серию выборок из одного и того же пространства элементарных событий. Это основная причина, почему привычные статистические методы в этом случае не работают.

Повторю еще раз другими словами. Для описания случайного процесса, в отличие от случайной величины, недостаточно задать его функцию распределения один раз. Просто потому, что в разные моменты времени t она может быть разной. А еще для случайного процесса надо определить функцию совместного распределения вероятностей для моментов времени t и t+dt и так далее. Чтобы оценить эти функции, наблюдая за случайным процессом, нужна не одна реализация, а целый ансамбль. Ну, хотя бы десяток реализаций. Причем, это обязательно должны быть реализации одного и того же случайного процесса. Тогда и только тогда для каждого момента времени у нас будет несколько измерений одной и той же случайной величины. Как их обрабатывать дальше, мы уже знаем из школьного вузовского курса статистики.

Но что же делать, если у нас есть только одна Земля, одна Камчатка, один Памир? Как изучать взаимосвязи между процессами, каждый из которых мы наблюдаем в единственном экземпляре?! (тут должна быть театральная пауза ;-)

Не буду врать, что над этим вопросом издревле размышляли лучшие умы человечества. Однако кое-какие способы выкрутиться из этой подставы все же имеются. Оказывается, что для некоторых классов случайных процессов, все характеристики которых неизменны во времени, наличие ансамбля не обязательно! То есть, нам не потребуется десять реализаций, чтобы оценить какую-нибудь статистику. Вместо этого достаточно некоторое время понаблюдать за одной! Например, чтобы оценить коэффициент корреляции между X и Y, достаточно иметь одну реализацию X и еще одну Y. Что, собственно, все мы и делаем, когда вычисляем коэффициент корреляции между потеплением и пиратами. Ну или рыбками на Памире и уровнем в скважине на Камчатке.

Если процесс позволяет такие трюки, то он называется эргодическим. Иногда различают эргодичность по среднему, по дисперсии и т.д. При анализе наблюдений очень часто априори считается, что исследуемые процессы являются эргодическими. Иногда это даже не оговаривается специально.

Но если мы хотим избежать грубейших ошибок, то нельзя забывать, что гипотеза эргодичности это только гипотеза. Подавляющее большинство долговременных наблюдений продолжается конечное время, а на выходе получается единственный ряд. Доказать эргодичность такого процесса в принципе невозможно. Поэтому, начиная анализ данных, мы чаще всего просто постулируем ее явным образом или неявно. А что еще остается делать, если в наличии куча данных и руки чешутся начальник требует срочно использовать всю мощь безупречного, многократно проверенного теоретиками статистического инструментария для достижения практических целей?

Ну а теперь пришло время поставить финальную точку.

На самом деле, все упомянутые в этой статье временные ряды (как, впрочем, и подавляющее большинство других подобных сигналов) вовсе не являются эргодическими. И если доказать эргодичность процесса достаточно сложно (я бы сказал, практически нереально), то вот опровергнуть ее часто можно без особых усилий. Достаточно просто вспомнить, что практически все экспериментальные временные ряды существенно нестационарны. Огромный массив накопленных экспериментальных данных однозначно свидетельствует, что априорная "базовая модель" почти любого природного процесса это вовсе не белый шум (для которого действительно можно заигрывать с эргодичностью). Нет, спектры большинства реальных сигналов имеют степенной вид. А именно, спектральная мощность W пропорциональна периоду T в некоторой положительной степени: WT . В электронике, геофизике и во многих других прикладных областях показатель степени чаще всего лежит где-то между 0.5 и 2.0. В предельном случае (когда показатель степени =2), мы имеем процесс с независимыми случайными приращениями. Для такого процесса каждое следующее значение (в момент времени t+1) состоит из значения в момент времени t и случайной добавки. Про такой процесс говорят, что он имеет бесконечную память. Но если текущие значения ряда зависят от предыдущих, то такой процесс нельзя считать стационарным.

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

Да, конечно, мы можем формально подставить измеренные значения в формулы, и даже посчитать что-то внешне напоминающее Rxy. Однако каким будет теоретическое распределение этой статистики, никому не известно. (Кстати говоря: если Вы можете аккуратно посчитать это распределение для рядов со степенным спектром, то, пожалуйста, напишите это в комментариях или мне в личку. Я сам, к сожалению, не умею - но думаю, что такой результат был бы достаточно интересен для геофизиков, занимающихся обработкой экспериментальных рядов). Ясно только, что классические доверительные границы в этом случае считать бесполезно. Они просто не имеют никакого отношения к делу, так как мы имеем все основания отвергнуть "нулевую модель" вне зависимости от того, получится ли у нас |Rxy| >> z, или же будет Rxy = 0. Ведь занявшись анализом временных рядов, мы уже вышли за пределы этой модели, сформулированной для работы со случайными величинами. А это значит, что полная (правильная) формулировка модели теперь должна включать не два, а три постулата. А именно,

Если выполнены три условия

У1) X и Y статистически независимыУ2) что-нибудь про функции распределения X и Y У3) X и Y это случайные величины (то есть анализируемая выборка составлена из пар (Xi, Yi), извлеченных из одной и той же генеральной совокупности)

ТО значение Rxy почти никогда, по модулю, не будет превышать z.

Вполне очевидно, что когда мы рассматриваем временные ряды, для которых не доказана эргодичность (тем более, есть прямые свидетельства нестационарности), третье условие заведомо нарушается. Этого более чем достаточно, чтобы отклонить сформулированную модель, даже не вычисляя значение Rxy.

Часть 4. И еще раз про доказательство от противного

К сожалению, у меня нет таланта писать доступно и кратко. А донести свою мысль все-таки хочется. Поэтому давайте попробуем заново проследить всю логику доказательства наличия статистической связи между переменными X и Y методом корреляций.

  1. Первый шаг доказательства заключается в том, что мы формулируем некоторый набор требований, или предположений, о характеристиках X и Y. В число этих предположений входит и допущение о том, что они статистически независимы.

  2. На втором шаге мы берем экспериментальные данные и вычисляем некоторую совместную статистику X и Y. В данном случае это статистика Rxy.

  3. Третий шаг состоит в вычислении функции распределения Rxy при условии, что все сформулированные ранее допущения например, условия У1, У2 и У3 истинны.

  4. На четвертом шаге мы сравниваем фактически полученное значение Rxy с теоретическим распределением этой величины. Если оказывается, что вероятность случайно наблюдать именно такое значение Rxy пренебрежимо мала, то отсюда делается вывод, что не все исходные допущения истинны. Проще говоря, что хотя бы одно из условий У1, У2 и У3 ложно.

  5. Наконец, если у нас нет абсолютно никаких сомнений в истинности всех прочих предположений, кроме допущения о статистической независимости X и Y, то мы делаем вывод об ошибочности именно этого допущения. То есть, если мы уверены в истинности У2 и У3, то ложным должно быть условие У1. Что, собственно и означает: связь есть!

Теперь понятно, почему эта схема "сбоит" при работе с нестационарными временными рядами. Сравнивая вычисленный коэффициент корреляции с теоретическими уровнями значимости z, мы не учитываем, что теоретическое распределение z рассчитано для одной модели, а коэффициент корреляции Rxy вычислен совсем для другой. Если упустить из вида этот нюанс, можно получать "значимые корреляции" через раз. Что порою и наблюдается даже в статьях, напечатанных в рецензируемых научных журналах.

Если у вас остается еще хоть капля сомнений, или вы просто не любите абстрактные рассуждения, проведите простой

численный эксперимент

со случайными, независимыми, но не эргодическими рядами. Возьмите полсотни реализаций белого шума S(t) длиной по миллиону значений (t=0,1,... 1000000). Проинтегрируйте каждую такую реализацию по правилу:P(0)=0, P(t+1)=P(t)+S(t).И потом посчитайте значение парного коэффициента корреляции для случайно взятых рядов P(t). Или для их фрагментов (только не слишком коротких). Просто по построению, все эти ряды и фрагменты абсолютно независимы друг от друга. Можно даже не вычислять, чему равен уровень значимости z для коэффициента корреляции Rxy при подобном объеме выборки. Так как первый же тест покажет разницу на порядки. Надеюсь, мне не нужно дополнительно пояснять, что полученный результат совершенно не связан с возможной неидеальностью генератора случайных чисел?Похожий, но чуть менее впечатляющий результат можно получить и для рядов с другими значениями степенного параметра спектра в пределах указанного диапазона. Все дело в том, что такие ряды, в простонародном названии фликкер-шум, страдают так называемой низкочастотной расходимостью спектра. Это значит, что на любом интервале времени максимальную амплитуду имеют те вариации, чья характерная длительность сопоставима с длиной ряда. Если мы рассматриваем ограниченную во времени серию наблюдений, это очень похоже на линейный тренд. А корреляция между двумя линейными трендами, как известно, всегда равна 1. Точнее, оценивать корреляцию для линейно спадающих или растущих функций бессмысленно. Чтобы построить линейную функцию, нужно ровно две точки, которые и определяют число степеней свободы процесса. Можно до бесконечности увеличивать частоту дискретизации такого сигнала, количество информации (= число независимых значений данных) от этого не изменится. Поэтому в формулу для оценки уровня значимости z коэффициента корреляции Rxy в этом случае надо подставлять значение N=2. Ну и чему равно z в таком случае?

Как говорится, вот то-то же и оно.

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

В сухом остатке

  1. Временной ряд это не набор значений некоторой случайной величины! Когда мы формируем выборку из некоторой генеральной совокупности, все измерения можно переставлять как угодно - от этого ничего не изменится. А вот значения временного ряда переставлять нельзя - они всегда индексированы. Принципиально важно, что любые статистики случайного процесса (=временного ряда) явно зависят (или могут зависеть) от времени. Собственно, при анализе наблюдений именно эта зависимость нас чаще всего и интересует.

  2. Для оценки статистик случайного процесса одной реализации, вообще говоря, недостаточно! Это почти то же самое, как оценивать дисперсию случайной величины по единственному ее измерению. Чтобы использовать методы матстатистики, нужен целый пакет рядов (ансамбль реализаций случайного процесса). Если речь идет о парной статистике (корреляция между X и Y), нужен ансамбль из пар временных рядов. Располагая таким набором, мы можем оценивать коэффициент Rxy корреляции между случайными процессами X и Y, как функцию времени t. А вот говорить о корреляции случайных процессов безотносительно момента времени t, в общем случае, беспредметно. Так как значения Rxy в разные моменты времени t, вообще говоря, будут разные.

  3. Увы, но на практике у нас обычно имеется только одна Вселенная и только одна реализация каждого временного ряда, . Чтобы использовать статистические методы при работе с такими данными, приходится опираться на гипотезу эргодичности. Она предполагает, что вместо вычисления какой-то статистики (например, среднего) по ансамблю реализаций, мы можем взять один ряд, усреднить по времени, и получить то же самое. Если ряд эргодический, этот подход реально работает!

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

  5. Если так, то как же тогда анализировать подобные временные ряды, спросите вы?Нестационарные, с трендами, сезонными и суточными циклами, и т.д.? Как искать связь между ними и оценивать ее значимость? Хороший вопрос. Я постараюсь написать об этом в следующей статье. Если, конечно, такая тематика будет интересна читателям Хабра.

P.S. Автор благодарит за полезные замечания и советы И.Цуркиса. При оформлении коллажа использована картинка с вот этого сайта.


Дополнительное замечание про распределения: нормально ли, что анализируя данные геофизического мониторинга, мы никогда не встречаемся с нормальным распределением?

Да-да, я в курсе про Центральную предельную теорему. Но еще больше я склонен верить практике обработки тысяч различных экспериментальных сигналов - прежде всего, данных геофизического мониторинга, но далеко не только его. Поэтому большая просьба к тем "чистым" математикам, которых задевает утверждение, что "отсутствие нормальности - это нормально": не надо ругаться! Просто возьмите десяток-другой экспериментальных рядов, полученных в результате длительных (многие недели и месяцы) наблюдений и содержащих достаточное количество точек данных (десятки тысяч и более). И попробуйте найти среди них такие, чье распределение неотличимо от нормального, например, по критерию хи-квадрат. К сожалению или к счастью, жизнь несколько отличается от

идеальных моделей

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

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

Подробнее..

Жизнь с зависимостью. Курс на выздоровление

08.02.2021 04:16:37 | Автор: admin

Меня зовут Таня, мне 27 лет и совсем недавно я осознала, что я зависимая. Я не курю, не употребляю наркотики и почти не пью. Когда-то это было частью моей жизнь, но теперь это давно в прошлом. Сейчас я активно занимаюсь спортом, являюсь круглой отличницей в университете и постоянно занимаюсь саморазвитием и (саморазрушением) самоулучшением. Тут можно даже спросить в чем же проблема? Может она хочет привлечь внимания и собрать комплиментов?

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

Итак, мой диагноз - эмоциональная зависимость. Реальный мир мной ощущается как вакуум. Я бегу от этого вакуума в поисках новых эмоций (не всегда положительных). Эти эмоции должны быть сильными, всеохватывающими, такими как влюбленность, воодушевление, возбуждение, гнев, ярость. Благодаря им я чувствую себя живой, мир становится красочным, интересным. Но рано или поздно эйфория заканчивается, и я возвращаюсь к состоянию знакомого вакуума - необъятной пустоты внутри себя. В такие моменты в голове назойливо крутится мысль: Если мир такой серый и бессмысленный, то я не хочу в нем жить. Далее фрустрация, состояние апатии, ощущение пустоты внутри себя, после чего снова поиски того, что вытащит меня из этого состояния. И круг повторяется снова и снова. Возникает вопрос: откуда это идет и как от этого избавиться?

Сделаем большой шаг назад в истории человечества и рассмотрим социальные модели общества. Райен Айслер , американский антрополог в своей работе Чаша и былинка делает глубокий исторический обзор культуры планеты и эволюционный взгляд на две основные модели формы отношений человека в обществе. Эти модели она называет модель партнерства и модель доминирования. Первая модель партнерства основывается на единстве, сотрудничестве и удовлетворении взаимных потребностей в обществе. Р.Айслер обнаружила многочисленные легенды и археологические данные, которые описывают раннюю форму цивилизации, где существовали большие пространства, население которых длительный периодсохраняло мир и процветание. В такой модели общества существовал культ женщины, Великой матери. Останки материальной культуры, искусства и мифы указывают на то, что эта древняя социальная культура основывалась наравенстве. Власть, риск и всевозможные заслуги перед обществом распределялись независимо от пола. Такой подход, основанный на совместной деятельности, помогал создавать единые и гармоничные отношения между людьми и другими народами. В середине 4 тысячелетия до н.э культ женского начала начинает вытесняться культом мужского, что приводит кполярному типу цивилизации - доминантному обществу. Оно ассоциируется с мужественностью, ценит готовность отдать свою жизнь и деструктивные действия, такие как завоевание территории и воины. Такая соц. культура построена на неравенстве и, как правило, ставит одну часть общества над другой. Группа людей, стоявших выше, удерживает в своих руках власть, берет на себя риск и получает все вознаграждения, распределяет награды, оставляя нижестоящую группу лишенной власти и зачастую бедной. Люди в таком обществе вместо взаимного сотрудничества связанны конкуренцией, пользуются сравнительным способом мышления - ты или я и образуют иерархию, которая поддерживается силой или угрозой силы. Это создает атмосферу недоверия и разъединения. Такая модель создает созависимое общество, противопоставляя его взаимозависимого общества партнерской модели.

Корни созависмости пронизывают всю структуру доминантой модели общества и присутствуют во всех гражданских институтах, включая даже религиозные структуры. В соотвествии с христианскими догмами, простой человек никогда не попадет в рай без священников, епископов и других посредников церковной иеррархии, в которой доминируют мужчины. Таким образом, причины нашей созависмости своими корнями уходят вглубь нашей социальной культуры. Любая культура, которая ставит одного выше другого, одну расу или пол выше остальных, создает общество, готовое быть созависимым. Прекрасный пример созависмого общества - доминаторная культура Юга США в период Гражданской войны. Состоятельные земледельцы вели легкую и роскошную жизнь, а черные трудились для удовлетворения их экономических и личных потребностей. Большая часть богачей была беспомощна и не владела основными навыками выживания, такими как приготовление пищи, огородными работами, уход за животными. Черные люди наоборот обладали этими навыками, но часто были неспособны планировать и управлять. Когда с рабством было покончено, обе группы увидели сферы, в которых они беспомощны и созависимы.

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

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

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

Несмотря на это, выход все-таки есть. Я пока нахожусь в начале пути избавления от зависимости, но в работе с психологом удалось отметить основные точки навигации. Первым шагом будет услышать себя и понять свои истинные потребности. Это ключевой, но чрезвычайно сложный шаг. Любой выход из зависимых и созависимых отношений сопровождается страхом, виной, стыдом и другими, крайне неприятными чувствами, словно ты умираешь и хочешь облегчить себе участь любыми доступными способами. Но эти способы поддерживают зависимость или усугубляют ее. Важно научиться проживать это чувство пустоты и вакуума, чтобы истинные потребности смогли выплыть наружу. Такими потребностями могут стать: потребность в любви, принятии, близости, признании, уважении, осмысленности жизни. Для ощущения себя счастливым, нужно научится удовлетворять эти потребности здоровым способом, который не такой простой как при зависимости.

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

Надеюсь, эта статья была полезна для вас. Буду благодарна любой конструктивной обратной связи.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru