tag:blogger.com,1999:blog-58994776679268110922024-03-16T11:53:01.893-07:00Linux и Androidalexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.comBlogger1950125tag:blogger.com,1999:blog-5899477667926811092.post-49737203457473822152022-03-26T08:00:00.003-07:002022-03-26T08:00:44.984-07:00Команда vmstat для начинающих<div style="text-align: justify;"><span style="font-family: verdana;">Если вы ищете утилиту командной строки, которую вы можете использовать для доступа к информации о процессах, активности процессора, памяти и т. д., вам будет приятно узнать, что такая утилита есть, и она называется vmstat.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В данной статье мы обсудим основы использования этой утилиты, используя несколько простых для понимания примеров. Необходимо отметить, что все примеры в этой статье были протестированы на машине с Ubuntu 18.04 LTS.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Команда vmstat</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда vmstat в Linux выводит статистику использования виртуальной памяти. Ниже приводится ее синтаксис:</div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">vmstat [options] [delay [count]]</pre></div><div style="text-align: justify;">И вот как справочная страница утилиты объясняет ее работу:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #666666;">vmstat сообщает информацию о процессах, памяти, виртуальной памяти, вводе-выводе, дисках и активности процессора.</span></i></div><div style="text-align: justify;"><i><span style="color: #666666;"><br /></span></i></div><div style="text-align: justify;"><i><span style="color: #666666;">В первом отчете приведены средние значения с момента последней перезагрузки. В дополнительных отчетах содержится информация с выборкой за определенный промежуток времени. Отчеты о процессе и памяти являются мгновенными в любом случае.</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приведены примеры в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда vmstat:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Q1. Как использовать vmstat?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В базовом варианте вы просто выполняете команду vmstat без всяких опций.</div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">vmstat</pre></div><div style="text-align: justify;">Например, в моем случае приведенная выше команда дала следующий вывод:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----<br /> r b swpd free buff cache si so bi bo in cs us sy id wa st<br /> 1 0 0 401160 100252 1307468 0 0 5 17 49 70 0 0 100 0 0</pre></div><div style="text-align: justify;">Как показывает первая строка, выходные данные разделены на шесть разделов. Справочная страница утилиты содержит подробную информацию об этих значениях. Вот выдержка:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Procs</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">r: количество запущенных процессов (работающих или ожидающих выполнения).</div><div style="text-align: justify;">b: количество спящих процессов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Memory</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">swpd: объем используемой виртуальной памяти.</div><div style="text-align: justify;">free: объем свободной памяти.</div><div style="text-align: justify;">buff: количество памяти, используемой в качестве буферов.</div><div style="text-align: justify;">cache: объем памяти, используемой в качестве кеша.</div><div style="text-align: justify;">inact: количество неактивной памяти (опция -a).</div><div style="text-align: justify;">active: количество активной памяти. (опция -a)</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Swap</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">si: объем памяти, выгруженный с диска (/s).</div><div style="text-align: justify;">so: объем памяти, перенесенный на диск (/s).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>IO</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">bi: блоки, полученные от блочного устройства (blocks/s).</div><div style="text-align: justify;">bo: блоки, отправленные на блочное устройство (blocks/s).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>System</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">in: количество прерываний в секунду, включая часы.</div><div style="text-align: justify;">cs: количество переключений контекста в секунду.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>CPU</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Здесь проценты от общего времени процессора.</div><div style="text-align: justify;">us: время, потраченное на запуск кода, не относящегося к ядру (время пользователя).</div><div style="text-align: justify;">sy: время, потраченное на выполнение кода ядра (системное время).</div><div style="text-align: justify;">id: время бездействия. До версии Linux 2.5.41 это включает время ожидания ввода-вывода.</div><div style="text-align: justify;">wa: время, проведенное в ожидании ввода/вывода. До Linux 2.5.41, включено в idle.</div><div style="text-align: justify;">st: время, украденное из виртуальной машины. До Linux 2.6.11 неизвестно.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q2. Как заставить vmstat автоматически обновлять свой вывод?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По умолчанию vmstat выдает выходные данные один раз. Однако, если вы хотите, чтобы vmstat автоматически обновляла свои выходные данные, вы можете сделать это, указав числовое значение в качестве входных данных для команды.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это числовое значение действует как задержка (в секундах), после которой вывод обновляется. Например:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">vmstat 3</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Таким образом, вывод vmstat будет обновляться каждые 3 секунды.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----<br /> r b swpd free buff cache si so bi bo in cs us sy id wa st<br /> 1 0 0 410928 100276 1307480 0 0 5 17 49 70 0 0 100 0 0<br /> 0 0 0 410920 100284 1307480 0 0 0 181 108 143 0 0 100 0 0<br /> 0 0 0 410920 100292 1307480 0 0 0 7 92 132 0 0 100 0 0<br /> 0 0 0 410920 100292 1307480 0 0 0 0 87 124 0 0 100 0 0<br />...<br />...<br />...</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q3. Как заставить vmstat отображать slabinfo?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для slabinfo вам нужно использовать параметр командной строки -m. Обратите внимание, что ядро вашего дистрибутива Linux должно поддерживать slabinfo, чтобы эта опция работала. Если поддержка есть, вам нужно запустить команду с привилегиями sudo.</div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">sudo vmstat -m</pre></div><div style="text-align: justify;">Например, в моем случае выдержка из полученного вывода:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">Cache Num Total Size Pages<br />ufs_inode_cache 0 0 808 40<br />qnx4_inode_cache 0 0 680 48<br />hfsplus_attr_cache 0 0 3840 8<br />hfsplus_icache 0 0 896 36<br />hfs_inode_cache 0 0 832 39<br />minix_inode_cache 0 0 672 48<br />ntfs_big_inode_cache 0 0 960 34<br />ntfs_inode_cache 0 0 296 55<br />jfs_ip 0 0 1280 25<br />xfs_dqtrx 0 0 528 31<br />xfs_dquot 0 0 496 33<br />xfs_buf 0 0 384 42<br />xfs_rui_item 0 0 696 47<br />xfs_rud_item 0 0 176 46<br />xfs_inode 0 0 1024 32<br />xfs_efd_item 0 0 440 37<br />xfs_buf_item 0 0 272 30<br />xfs_trans 0 0 232 35<br />xfs_da_state 0 0 480 34<br />xfs_btree_cur 0 0 224 36<br />...<br />...<br />...</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q4. Как сделать отчет об активности диска с помощью vmstat?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Используйте для этого параметр командной строки -D</div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">vmstat -D</pre></div><div style="text-align: justify;">Вот вывод этой команды в моей системе:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">10 disks<br /> 2 partitions<br /> 15066 total reads<br /> 5937 merged reads<br /> 1272794 read sectors<br /> 20063 milli reading<br /> 155026 writes<br /> 103687 merged writes<br /> 4602472 written sectors<br /> 105279 milli writing<br /> 0 inprogress IO<br /> 126 milli spent IO</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q5. Как заставить vmstat добавлять временную метку к каждой строке вывода?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы команда vmstat добавляла временную метку к каждой выходной строке, используйте командную строку -t:</div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">vmstat -t</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">$ vmstat 2 -t<br />procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----<br /> r b swpd free buff cache si so bi bo in cs us sy id wa st UTC<br /> 2 0 0 410116 100432 1308160 0 0 5 17 49 70 0 0 100 0 0 2020-05-08 09:40:05<br /> 0 0 0 410116 100432 1308160 0 0 0 88 100 136 0 0 100 0 0 2020-05-08 09:40:07<br /> 0 0 0 410116 100440 1308160 0 0 0 18 90 139 0 0 100 0 0 2020-05-08 09:40:09<br /> 0 0 0 410116 100440 1308160 0 0 0 0 93 126 0 0 100 0 0 2020-05-08 09:40:11<br /> 0 0 0 410368 100448 1308160 0 0 0 10 107 144 0 0 100 0 0 2020-05-08 09:40:13<br /> 0 0 0 410368 100448 1308160 0 0 0 0 86 122 0 0 100 0 0 2020-05-08 09:40:15<br /> 0 0 0 410368 100448 1308160 0 0 0 0 101 135 0 0 100 0 0 2020-05-08 09:40:17</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Выделенные записи показывают метку времени, включенную в каждую строку.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В зависимости от того, какую работу вы выполняете в командной строке Linux, команда vmstat может оказаться действительно полезной для вас. Помимо опций, обсуждаемых здесь, есть много других опций командной строки, которые предлагает эта утилита. Отправляйтесь сюда, чтобы узнать больше.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.howtoforge.com/linux-vmstat-command/">Linux vmstat Command Tutorial for Beginners (5 Examples)</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-55456851989875890932022-03-10T11:37:00.000-08:002022-03-10T11:37:50.325-08:00Виртуальные файловые системы в Linux: зачем они нужны и как они работают<div style="text-align: justify;"><span style="font-family: verdana;">Что такое файловая система? По словам <a href="https://www.pearson.com/us/higher-education/program/Love-Linux-Kernel-Development-3rd-Edition/PGM202532.html">Роберта Лава</a>, «файловая система - это иерархическое хранилище данных, привязанных к определенной структуре». Однако это описание одинаково хорошо применимо к VFAT (виртуальная таблица размещения файлов), Git и Cassandra (база данных NoSQL). Так что же отличает файловую систему?<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Основы файловых систем</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ядро Linux требует, чтобы сущность, которая считается файловой системой, должна реализовывать методы open(), read() и write() для постоянных объектов, имеющих название. С точки зрения объектно-ориентированного программирования ядро рассматривает общую файловую систему как абстрактный интерфейс, и эти три главные функции являются «виртуальными», без определения по умолчанию. Соответственно, стандартная реализация файловой системы ядра называется виртуальной файловой системой (VFS).</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZOon1hDl5CrDI526no3B3EVj1VDy3aNaeXueaV3wYE7bRTyeESaqjiFSiPNxXZqUZVLC-iID3cb-5tuFadp0nwdtlvDYv_A3PPi1wVHUEEpD1Lb0jjCIwxvoR4gd3_bDB39S58YVCr8vm73pxFfFqV2hIvIwQsb3MxlzXw9MnxBtIGlveX7FS2g2C=s680" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="202" data-original-width="680" height="190" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZOon1hDl5CrDI526no3B3EVj1VDy3aNaeXueaV3wYE7bRTyeESaqjiFSiPNxXZqUZVLC-iID3cb-5tuFadp0nwdtlvDYv_A3PPi1wVHUEEpD1Lb0jjCIwxvoR4gd3_bDB39S58YVCr8vm73pxFfFqV2hIvIwQsb3MxlzXw9MnxBtIGlveX7FS2g2C=w640-h190" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">VFS лежит в основе известного наблюдения, что в Unix-подобных системах «все является файлом». Подумайте, как странно, что крошечное демо с символьным устройством /dev/console на самом деле работает. Изображение показывает интерактивный сеанс Bash по виртуальному телетайпу (tty). При отправке строки в устройство виртуальной консоли она появляется на виртуальном экране. VFS имеет другие, даже более странные свойства. Например, в ней можно производить поиск.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Все известные файловые системы, такие как ext4, NFS и /proc, предоставляют определения функций большой тройки в структуре данных на языке C, называемой file_operations. Кроме того, некоторые файловые системы расширяют и переопределяют функции VFS в рамках объектно-ориентированного подхода. Как указывает Роберт Лав, абстракция VFS позволяет пользователям Linux безболезненно копировать файлы в и из сторонних операционных систем или абстрактных объектов, таких как каналы, не беспокоясь о внутреннем формате данных. От имени пользовательского пространства с помощью системного вызова процесс может копировать из файла в структуры данных ядра с помощью метода read() одной файловой системы, а затем использовать метод write() другого типа файловой системы для вывода данных.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Определения функций, которые принадлежат самому базовому типу VFS, находятся в файлах fs/*.c в исходном коде ядра, а подкаталоги fs/ содержат определенные файловые системы. Ядро также содержит объекты, подобные файловой системе, такие как cgroups, /dev и tmpfs, которые необходимы на ранних этапах процесса загрузки и поэтому определяются в подкаталоге init/ ядра. Обратите внимание, что cgroups, /dev и tmpfs не вызывают три главные функции file_operations, а вместо этого непосредственно читают и записывают в память.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Диаграмма ниже примерно иллюстрирует, как пользовательское пространство обращается к различным типам файловых систем, обычно монтируемых в системах Linux. Не показаны такие конструкции, как pipe, dmesg и часы POSIX, которые также реализуют struct file_operations и доступ к которым, следовательно, происходит через уровень VFS.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSX66g5cDGlGlVEJMKi-VPHQDu02QFvKd-6mb1gbr2_4tZnFSVDUsDuga_9f5UGCVbVBYi4v47nI17v74x5ij4KKloWfwbHhVxAGS6cjFi4ktodn8F9AVQcJNlPKdZv0DCi7CxnS9BEv_08pZWYJBBo9aFNkzoU7CKe4Q0xFLztI1YZ8hFTYQZk45q=s689" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="388" data-original-width="689" height="337" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSX66g5cDGlGlVEJMKi-VPHQDu02QFvKd-6mb1gbr2_4tZnFSVDUsDuga_9f5UGCVbVBYi4v47nI17v74x5ij4KKloWfwbHhVxAGS6cjFi4ktodn8F9AVQcJNlPKdZv0DCi7CxnS9BEv_08pZWYJBBo9aFNkzoU7CKe4Q0xFLztI1YZ8hFTYQZk45q=w598-h337" width="598" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">VFS - это "слой прокладки" между системными вызовами и разработчиками определенных файловых систем, таких как ext4 и procfs. Затем функции file_operations могут взаимодействовать либо с драйверами, специфичными для устройства, либо с аксессорами памяти. tmpfs, devtmpfs и cgroups не используют file_operations, но имеют прямой доступ к памяти.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Существование VFS способствует повторному использованию кода, поскольку базовые методы, связанные с файловыми системами, не нужно повторно реализовывать в каждом типе файловой системы. Повторное использование кода - это общепринятая лучшая практика разработки программного обеспечения! Увы, если повторно используемый код вносит серьезные ошибки, то от них страдают все реализации, которые наследуют общие методы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>/tmp: простой совет</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Простой способ выяснить, какие VFS присутствуют в системе, набрать команду mount | grep -v sd | grep -v :/, которая выводит все смонтированные файловые системы, которые не находятся на диске и не являются NFS на большинстве компьютеров. Одной из перечисленных точек монитирования VFS наверняка будет /tmp, верно?</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiMVxybVmJoZrWe9T8aapFVROnUuE6DycV8YxuPSBukkZA-qanlPtlVfGlHiQLuKcvye0q5AMJGtCC10y73zlIv2ZG5FeyU1mlISqgcizLV9SfxFhBnLIU9zK1uB1MAAHZ5OCMbEBf2TnwnZBMuABl0jRBFF_ybpa-_de6D0F2sJjO1nPKpTxvscXwh=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="375" data-original-width="500" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiMVxybVmJoZrWe9T8aapFVROnUuE6DycV8YxuPSBukkZA-qanlPtlVfGlHiQLuKcvye0q5AMJGtCC10y73zlIv2ZG5FeyU1mlISqgcizLV9SfxFhBnLIU9zK1uB1MAAHZ5OCMbEBf2TnwnZBMuABl0jRBFF_ybpa-_de6D0F2sJjO1nPKpTxvscXwh=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Все знают, что хранение /tmp на физическом носителе - это безумие!</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Почему хранить /tmp на носителе нецелесообразно? Потому что файлы в /tmp являются временными (!), а устройства хранения данных работают медленнее, чем оперативная память, где создается tmpfs. Кроме того, физические устройства более подвержены износу при частой записи. Наконец, файлы в /tmp могут содержать конфиденциальную информацию, поэтому возможность их исчезновения при каждой перезагрузке - это преимущество.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">К сожалению, установочные скрипты для некоторых дистрибутивов Linux по умолчанию создают /tmp на жестком диске. Не отчаивайтесь, если это произойдет с вашей системой. Следуйте простым инструкциям в великолепной Arch Wiki, чтобы решить эту проблему, помня, что память, выделенная для tmpfs, не доступна для других целей. Другими словами, система с гигантскими tmpfs с большими файлами в ней может исчерпать доступную память и зависнуть. Другой совет: при редактировании файла /etc/fstab обязательно заканчивайте его новой строкой, иначе ваша система не загрузится.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>/proc и /sys</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Помимо /tmp, VFS, с которыми большинство пользователей Linux лучше всего знакомы, это /proc и /sys. (/dev полагается на разделяемую память и не использует файловых операций). Почему две файловые системы? Давайте посмотрим их более подробно.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Procfs предлагает моментальный снимок состояния ядра и процессов, которые оно контролирует для пользовательского пространства. В /proc ядро публикует информацию о предоставляемых им средствах, таких как прерывания, виртуальная память и планировщик. Кроме того, /proc/sys - это место, где параметры, которые можно настроить с помощью команды sysctl, доступны для пользователя. Состояние и статистика по отдельным процессам указываются в каталогах /proc/.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhXr62ejxgjAaNCoCSKEcX675NEeXPrTo87b8XL7tctBmqjN9ZUESTSrCa5bZk2Hn6hHc6FRk_TVmZotawG1kTv3AC9n09zZf13MhT6vAFofCF4fhsApBlQuuSwez2cFM15nmm6TwmxTOwGCzz6VcFTv_z-0_WGRzwRo_F4XD2K9qtCq0S92umijKV3=s628" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="477" data-original-width="628" height="387" src="https://blogger.googleusercontent.com/img/a/AVvXsEhXr62ejxgjAaNCoCSKEcX675NEeXPrTo87b8XL7tctBmqjN9ZUESTSrCa5bZk2Hn6hHc6FRk_TVmZotawG1kTv3AC9n09zZf13MhT6vAFofCF4fhsApBlQuuSwez2cFM15nmm6TwmxTOwGCzz6VcFTv_z-0_WGRzwRo_F4XD2K9qtCq0S92umijKV3=w510-h387" width="510" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>/proc /meminfo - это пустой файл, который, тем не менее, содержит ценную информацию.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Поведение файлов в /proc показывает, насколько VFS может отличаться от файловых систем на диске. С одной стороны, /proc/meminfo содержит информацию, представленную командой free. С другой стороны, он также пустой! Как это может быть? Ситуация напоминает известную статью, написанную физиком Корнелльского университета Н. Дэвидом Мермином в 1985 году, под названием «Есть ли луна там, куда никто не смотрит? Реальность и квантовая теория». Правда в том, что ядро собирает статистику о памяти, когда процесс запрашивает его, из /proc, и в файлах /proc фактически ничего нет, когда никто не просматривает их. Как сказал Мермин, «фундаментом квантовой доктрины является то, что измерение, как правило, не выявляет ранее существовавшее значение измеряемого свойства».</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Кажущаяся пустота procfs имеет смысл, поскольку доступная там информация динамична. Ситуация с sysfs другая. Давайте сравним, сколько файлов размером не менее одного байта существует в /proc и /sys.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEheCmRAjRVIt6F-jzxPvcq1TTjPVyotoQvRHGJCQnr9Vwikb-5FZAqTtvoSbnnBpDekwEPYtcT0GMytPp6Vr-zgtWZuCe9Wy6vwWVY2UhKpLKMoowk3rDEzcBeWAjs8hD-jfH99UlckSxHYnFsVFhcNAKnmsj8zlxUcg41-RBk_fuwU8qaoTLWmr-5g=s626" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="114" data-original-width="626" height="116" src="https://blogger.googleusercontent.com/img/a/AVvXsEheCmRAjRVIt6F-jzxPvcq1TTjPVyotoQvRHGJCQnr9Vwikb-5FZAqTtvoSbnnBpDekwEPYtcT0GMytPp6Vr-zgtWZuCe9Wy6vwWVY2UhKpLKMoowk3rDEzcBeWAjs8hD-jfH99UlckSxHYnFsVFhcNAKnmsj8zlxUcg41-RBk_fuwU8qaoTLWmr-5g=w640-h116" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Procfs имеет именно одну, а именно экспортированную конфигурацию ядра, что является исключением, поскольку его нужно генерировать только один раз при загрузке. С другой стороны, /sys имеет много файлов большего размера, большинство из которых составляют одну страницу памяти. Как правило, файлы sysfs содержат ровно одно число или строку, в отличие от таблиц информации, создаваемой чтением таких файлов, как /proc/meminfo.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Цель sysfs - предоставить доступ для чтения и записи свойств того, что ядро называет "kobjects", в пространстве пользователя. Единственная цель kobjects - подсчет ссылок: когда последняя ссылка на kobject удаляется, система возвращает связанные с ним ресурсы. Тем не менее, /sys представляет собой большую часть знаменитого «stable ABI to userspace» ядра, которое никто и ни при каких обстоятельствах не может «сломать». Это не означает, что файлы в sysfs являются статическими, что противоречило бы подсчету ссылок изменчивых объектов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вместо этого стабильный ABI ядра ограничивает то, что может появиться в /sys, а не то, что действительно присутствует там в данный момент. Перечисление разрешений для файлов в sysfs дает представление о том, как настраиваемые параметры устройств, модулей, файловых систем и т. д., могут быть заданы или прочитаны. Логика заставляет прийти к заключению, что procfs также является частью стабильного ABI ядра, хотя в документации ядра это не указано явно.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi7S-6eEj9Ogc6qS3MS8gaoVfsMn0vWbVgrycfWEMcdzPrDFNgcRt1PFUZXC73g8FSW8UiUzPutfjuBF_nM9N6h2_HHGy-0TKAdkJOGRFxrHCbEDqvS9Sh5rFO0UT5tANRuaSCpH0pGW-9bGPuBu7ZVRua8JHfT3z7Hc1RhbO5Vp4IHPpHcd6JrWFIY=s680" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="231" data-original-width="680" height="186" src="https://blogger.googleusercontent.com/img/a/AVvXsEi7S-6eEj9Ogc6qS3MS8gaoVfsMn0vWbVgrycfWEMcdzPrDFNgcRt1PFUZXC73g8FSW8UiUzPutfjuBF_nM9N6h2_HHGy-0TKAdkJOGRFxrHCbEDqvS9Sh5rFO0UT5tANRuaSCpH0pGW-9bGPuBu7ZVRua8JHfT3z7Hc1RhbO5Vp4IHPpHcd6JrWFIY=w546-h186" width="546" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Файлы в sysfs описывают ровно одно свойство каждого объекта и могут быть читаемыми, записываемыми или все это вместе. «0» в файле показывает, что SSD не является съемным.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Отслеживание VFS с помощью утилит eBPF и bcc</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Самый простой способ узнать, как ядро управляет файлами sysfs, - это посмотреть его в действии, а самый простой способ посмотреть это на ARM64 или x86_64 - использовать eBPF. eBPF (extended Berkeley Packet Filter) состоит из виртуальной машины, работающей внутри ядра, которую привилегированные пользователи могут запрашивать из командной строки. Код ядра сообщает читателю, что может сделать ядро; запуск инструментов eBPF в загруженной системе показывает, что фактически делает ядро.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">К счастью, начать работу с eBPF довольно просто с помощью утилит bcc, которые доступны в виде пакетов из основных дистрибутивов Linux и подробно документированы Бренданом Греггом. Утилиты bcc - это скрипты Python с небольшими встроенными фрагментами C, поэтому любой, кто знаком с любым языком, может легко их изменить. На этот счет в bcc/tools есть 80 скриптов Python, поэтому весьма вероятно, что системный администратор или разработчик найдет соответствующий его потребностям.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы получить очень общее представление о том, какую работу выполняют VFS в работающей системе, попробуйте скрипты vfscount или vfsstat, которые показывают, что каждую секунду происходят десятки вызовов vfs_open() и подобных ему.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjYeTuqy8wwK9bxlDXgByjQ2rn0rPeO0dV_fV4H_ILQYO1I_JKjo1rqzNmdlZyXtSnTt9QjHHEe9hBrNjr_dNVx42cRp0JR0TMXdvtmVZFIz_XOlBc0-FtG_doM194_TSH3RePFgvknkNghPavPXGY_JitYUm4Y0CF2Z49Rza81GHC8XcRhiGCKa81M=s585" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="219" data-original-width="585" height="216" src="https://blogger.googleusercontent.com/img/a/AVvXsEjYeTuqy8wwK9bxlDXgByjQ2rn0rPeO0dV_fV4H_ILQYO1I_JKjo1rqzNmdlZyXtSnTt9QjHHEe9hBrNjr_dNVx42cRp0JR0TMXdvtmVZFIz_XOlBc0-FtG_doM194_TSH3RePFgvknkNghPavPXGY_JitYUm4Y0CF2Z49Rza81GHC8XcRhiGCKa81M=w576-h216" width="576" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>vfsstat.py - это скрипт Python со встроенным фрагментом C, который просто считает вызовы функций VFS.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для менее тривиального примера давайте посмотрим, что происходит в sysfs, когда в работающую систему вставлена USB-флешка.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgq_R33BY5iwaE1m_BGc85fXJEOC9X3epaeC3lRFcXo9c0pJiGKs5TPbZnErXksEVS_YttIk4ewPZeKtpvjx8Y8wsMQeHqxarLzY__RG_6dkjdHZN4EuADCpJo23OiL0RxwEnm_9Ape23TNJGA3MGSCYdgvKQtie9lzGFqZF2uQFc9buq2O7QS88lut=s680" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="372" data-original-width="680" height="322" src="https://blogger.googleusercontent.com/img/a/AVvXsEgq_R33BY5iwaE1m_BGc85fXJEOC9X3epaeC3lRFcXo9c0pJiGKs5TPbZnErXksEVS_YttIk4ewPZeKtpvjx8Y8wsMQeHqxarLzY__RG_6dkjdHZN4EuADCpJo23OiL0RxwEnm_9Ape23TNJGA3MGSCYdgvKQtie9lzGFqZF2uQFc9buq2O7QS88lut=w588-h322" width="588" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Посмотрите с помощью eBPF, что происходит в /sys, когда вставлена флешка.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В первом простом примере, приведенном выше, скрипт trace.py выводит сообщение всякий раз, когда запускается команда sysfs_create_files(). Мы видим, что sysfs_create_files() была запущена потоком kworker в ответ на вставку USB-накопителя, но какой файл при этом был создан? Второй пример иллюстрирует полную мощь eBPF. Здесь trace.py выводит обратную трассировку ядра (опция -K) плюс имя файла, созданного sysfs_create_files(). Фрагмент внутри одинарных кавычек представляет собой некоторый исходный код на C, включая легко распознаваемую строку format, которая побуждает компилятор LLVM на лету компилировать и выполнять код внутри виртуальной машины в ядре. Полная сигнатура функции sysfs_create_files() должна быть воспроизведена во второй команде, чтобы строка format могла ссылаться на один из параметров. Ошибки в этом фрагменте C приводят к распознаваемым ошибкам компилятора C. Например, если опущен параметр -I, результатом будет «Failed to compile BPF text». Разработчики, знакомые с C или Python, найдут, что утилиты bcc легко расширять и модифицировать.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Когда вставлен USB-накопитель, появляется обратная трассировка ядра, показывающая, что PID 7711 является потоком kworker, который создал файл с именем «events» в sysfs. Соответствующий вызов sysfs_remove_files() показывает, что удаление флешки приводит к удалению файла events в соответствии с идеей подсчета ссылок. Просмотр sysfs_create_link() с помощью eBPF во время вставки USB-накопителя (не показан) показывает, что создано не менее 48 символических ссылок.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В любом случае, какова цель файла events? Использование cscope для поиска function __device_add_disk() показывает, что она вызывает disk_add_events(), и либо «media_change», либо «eject_request» могут быть записаны в файл events. Здесь блочный уровень ядра информирует пространство пользователя о появлении и исчезновении «диска». Подумайте, насколько быстро этот метод исследует, как работает вставка USB-накопителя, в сравнении с попыткой изучить этот процесс исключительно из источников.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Доступные только для чтения корневые файловые системы делают возможными встроенные устройства.</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Конечно, никто не выключает сервер или настольную систему, вынув вилку из розетки. Почему? Так как смонтированные файловые системы на физических устройствах хранения данных могут иметь отложенные ожидающие записи, а структуры данных, которые записывают их состояние, могут быть не синхронизированы с тем, что записано в хранилище. Если это произойдет, пользователи системы должны будут ждать при следующей загрузке, пока не запустится утилита восстановления файловой системы fsck, и в худшем случае они потеряют данные.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Тем не менее, многие слышали, что большинство IoT и встроенных устройств, такие как маршрутизаторы, термостаты и автомобили, теперь работают под управлением Linux. У многих из этих устройств почти полностью отсутствует пользовательский интерфейс, и нет способа их «чистой» перезагрузки. Подумайте о запуске автомобиля с разряженной батареей, когда питание бортового компьютера под управлением Linux скачет. Как получается, что система загружается без длинного fsck, когда двигатель наконец запускается? Ответ заключается в том, что встроенные устройства используют корневую файловую систему только для чтения (для краткости ro-rootfs).</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiJHeqSkejHulv1Okoa51lVDA9YRr_nk0N27P-oQlzh8HGTxY44BEdWZEAZZAlY_lXP1mDSwmsdaMnUefR4irz15maEeVKQ_359HfCq_fEuCWrUKXsl2uTKQMiEQaLJnJa2xojYN4RpprruquWWAOFEQfdO1SO2bYT3LdpgsYyT7gLpm41IObT8pdgq=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="375" data-original-width="500" height="240" src="https://blogger.googleusercontent.com/img/a/AVvXsEiJHeqSkejHulv1Okoa51lVDA9YRr_nk0N27P-oQlzh8HGTxY44BEdWZEAZZAlY_lXP1mDSwmsdaMnUefR4irz15maEeVKQ_359HfCq_fEuCWrUKXsl2uTKQMiEQaLJnJa2xojYN4RpprruquWWAOFEQfdO1SO2bYT3LdpgsYyT7gLpm41IObT8pdgq=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>ro-rootfs - это то, почему встраиваемые системы часто не нуждаются в fsck.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ro-rootfs предлагают множество преимуществ, которые менее очевидны, чем неубиваемость. Одно из них заключается в том, что вредоносные программы не могут писать в /usr или /lib, как и ни один процесс Linux. Другое заключается в том, что неизменяемая файловая система в значительной степени имеет решающее значение для полевой поддержки удаленных устройств, поскольку вспомогательный персонал обладает локальными системами, которые номинально идентичны системам на местах. Возможно, самое важное (но также и самое тонкое) преимущество заключается в том, что ro-rootfs заставляет разработчиков решать на этапе разработки проекта, какие системные объекты будут неизменными. Работа с ro-rootfs часто может быть неудобной или даже болезненной, как это часто бывает с константами в языках программирования, но преимущества легко окупают дополнительные издержки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Создание rootfs только для чтения требует дополнительных усилий для разработчиков встраиваемых систем, и именно здесь на помощь приходит VFS. Linux требует, чтобы файлы в /var были доступны для записи, и, кроме того, многие популярные приложения, которые запускаются встраиваемыми системами, будут пытаться создать конфигурационные файлы в $HOME. Одно из решений для конфигурационных файлов в домашнем каталоге, как правило, состоит в том, чтобы сгенерировать их предварительно и встроить в rootfs. Для /var один из подходов заключается в монтировании его в отдельный доступный для записи раздел, а / - только для чтения. Использование монтирования с привязкой и наложением (bind and overlay mounts) является еще одной популярной альтернативой.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Монтирования с привязкой и наложением, и их использование в контейнерах</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Запуск man mount - лучшее место для изучения монтирования с привязкой и наложением, которое позволяет разработчикам встроенных систем и системным администраторам создавать файловую систему в одном месте, а затем предоставлять ее приложениям в другом. Для встроенных систем это означает, что можно сохранять файлы в /var на неперезаписываемом флэш-устройстве, но накладывать или привязывать-монтировать путь в tmpfs на путь /var при загрузке, чтобы приложения могли просматривать их у себя. При следующем включении изменения в /var исчезнут. Оверлейные монтирования обеспечивают объединение между tmpfs и базовой файловой системой и позволяют вносить видимые изменения в существующий файл в ro-rootfs, в то время как монтирования с привязкой делает так, чтобы новые пустые каталоги tmpfs отображались как доступные для записи в путях ro-rootfs. Хотя overlayfs является подходящим типом файловой системы, монтирование с привязкой осуществляется с помощью средств пространства имен VFS.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Основываясь на описании оверлеев и связываний, никто не удивится, что контейнеры Linux активно их используют. Давайте посмотрим, что происходит, когда мы используем systemd-nspawn для запуска контейнера, запустив утилиту bcc mountsnoop:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGR8_ZYbqE3uHsNdtSvZU7oF1v3gkl6XIJMf8t8l2Dre97QhxvRDd3pRcR-rx5fenVtWMgt5Wd6LjU-qVdHjLlw_egku0hvTHRu1_2jFrbs9KVyJwm4MiT9Uoovs-8sdAbnGp0tRNbXmVM_AiFggqS5yzoaOaK6aToKVnkShcJHGYbj2DsBogOG0bg=s615" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="113" data-original-width="615" height="110" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGR8_ZYbqE3uHsNdtSvZU7oF1v3gkl6XIJMf8t8l2Dre97QhxvRDd3pRcR-rx5fenVtWMgt5Wd6LjU-qVdHjLlw_egku0hvTHRu1_2jFrbs9KVyJwm4MiT9Uoovs-8sdAbnGp0tRNbXmVM_AiFggqS5yzoaOaK6aToKVnkShcJHGYbj2DsBogOG0bg=w598-h110" width="598" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Вызов system-nspawn запускает контейнер во время работы mountsnoop.py.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И посмотрим, что случилось:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjVkNjCmc6Lg5UVwn7T6KqgEGN6MdBfv8a-_r-skqwGU9e-uSOUAuzwBJ44urmpvG6fUVrrikbov1IciaoKUk8tMrdqZtNBLa6ArK1TUzyB2re2KdwvoPD2pVylP0AJncf5XZkxKs7a6EkSVoHPcppFmIbga_wAmutHXIW5YMzDPWfBKJOZz5XIW3Qk=s680" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="236" data-original-width="680" height="222" src="https://blogger.googleusercontent.com/img/a/AVvXsEjVkNjCmc6Lg5UVwn7T6KqgEGN6MdBfv8a-_r-skqwGU9e-uSOUAuzwBJ44urmpvG6fUVrrikbov1IciaoKUk8tMrdqZtNBLa6ArK1TUzyB2re2KdwvoPD2pVylP0AJncf5XZkxKs7a6EkSVoHPcppFmIbga_wAmutHXIW5YMzDPWfBKJOZz5XIW3Qk=w640-h222" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Запуск mountsnoop во время «загрузки» контейнера показывает, что среда выполнения контейнера сильно зависит от привязки монтирования (отображается только начало длинного вывода).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Здесь systemd-nspawn предоставляет выбранные файлы в procfs и sysfs хоста контейнеру по путям в его rootfs. Помимо флага MS_BIND, который устанавливает привязку-монтирование, некоторые другие флаги, которые вызывает системный вызов mount, определяют взаимосвязь между изменениями в пространстве имен хоста и в контейнере. Например, bind-mount может либо распространять изменения в /proc и /sys на контейнер, либо скрывать их, в зависимости от вызова.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Понимание внутренних возможностей Linux может показаться невыполнимой задачей, поскольку само ядро содержит гигантский объем кода, даже оставляя в стороне приложения пользовательского пространства Linux и интерфейс системных вызовов в библиотеках C, таких как glibc. Один из способов добиться прогресса - это прочитать исходный код одной подсистемы ядра с акцентом на понимание системных вызовов и заголовков, обращенных к пользовательскому пространству, а также основных внутренних интерфейсов ядра, примером которых является таблица file_operations. Файловые операции - это то, что заставляет работать принцип "все - это файл", поэтому особенно полезно получить управление ими. Исходные файлы ядра C в каталоге / верхнего уровня представляют собой реализацию виртуальных файловых систем, которые представляют собой слой, обеспечивающий широкую и относительно прямую совместимость популярных файловых систем и устройств хранения. Монтирование с привязкой и наложением через пространства имен Linux - это магия VFS, которая делает возможными контейнеры и корневые файловые системы только для чтения. В сочетании с изучением исходного кода, набор утилит eBPF и его интерфейс bcc делают исследование ядра более простым, чем когда-либо прежде.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://opensource.com/article/19/3/virtual-filesystems-linux">Virtual filesystems in Linux: Why we need them and how they work</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-32906577188963237232022-03-02T11:13:00.000-08:002022-03-02T11:13:59.511-08:00Лучшие бесплатные альтернативы Microsoft Visio с открытым исходным кодом<div style="text-align: justify;"><div><span style="font-family: verdana;">Позиция Microsoft на протяжении десятилетий заключалась в том, что создание и совместное использование открытого кода (позже известного как free and open source software) представляет собой прямую атаку на их бизнес. Их битва с Linux началась много лет назад. Еще в 2001 году бывший генеральный директор Microsoft Стив Баллмер назвал Linux «раковой опухолью, которая в смысле интеллектуальной собственности прикрепляется ко всему, к чему она прикасается». Microsoft также инициировала свою маркетинговую кампанию Get the Facts с середины 2003 года, в которой особо критиковались использование серверов Linux, общая стоимость владения, безопасность, возмещение убытков и надежность. Кампания подверглась широкой критике за распространение дезинформации.<span><a name='more'></a></span></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Однако в последние годы Microsoft частично перешла на парадигму программного обеспечения с открытым исходным кодом. Например, часть их кода находится в открытом доступе. Примеры включают Visual Studio Code, .NET Framework, Atom и PowerShell. Они также инвестировали в разработку Linux, серверные технологии и организации, включая Linux Foundation и Open Source Initiative. Они сделали приобретения, такие как Xamarin, чтобы помочь в разработке мобильных приложений, и GitHub, чрезвычайно популярный репозиторий кода для разработчиков с открытым исходным кодом. И они сотрудничают с Canonical, разработчиками популярного дистрибутива Ubuntu. Но многие разработчики по-прежнему крайне скептически относятся к Microsoft и их явному переходу на открытый исходный код.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">В этой серии статей рассматриваются лучшие бесплатные и открытые альтернативы продуктам и услугам, предлагаемым Microsoft.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Microsoft Visio — это приложение для создания диаграмм и векторной графики, входящее в семейство Microsoft Office.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Моделирование баз данных в Visio основано на схеме Database Model Diagram (DMD).</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Вот наши любимые бесплатные альтернативы Visio с открытым исходным кодом.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><b>1. Dia</b></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><a href="https://www.linuxlinks.com/dia/">Dia</a> разработана так, чтобы быть похожей на проприетарную Visio. Ее можно использовать для рисования различных видов диаграмм. Он предлагает специальные объекты, помогающие рисовать диаграммы отношений сущностей, диаграммы UML различных типов, блок-схемы, сетевые диаграммы и простые схемы. Также можно добавить поддержку новых фигур, написав простые XML-файлы, используя подмножество SVG для рисования фигур.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh2DDdcLrnl1KTRYRK1_Rxgw1Wd4xgCVh-u57fGPCKyoQ-WI4-rl6oXHwXpPzNaL0uv03vrQBlCsALmi1jGDgNSMq44L_9VBiMiC8yYp94BTC5cSMZ54qS7lW4yv9sDes0rssTxIksjP5l231V2W8lCWN7-mY73sA6KCjHAQDXLEULgZT2MiaEpqIdH=s700" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="498" data-original-width="700" height="456" src="https://blogger.googleusercontent.com/img/a/AVvXsEh2DDdcLrnl1KTRYRK1_Rxgw1Wd4xgCVh-u57fGPCKyoQ-WI4-rl6oXHwXpPzNaL0uv03vrQBlCsALmi1jGDgNSMq44L_9VBiMiC8yYp94BTC5cSMZ54qS7lW4yv9sDes0rssTxIksjP5l231V2W8lCWN7-mY73sA6KCjHAQDXLEULgZT2MiaEpqIdH=w640-h456" width="640" /></a></div><br /></div><div><span style="font-family: verdana;"><b>2. diagrams.net</b></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><a href="https://github.com/jgraph/drawio-desktop">Diagrams.net</a> (ранее известная как draw.io) — это онлайн-программа для работы с диаграммами. Она используется для рисования блок-схем, сетевых диаграмм, схем электрических цепей, для создания UML-диаграмм. Она поддерживает сохранение файлов в облачных сервисах.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Есть десктопная версия для Linux и других операционных систем.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEid8lkdQLmuQ3fp7aRXy0Vz6PrnkVsWmpI2D5crPZjVedaUseqHUT028z-KWSZIPo_f3ozDW8UwkMuX3hAuLXaocGyLT31cneI_a_qi2aL1rlTwesYRxWuSQOLnsbNNe79U75wb9yeQSr7WBxretl5Z3iSJuwkLME3h8tn4JIfH0O3Ei_2l-aeKcOQ1=s768" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="379" data-original-width="768" height="316" src="https://blogger.googleusercontent.com/img/a/AVvXsEid8lkdQLmuQ3fp7aRXy0Vz6PrnkVsWmpI2D5crPZjVedaUseqHUT028z-KWSZIPo_f3ozDW8UwkMuX3hAuLXaocGyLT31cneI_a_qi2aL1rlTwesYRxWuSQOLnsbNNe79U75wb9yeQSr7WBxretl5Z3iSJuwkLME3h8tn4JIfH0O3Ei_2l-aeKcOQ1=w640-h316" width="640" /></a></div><br /></div><div><span style="font-family: verdana;"><b>3. LibreOffice – Draw</b></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">LibreOffice — это офисный пакет с открытым исходным кодом, разработанный The Document Foundation, который совместим с другими основными офисными пакетами и доступен на различных платформах. Это многофункциональный и зрелый пакет для офисных задач.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Одним из составных пакета LibreOffice является <a href="https://www.linuxlinks.com/libreoffice-draw/">LibreOffice Draw</a>. Это редактор векторной графики и инструмент для построения диаграмм. Он также может выполнять операции с растровой графикой (пикселями), например с фотографиями. С помощью Draw пользователи могут создавать разнообразные графические изображения.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjsWeUcPGN7EnD-vmzG3OPxV_SyqN4lvmiGRFK12Y6_HgmCxGoB_Djoa85tqJQIyG_0ByS7y1Fdmx0EvQTRewwPyOzImXvxGaA-UJftWIYCR1RSsN8iTXKaSmbGLvIbjOM5PuBGGRDpc10CqedGvOy1Gv_iFbKih4E3WMnq9tiHWLrBRAhghdatSpGh=s1024" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="622" data-original-width="1024" height="388" src="https://blogger.googleusercontent.com/img/a/AVvXsEjsWeUcPGN7EnD-vmzG3OPxV_SyqN4lvmiGRFK12Y6_HgmCxGoB_Djoa85tqJQIyG_0ByS7y1Fdmx0EvQTRewwPyOzImXvxGaA-UJftWIYCR1RSsN8iTXKaSmbGLvIbjOM5PuBGGRDpc10CqedGvOy1Gv_iFbKih4E3WMnq9tiHWLrBRAhghdatSpGh=w640-h388" width="640" /></a></div><br /></div><div><span style="font-family: verdana;"><b>4. PlantUML</b></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><a href="https://www.linuxlinks.com/plantuml-draw-uml-diagrams/">PlantUML</a> — это программа с открытым исходным кодом, используемая для рисования диаграмм UML с использованием простого и удобочитаемого текстового описания.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Она использует программное обеспечение Graphviz для построения диаграмм.</span></div><div><span style="font-family: verdana;"><br /></span></div><div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhR97s63l0Mv4P2RGk1lxTFFLsk2MnPmMWrUUUD7IjbfLpqFD6RyEDrJsHSDMLwIF1Cv-i5lS3LVU7N-R8G21iWrYT1Wo_ZzLQB_clESPDl_m2fuK_623DFA7CXH9I8iD28AFQ62lYRTbEWrqcEZmMarUihZgEF7gsi_6OzpLzq3zuc07h7ymSMr1cq=s346" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="230" data-original-width="346" src="https://blogger.googleusercontent.com/img/a/AVvXsEhR97s63l0Mv4P2RGk1lxTFFLsk2MnPmMWrUUUD7IjbfLpqFD6RyEDrJsHSDMLwIF1Cv-i5lS3LVU7N-R8G21iWrYT1Wo_ZzLQB_clESPDl_m2fuK_623DFA7CXH9I8iD28AFQ62lYRTbEWrqcEZmMarUihZgEF7gsi_6OzpLzq3zuc07h7ymSMr1cq=s16000" /></a></div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;"><br /></span></div><div><span style="font-family: verdana;">Оригинал: </span><span style="font-family: verdana;"><a href="https://www.linuxlinks.com/best-free-open-source-alternatives-microsoft-visio/">Best Free and Open Source Alternatives to Microsoft Visio</a></span></div></div>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-38853472628966510042022-02-24T10:20:00.000-08:002022-02-24T10:20:19.956-08:00Восстановление удаленных файлов в Linux с помощью TestDisk<div style="text-align: justify;"><span style="font-family: verdana;">Все мы знаем, что такое искать файл, и не найти его даже в корзине. Проблемы, связанные с потерей файлов и данных, можно попытаться решить с помощью TestDisk - бесплатной программе с открытым исходным кодом, которая изначально была разработана для восстановления разделов и решения проблем с загрузкой системы. Она хорошо подходит для восстановления данных из разделов, которые повреждены человеческими ошибками или вирусами.<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этой статье мы покажем вам, как восстанавливать удаленные файлы в Linux с помощью утилиты восстановления данных TestDisk. Чтобы установить testdisk в вашей системе Linux, вы можете использовать нашу статью: How to Install and Use TestDisk Data Recovery Tool in Linux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Установив TestDisk в Linux, вы можете проверить его версию с помощью команды:</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;"># testdisk --version</pre></div><div style="text-align: justify;">Пример вывода:</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">TestDisk 7.0, Data Recovery Utility, April 2015
Christophe GRENIER <grenier@cgsecurity.org>
http://www.cgsecurity.org
Version: 7.0
Compiler: GCC 7.2
ext2fs lib: 1.44.1, ntfs lib: libntfs-3g, reiserfs lib: none, ewf lib: none, curses lib: ncurses 6.0
OS: Linux, kernel 4.15.0-55-generic (#60-Ubuntu SMP Tue Jul 2 18:22:20 UTC 2019) x86_64</pre></div><div style="text-align: justify;">Отлично! Это подтверждает, что мы успешно установили testdisk.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 1: Создание файла журнала данных TestDisk</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы восстановить удаленные файлы, сначала необходимо создать файл testdisk.log, так как данные журнала важны, поскольку содержат полезную информацию для восстановления ваших данных позже.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;"># testdisk</pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsjl0_P5wG3TPQE5Gr-FRbufgJ6VP9EK-fOOwiVLBeejagYpyAVwroPoMW6XWmA4JsAzdEtbuBjJ23AjSt_ZJAYMV9ZsRBP5KMdIOpZtDtgrckN2t5yunFK_CS1JkdVR15sU54arpC1Hu02tF6NCZBmM9CtVA_jwpN5kXO7nPWRx8FpyC4gMqiBPEU=s707" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="367" data-original-width="707" height="332" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsjl0_P5wG3TPQE5Gr-FRbufgJ6VP9EK-fOOwiVLBeejagYpyAVwroPoMW6XWmA4JsAzdEtbuBjJ23AjSt_ZJAYMV9ZsRBP5KMdIOpZtDtgrckN2t5yunFK_CS1JkdVR15sU54arpC1Hu02tF6NCZBmM9CtVA_jwpN5kXO7nPWRx8FpyC4gMqiBPEU=w640-h332" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Экран описания утилиты имеет три опции, подробно описанные ниже:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Create</b> - опция позволяет создавать новый лог-файл.</div><div style="text-align: justify;"><b>Append </b>- эта опция позволяет вам добавить дополнительную информацию в отчет за предыдущие сессии.</div><div style="text-align: justify;"><b>No log</b> - выберите этот вариант, если вы не хотите записывать журналы для последующего использования.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b><i>Примечание.</i></b> Утилита Testdisk удобна для начинающих, она предлагает варианты по параметрам на каждом экране. Выберите рекомендуемые параметры (выделено). Нажимайте клавиши со стрелками, чтобы переключаться между различными вариантами.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Выберите опцию «Create», так как нам нужно создать новый файл журнала. В зависимости от настроек безопасности системы компьютер может запросить пароль sudo для продолжения восстановления.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgocXNW0UCWkXvixHu_KwoOmeLx7Hvr5PtGk-nk19CWMNuzWk4y4oJBUHhvNcS7x40E7WCnPERQJoa1ZJmErCbtT078k_15bRP3uLJxc2S-5v_kEMINKiOUQVtHVDdDMwJXlby7QELSqshUoRzMl35qi9-nyXa0dY4neBKUu9yTWsVlO_xSxLiduBQz=s488" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="132" data-original-width="488" height="109" src="https://blogger.googleusercontent.com/img/a/AVvXsEgocXNW0UCWkXvixHu_KwoOmeLx7Hvr5PtGk-nk19CWMNuzWk4y4oJBUHhvNcS7x40E7WCnPERQJoa1ZJmErCbtT078k_15bRP3uLJxc2S-5v_kEMINKiOUQVtHVDdDMwJXlby7QELSqshUoRzMl35qi9-nyXa0dY4neBKUu9yTWsVlO_xSxLiduBQz=w400-h109" width="400" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 2: Выбор диска для восстановления</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Testdisk отобразит диски, подключенные к вашей системе. Система отображает общий объем памяти каждого диска и его свободное пространство. Выберите диск, на котором хранится ваш файл, затем используйте клавиши со стрелками для навигации и выберите «Proceed». Далее нажмите клавишу ENTER. В данном случае это внешняя флешка на /dev/sdb.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgBb50wwkexTfQqEv4WT5Iei9O1AyRhnvwssiQTO2Xm5-K6T-QTbTpLRvfE3u2a2GhvWg_e0G9ZeKmtUDxAKZzz31DFLwUKyYwjI9tbHl3IjQkuAsm2d2fx1DnxwFTzbhzEBBgS6vmF1ypVXbwUKOdtYjP9g9N1gGQ7xNoGqRkD0iouE1Nx8YenfOgl=s695" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="419" data-original-width="695" height="386" src="https://blogger.googleusercontent.com/img/a/AVvXsEgBb50wwkexTfQqEv4WT5Iei9O1AyRhnvwssiQTO2Xm5-K6T-QTbTpLRvfE3u2a2GhvWg_e0G9ZeKmtUDxAKZzz31DFLwUKyYwjI9tbHl3IjQkuAsm2d2fx1DnxwFTzbhzEBBgS6vmF1ypVXbwUKOdtYjP9g9N1gGQ7xNoGqRkD0iouE1Nx8YenfOgl=w640-h386" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В зависимости от разрешений безопасности ваша система может не отображать некоторые диски. В таких случаях кликните «Sudo option», которая находится рядом с опциями «Proceed» и «Quit».</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Откройте Sudo и введите свой пароль. После успешной проверки пароля система отобразит все подключенные диски с их характеристиками.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 3: Выбор типа таблицы разделов</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После выбора диска следующая задача - определить правильную таблицу разделов. Новичкам может быть сложно определить правильный тип таблицы разделов, но вам не нужно беспокоиться об этом. Система автоматически предскажет и выделит лучший выбор.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiZOf7MxEHac8-ajqISXjp-EsGRLsjgGpFb7qqw4BVLvp6OEY0WuswaoYJQZbQ35m_B0E2pqeHaX3HhMlsD9Xt3Fv5VIVh4UpgHpsTM2JWM8ubHWc4jVyQaIDglblj4x1pgNvRaLckepViZq1Iu9Aou1WwK7PNKPxBuGuS2auPsHD_JB9nIXYCdQk1_=s698" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="415" data-original-width="698" height="380" src="https://blogger.googleusercontent.com/img/a/AVvXsEiZOf7MxEHac8-ajqISXjp-EsGRLsjgGpFb7qqw4BVLvp6OEY0WuswaoYJQZbQ35m_B0E2pqeHaX3HhMlsD9Xt3Fv5VIVh4UpgHpsTM2JWM8ubHWc4jVyQaIDglblj4x1pgNvRaLckepViZq1Iu9Aou1WwK7PNKPxBuGuS2auPsHD_JB9nIXYCdQk1_=w640-h380" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Далее, кликните ‘ENTER‘ для продолжения.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После указания правильного диска и типа раздела в следующем окне отобразится список опций восстановления. Вы можете выбрать любую из опций на экране в зависимости от ваших предпочтений. Поскольку мы восстанавливаем удаленный файл, мы выберем опцию «Advanced».</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhUe6KocGu7r23c3Han46l0S23kAE_iS4OnrasUdYPdHoiNDMY0XzDA4lH4FLf0eINh-lhEXLXo5ju573tWH5e5QiQXa_znNOJmHa8xWf7eHGCDwzTC3rjzaRsTihwtLsPFC8KfFZlDma3yBIE8y8aPCgVFNU9vj6CDOcHxBM00lGIgk-60Iwj7A_lU=s710" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="334" data-original-width="710" height="302" src="https://blogger.googleusercontent.com/img/a/AVvXsEhUe6KocGu7r23c3Han46l0S23kAE_iS4OnrasUdYPdHoiNDMY0XzDA4lH4FLf0eINh-lhEXLXo5ju573tWH5e5QiQXa_znNOJmHa8xWf7eHGCDwzTC3rjzaRsTihwtLsPFC8KfFZlDma3yBIE8y8aPCgVFNU9vj6CDOcHxBM00lGIgk-60Iwj7A_lU=w640-h302" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 4. Выбор раздела диска с удаленным исходным файлом</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Экран на скриншоте позволяет вам выбрать раздел, если на вашем компьютере их много. Выберите нужный и нажмите ‘ENTER‘, чтобы продолжить. В данном случае я использую съемную флешку только с 1 разделом FAT32.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Выбор раздела диска с удаленным исходным файлом</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 5: Проверка каталога с удаленным исходным файлом</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После того, как утилита отобразит системные каталоги для всех разделов, перейдите к тому каталогу, в котором вы потеряли или удалили свой файл. Например, если ваш файл был сохранен в каталоге «Documents», перейдите на вкладку «Documents».</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhpqbCSHytiuc2HoxCS_9KoCPyncFu1k-HLNSLheFPa8N_guAo86LQlGC8Kz4USJlbZMalfbMAkyyC_Qe6IFoc17r-ifnrAJA9tb7yIRhmmc3lfQkhy1iIGxpKx4kKo9KfLouBeILQbSZXGpEcHEyUk_U0Zg8WcS1QNv1fX8Z1fXbb5d85tpzomoW4M=s851" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="433" data-original-width="851" height="326" src="https://blogger.googleusercontent.com/img/a/AVvXsEhpqbCSHytiuc2HoxCS_9KoCPyncFu1k-HLNSLheFPa8N_guAo86LQlGC8Kz4USJlbZMalfbMAkyyC_Qe6IFoc17r-ifnrAJA9tb7yIRhmmc3lfQkhy1iIGxpKx4kKo9KfLouBeILQbSZXGpEcHEyUk_U0Zg8WcS1QNv1fX8Z1fXbb5d85tpzomoW4M=w640-h326" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Совет: используйте стрелку «назад», чтобы вернуться туда, где вы потеряли свои файлы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После перехода в исходный каталог вы найдете удаленные файлы, выделенные красным цветом. Найдите файл в раскрывающемся списке и выделите его.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 6: Восстановление удаленного файла</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Скопируйте файл, который вы хотите восстановить, нажав клавишу "c" на клавиатуре. На предыдущем скриншоте удаленный файл, который я хочу восстановить, называется "Best Password Practices.docx".</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы скопировать файл, просто нажмите букву "c" на клавиатуре.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Шаг 7: Вставка восстановленного файла в каталог</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Затем утилита Testdisk отобразит список мест, в которые вы можете вставить скопированный файл, чтобы восстановить его. Опять же, выберите пункт назначения с помощью прокрутки и, как и прежде, нажмите "C", чтобы вставить его. В моем случае файл копируется в каталог "Public".</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4NXnn4ljyoTtCf5e0rjEBGIxJtVrZur63FWquOcBccJHvlcKYJ-c6GNhC8dCqp8VO2v-hQJZmVAdnSTidftKvO0AHYa4bqTSlAkhxQcUIQgGy68_GCgZJv919O0Q9Ndo-oDg0mnENBLUiKzIaQejd_rxSojDJ9CA3u16Xw-jqAw0TgSY50KfJ7qMV=s871" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="434" data-original-width="871" height="318" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4NXnn4ljyoTtCf5e0rjEBGIxJtVrZur63FWquOcBccJHvlcKYJ-c6GNhC8dCqp8VO2v-hQJZmVAdnSTidftKvO0AHYa4bqTSlAkhxQcUIQgGy68_GCgZJv919O0Q9Ndo-oDg0mnENBLUiKzIaQejd_rxSojDJ9CA3u16Xw-jqAw0TgSY50KfJ7qMV=w640-h318" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если все прошло хорошо, вы должны получить уведомление, что файлы были успешно скопированы.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh6x9TOY6qZovB_0dLQ0K4xrSVAaykl6HU8LGHfUkHddGOJoqA8cRkH61QYmS9Dy9GXX4AmrCc81syz_nwoye3AAIPyaXN_2P5DfCfzC2MRYs26SR-fsvBLjflv6AdkXN3wYxm4dmh-1vBTW3YYR6LlSe3Uv7Chfle2cIDBrbAfsfpyvjDEEuRCIgXq=s853" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="247" data-original-width="853" height="186" src="https://blogger.googleusercontent.com/img/a/AVvXsEh6x9TOY6qZovB_0dLQ0K4xrSVAaykl6HU8LGHfUkHddGOJoqA8cRkH61QYmS9Dy9GXX4AmrCc81syz_nwoye3AAIPyaXN_2P5DfCfzC2MRYs26SR-fsvBLjflv6AdkXN3wYxm4dmh-1vBTW3YYR6LlSe3Uv7Chfle2cIDBrbAfsfpyvjDEEuRCIgXq=w640-h186" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы выйти из утилиты Testdisk, выберите "Quit" и нажмите ENTER. Это вернет вас к предыдущему экрану. Выберите "Quit" и нажмите ENTER. Опять же, вы вернетесь назад и, как и прежде, выберите "Quit" и нажмите ENTER, чтобы полностью выйти из TestDisk.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Так вы можете восстановить удаленный файл в Linux с помощью утилиты testdisk. Если вы случайно удалите файл в своей системе, не паникуйте, testdisk придет вам на помощь.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><div>Оригинал: <a href="https://www.tecmint.com/recover-deleted-files-using-testdisk-in-linux/">How to Recover Deleted Files Using TestDisk in Linux</a></div></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-20693383214834060082022-02-23T02:20:00.000-08:002022-02-23T02:20:19.497-08:00Авторегрессионные модели скользящего среднего ARMA (p, q) для анализа временных рядов - часть 2<div style="text-align: justify;"><span style="font-family: verdana;">В </span><a href="https://distrland.blogspot.com/2021/12/arma-p-q-1.html" style="font-family: verdana;">части 1</a><span style="font-family: verdana;"> мы рассмотрели модель авторегрессии порядка p, также известную как модель AR(p). Мы ввели ее как расширение модели случайного блуждания в попытке объяснить дополнительную серийную корреляцию в финансовых временных рядах.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В конце концов мы поняли, что она не была достаточно гибкой, чтобы полностью учесть автокорреляцию цен закрытия Amazon Inc. (AMZN) и индекса акций США S&P500. Основная причина этого заключается в том, что оба этих актива условно гетероскедастичны, что означает, что они нестационарны и имеют периоды «переменной дисперсии» или кластеризации волатильности, что не учитывается моделью AR(p).<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В будущих статьях мы, в конечном итоге, построим модели авторегрессионного интегрированного скользящего среднего (ARIMA), а также условно гетероскедастические модели семейств ARCH и GARCH. Эти модели предоставят нам первые реалистичные попытки прогнозирования цен на активы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Однако в этой статье мы собираемся представить модель скользящего среднего порядка q, известную как MA(q). Это компонент более общей модели ARMA, и поэтому нам нужно понять ее, прежде чем двигаться дальше.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Модели скользящего среднего (MA) порядка q</b></div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Обоснование</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Модель скользящего среднего аналогична модели авторегрессии, за исключением того, что она представляет собой не линейную комбинацию прошлых значений временных рядов, а линейную комбинацию прошлых членов белого шума.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Интуитивно это означает, что модель MA видит такие случайные «шоки» белого шума непосредственно при каждом текущем значении модели. Это контрастирует с моделью AR(p), где «шоки» белого шума видны только косвенно, через регрессию на предыдущие члены ряда.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ключевое отличие состоит в том, что модель MA будет видеть только последние q шоков для любой конкретной модели MA(q), тогда как модель AR (p) будет учитывать все предыдущие шоки, хотя и в меньшей степени.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Определение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Математически MA (q) представляет собой модель линейной регрессии и имеет структуру, аналогичную AR (p):</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Модель скользящего среднего порядка q</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Модель временного ряда, {xt}, является моделью скользящего среднего порядка q, MA (q), если:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhu_cq_rWGs0CXFiPD3rsc75Voa5G-2o7Spf5BE3l3TKBvhRxpvi-wZPy2dri5Mr0FV6xiDkl_Rh0E5dulgDEr2YVY5mAOfe5T2HP17HP4fe18dLyR5boO_3SXw2s9oTLwiwkPI4J-ssvTYvoDTw0W-i77tVzTh5OFypOO4sEz_7ApggeDJUXajzm3J=s381" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="53" data-original-width="381" height="45" src="https://blogger.googleusercontent.com/img/a/AVvXsEhu_cq_rWGs0CXFiPD3rsc75Voa5G-2o7Spf5BE3l3TKBvhRxpvi-wZPy2dri5Mr0FV6xiDkl_Rh0E5dulgDEr2YVY5mAOfe5T2HP17HP4fe18dLyR5boO_3SXw2s9oTLwiwkPI4J-ssvTYvoDTw0W-i77tVzTh5OFypOO4sEz_7ApggeDJUXajzm3J=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Где {wₜ} - белый шум с E(wₜ) = 0 и дисперсией σ².</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если мы рассмотрим оператор обратного сдвига B (см. предыдущую статью), то мы можем переписать приведенное выше как функцию ϕ от B:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjnBtk-xGXCnOp1pZv-p9Ad6ImMZODQVraFzsn-i5_fl89wIKGici9GIaXRsuWZ-dkJPobKIsYvE5uI7gAe6Gyp1hvnoOw2lFoy5_JhWM9YJBSFUlgFTXAIEtTMRyr8ZtSsrWX1oTOsdXYRJCiujmOg_PRRUHYaifYQuwMEYzTT3ix9jLjhbMw9kxkk=s576" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="53" data-original-width="576" height="42" src="https://blogger.googleusercontent.com/img/a/AVvXsEjnBtk-xGXCnOp1pZv-p9Ad6ImMZODQVraFzsn-i5_fl89wIKGici9GIaXRsuWZ-dkJPobKIsYvE5uI7gAe6Gyp1hvnoOw2lFoy5_JhWM9YJBSFUlgFTXAIEtTMRyr8ZtSsrWX1oTOsdXYRJCiujmOg_PRRUHYaifYQuwMEYzTT3ix9jLjhbMw9kxkk=w463-h42" width="463" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В следующих статьях мы будем использовать функцию ϕ.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Свойства второго порядка</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как и в случае с AR(p), среднее значение процесса MA(q) равно нулю. Это легко увидеть, поскольку среднее - это просто сумма средних значений членов белого шума, которые сами по себе равны нулю.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvNBJ-CQbUA7voHKgZTxgafIHtXx1r7kxMsJZ8wEYkpsvgIC0ui5CDY4yf_v514pSKXkn5L-2-P9hH2-FztYsqzAQ4Rcm45wfz2cqWOgqVhNVW--B2pUX_oaWyLPjBi1d1oBoDQVM7XSgbpUCFlRvbBXsmRi3bwXtxP2FH7mbDCTZq4KzhAIxFxvYq=s676" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="326" data-original-width="676" height="221" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvNBJ-CQbUA7voHKgZTxgafIHtXx1r7kxMsJZ8wEYkpsvgIC0ui5CDY4yf_v514pSKXkn5L-2-P9hH2-FztYsqzAQ4Rcm45wfz2cqWOgqVhNVW--B2pUX_oaWyLPjBi1d1oBoDQVM7XSgbpUCFlRvbBXsmRi3bwXtxP2FH7mbDCTZq4KzhAIxFxvYq=w459-h221" width="459" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">где β₀ = 1.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь мы собираемся сгенерировать некоторые смоделированные данные и использовать их для создания коррелограмм. Это сделает приведенную выше формулу для ρk несколько более конкретной.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Моделирование и коррелограммы</b></div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>MA(1)</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Начнем с процесса MA (1). Если мы положим β1 = 0,6, получим следующую модель:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgkJCNQ3oGMtPNmnm4PFlpt-dDygPACOs294pNNsPV-IT9pn7VWUYXDeJ3TFMRTu5NQjZWRRFZDRZcvlTlBXD8wnK8bbVqVuae7oddaXAXynbo4SBgyqm_Dk2Chksnyz2VFZ-j1oXb4zBY5TcMXn1Ca8Wwu7eZTonDuhysVlcsZlUE6B3vCHj_FFoHi=s237" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="51" data-original-width="237" height="47" src="https://blogger.googleusercontent.com/img/a/AVvXsEgkJCNQ3oGMtPNmnm4PFlpt-dDygPACOs294pNNsPV-IT9pn7VWUYXDeJ3TFMRTu5NQjZWRRFZDRZcvlTlBXD8wnK8bbVqVuae7oddaXAXynbo4SBgyqm_Dk2Chksnyz2VFZ-j1oXb4zBY5TcMXn1Ca8Wwu7eZTonDuhysVlcsZlUE6B3vCHj_FFoHi=w219-h47" width="219" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как и в случае с моделями AR(p) из предыдущей статьи, мы можем использовать R для моделирования такого ряда, а затем построить коррелограмму. Поскольку в предыдущей серии статей по анализу временных рядов у нас было много практики построения графиков, я напишу код R полностью, а не разбиваю его на части:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> set.seed<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> w <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> rnorm<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">100</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token keyword" style="border: 0px; box-sizing: border-box; color: #66d9ef; margin: 0px; padding: 0px; vertical-align: baseline;">for</span> <span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>t <span class="token keyword" style="border: 0px; box-sizing: border-box; color: #66d9ef; margin: 0px; padding: 0px; vertical-align: baseline;">in</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">100</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.6</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span>w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> layout<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> plot<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> type<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="token string" style="border: 0px; box-sizing: border-box; color: #a6e22e; margin: 0px; padding: 0px; vertical-align: baseline;">"l"</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div style="text-align: justify;">Результат выглядит следующим образом:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgk4GcTqknxTbnkuKL0_yTXYPJrUG8r5Bx02rIsSFeJvDgj_uvxKcgRTWGkt4ukMSiGAN6Av0ZW53_nw0n7RfqQybYKrwxdCoX-GMVmjdx7KcHpgC4PgVIJH-c2_1wCqjibGMj-8AuD3tjhhUsdmeVcEKcBUoq4dRBTpZCrBsXTOkrzLU--b5OmZpf6=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgk4GcTqknxTbnkuKL0_yTXYPJrUG8r5Bx02rIsSFeJvDgj_uvxKcgRTWGkt4ukMSiGAN6Av0ZW53_nw0n7RfqQybYKrwxdCoX-GMVmjdx7KcHpgC4PgVIJH-c2_1wCqjibGMj-8AuD3tjhhUsdmeVcEKcBUoq4dRBTpZCrBsXTOkrzLU--b5OmZpf6=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Реализация модели MA (1) с β1 = 0,6 и соответствующей коррелограммой.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как мы видели выше в формуле для ρk, при k> q все автокорреляции должны быть нулевыми. Поскольку q = 1, мы должны увидеть значительный пик при k = 1, а затем незначительные пики после него. Однако из-за систематической ошибки выборки мы должны ожидать увидеть 5% (незначительно) значимых пиков на графике автокорреляции выборки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Именно это и показывает нам коррелограмма в данном случае. У нас есть значительный пик при k = 1, а затем незначительные пики при k> 1, за исключением k = 4, где имеется незначительный пик.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Фактически, это полезный способ увидеть, подходит ли модель MA(q). Взглянув на коррелограмму определенного ряда, мы можем увидеть, сколько имеется последовательных ненулевых лагов. Если существует q таких лагов, мы можем законно попытаться подогнать модель MA(q) к определенному ряду.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Поскольку у нас есть свидетельства из наших смоделированных данных процесса MA (1), теперь мы собираемся попытаться подогнать модель MA (1) к нашим смоделированным данным. К сожалению, в R нет команды ma, эквивалентной команде авторегрессионной модели ar.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вместо этого мы должны использовать более общую команду arima и установить для авторегрессии и интегрированных компонентов ноль. Мы делаем это, создавая 3-вектор и устанавливая первые два компонента (автогрессивный и интегрированный параметры соответственно) равными нулю:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = x, order = c(0, 0, 1))
Coefficients:
ma1 intercept
0.6023 0.1681
s.e. 0.0827 0.1424
sigma^2 estimated as 0.7958: log likelihood = -130.7, aic = 267.39</code></pre></div><div style="text-align: justify;">Мы получаем полезный вывод от команды arima. Во-первых, мы видим, что параметр был оценен как β1 ^ = 0,602, что очень близко к истинному значению β1 = 0,6. Во-вторых, стандартные ошибки уже рассчитаны для нас, что упрощает расчет доверительных интервалов. В-третьих, мы получаем оценочную дисперсию, логарифмическую вероятность и информационный критерий Акаике (необходимый для сравнения моделей).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Основное различие между arima и ar заключается в том, что arima оценивает член intercept, потому что она не вычитает среднее значение ряда. Следовательно, нам нужно быть осторожными при выполнении прогнозов с помощью команды arima. Мы вернемся к этому вопросу позже.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В качестве быстрой проверки мы собираемся вычислить доверительные интервалы для β1:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.6023</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.0827</span></code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">0.440208 0.764392</code></pre></div><div style="text-align: justify;">Мы видим, что 95% доверительный интервал содержит истинное значение параметра β1 = 0,6, и поэтому мы можем судить, что модель подогнана хорошо. Очевидно, этого следовало ожидать, поскольку мы в первую очередь моделировали данные!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Что изменится, если мы изменим знак β1 на -0,6? Проделаем тот же анализ:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> set.seed<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> w <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> rnorm<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">100</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token keyword" style="border: 0px; box-sizing: border-box; color: #66d9ef; margin: 0px; padding: 0px; vertical-align: baseline;">for</span> <span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>t <span class="token keyword" style="border: 0px; box-sizing: border-box; color: #66d9ef; margin: 0px; padding: 0px; vertical-align: baseline;">in</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">100</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.6</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span>w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> layout<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> plot<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> type<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="token string" style="border: 0px; box-sizing: border-box; color: #a6e22e; margin: 0px; padding: 0px; vertical-align: baseline;">"l"</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div style="text-align: justify;">Результат выглядит следующим образом:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3iZRpuw_57O1j66hfQ3wxHzNWtUhsU5VqiDwGqZ6QfOBpSDS1dGYLR4OE3zYhSZVIg5jeVzV5wG4DImrt3a3PnVxjKQ1FUwkYoav88LsDsMuDV_d8qME4n62VihK1paMJKAm_YtbFrc-nmXNabMmD_Iv4EAQva7kDaX1-Yx-s4u1_rye6l2gK7m-R=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3iZRpuw_57O1j66hfQ3wxHzNWtUhsU5VqiDwGqZ6QfOBpSDS1dGYLR4OE3zYhSZVIg5jeVzV5wG4DImrt3a3PnVxjKQ1FUwkYoav88LsDsMuDV_d8qME4n62VihK1paMJKAm_YtbFrc-nmXNabMmD_Iv4EAQva7kDaX1-Yx-s4u1_rye6l2gK7m-R=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Реализация модели MA (1) с β1 = −0,6 и соответствующей коррелограммой.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы можем видеть, что при k = 1 у нас есть значительный пик на коррелограмме, за исключением того, что он показывает отрицательную корреляцию, как и следовало ожидать от модели MA(1) с отрицательным первым коэффициентом. И снова все пики за k = 1 несущественны. Подгоним модель MA(1) и оценим параметр:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span>
arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
Coefficients<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span>
ma1 intercept
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.7298</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.0486</span>
s.e. <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.1008</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.0246</span>
sigma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">^</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span> estimated as <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.7841</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span> log likelihood <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">130.11</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> aic <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">266.23</span></code></pre></div><div style="text-align: justify;">β1 ^ = - 0,730, что немного занижено для β1 = −0,6. Наконец, рассчитаем доверительный интервал:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.730</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.1008</span></code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">-0.927568 -0.532432</code></pre></div><div style="text-align: justify;">Мы видим, что истинное значение параметра β1 = −0,6 находится в пределах 95% доверительного интервала, что дает нам свидетельство хорошего соответствия модели.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>MA(3)</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Давайте проделаем ту же процедуру для процесса MA(3). На этот раз следует ожидать значительных пиков при k {1,2,3} и незначительных пиков при k> 3.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы собираемся использовать следующие коэффициенты: β1 = 0,6, β2 = 0,4 и β3 = 0,2. Давайте смоделируем процесс MA(3) из этой модели. Я увеличил количество случайных выборок до 1000 в этом моделировании, что упрощает просмотр истинной структуры автокорреляции за счет усложнения интерпретации исходных рядов:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> set.seed<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> w <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> rnorm<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1000</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token keyword" style="border: 0px; box-sizing: border-box; color: #66d9ef; margin: 0px; padding: 0px; vertical-align: baseline;">for</span> <span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>t <span class="token keyword" style="border: 0px; box-sizing: border-box; color: #66d9ef; margin: 0px; padding: 0px; vertical-align: baseline;">in</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">4</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1000</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span> x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.6</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span>w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.4</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span>w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.3</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span>w<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span>t<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> layout<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">:</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> plot<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> type<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span><span class="token string" style="border: 0px; box-sizing: border-box; color: #a6e22e; margin: 0px; padding: 0px; vertical-align: baseline;">"l"</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div style="text-align: justify;">Результат выглядит следующим образом:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh_X9nV6Zp8hJhhPQ6PyPu4JBJhiBu8vstuEctrkZ1NUfoLJp1W2Gs7FdW07KNa6V71c1UZa-56sODZd3ztG08gfgYP3UnaQs3NWlor2SfxbI8ECidGC-SlCxIN3zT49Jk0ztrQ8emwwzLW20uFPHItRGAOFGiMiUtZ5sMubpPHbXPUSAvSD6x8aIxz=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEh_X9nV6Zp8hJhhPQ6PyPu4JBJhiBu8vstuEctrkZ1NUfoLJp1W2Gs7FdW07KNa6V71c1UZa-56sODZd3ztG08gfgYP3UnaQs3NWlor2SfxbI8ECidGC-SlCxIN3zT49Jk0ztrQ8emwwzLW20uFPHItRGAOFGiMiUtZ5sMubpPHbXPUSAvSD6x8aIxz=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Реализация модели MA(3) и связанная с ней коррелограмма.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как и ожидалось, первые три пика значительны. Впрочем, четвертый - тоже. Но мы можем обоснованно предположить, что это может быть связано с систематической ошибкой выборки, поскольку мы ожидаем увидеть 5% пиков, значимых за пределами k = q.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь давайте подгоним модель MA(3) к данным, чтобы попытаться оценить параметры:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>x<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> x.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = x, order = c(0, 0, 3))
Coefficients:
ma1 ma2 ma3 intercept
0.5439 0.3450 0.2975 -0.0948
s.e. 0.0309 0.0349 0.0311 0.0704
sigma^2 estimated as 1.039: log likelihood = -1438.47, aic = 2886.95</code></pre></div><div style="text-align: justify;">Оценки β1 ^ = 0,544, β2 ^ = 0,345 и β3 ^ = 0,298 близки к истинным значениям β1 = 0,6, β2 = 0,4 и β3 = 0,3 соответственно. Мы также можем рассчитать доверительные интервалы, используя соответствующие стандартные ошибки:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.544</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.0309</span></code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">0.483436 0.604564</code></pre></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.345</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.0349</span></code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">0.276596 0.413404</code></pre></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.298</span> <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">+</span> c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1.96</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">*</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0.0311</span></code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">0.237044 0.358956</code></pre></div><div style="text-align: justify;">В каждом случае 95% доверительные интервалы действительно содержат истинное значение параметра, и мы можем сделать вывод, что мы получили хорошее соответствие нашей модели MA(3), как и следовало ожидать.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Финансовые данные</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В первой части мы рассмотрели Amazon Inc. (AMZN) и индекс S&P500. Мы подогнали модель AR(p) к ним обоим и обнаружили, что модель не может эффективно уловить сложность последовательной корреляции, особенно в модели S&P500, где, похоже, присутствуют эффекты длинной памяти.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Я не буду снова строить графики для цен и автокорреляции, вместо этого я отсылаю вас к предыдущему посту.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Amazon Inc. (AMZN)</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Начнем с попытки подогнать набор моделей MA(q) к AMZN, а именно с q {1,2,3}. Как и в первой части, мы будем использовать Quantmod для загрузки дневных цен AMZN, а затем конвертируем их в поток логарифмических доходностей цен закрытия:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> require<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>quantmod<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> getSymbols<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token string" style="border: 0px; box-sizing: border-box; color: #a6e22e; margin: 0px; padding: 0px; vertical-align: baseline;">"AMZN"</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> diff<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>log<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>Cl<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>AMZN<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div style="text-align: justify;">Теперь, когда у нас есть логарифмические доходности, мы можем использовать команду arima для подгонки моделей MA(1), MA(2) и MA(3), а затем оценить параметры каждой из них. Для МА(1) имеем:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>amznrt<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = amznrt, order = c(0, 0, 1))
Coefficients:
ma1 intercept
-0.030 0.0012
s.e. 0.023 0.0006
sigma^2 estimated as 0.0007044: log likelihood = 4796.01, aic = -9586.02</code></pre></div><div style="text-align: justify;">Мы можем построить остатки дневных логарифмических доходностей и подогнанную модель:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>amznrt.ma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">$</span>res<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiATuXR2-LvR71SJAB9jrg8lQyRfX1S25CkmCaY2PdPIS4hTbniys3Ctcxooog7T0LvQUuVWrG5TagQm9RnFMcUif8JKk16a9CCDAALgIIHPISjI1p0bIfm2_beGrX72XwKObiWLA8y_EqO62M00pzEvg52yJyWydNQa-_eYimxml8dv4Fke6RWSlc9=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEiATuXR2-LvR71SJAB9jrg8lQyRfX1S25CkmCaY2PdPIS4hTbniys3Ctcxooog7T0LvQUuVWrG5TagQm9RnFMcUif8JKk16a9CCDAALgIIHPISjI1p0bIfm2_beGrX72XwKObiWLA8y_EqO62M00pzEvg52yJyWydNQa-_eYimxml8dv4Fke6RWSlc9=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Остатки модели MA(1), подогнанной к дневным логарифмическим доходностям AMZN</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Обратите внимание, что у нас есть несколько значительных пиков при лагах k = 2, k = 11, k = 16 и k = 18, что указывает на то, что модель MA(1) вряд ли будет хорошо соответствовать поведению логарифмических доходностей AMZN, поскольку это не похоже на реализацию белого шума.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Давайте попробуем модель MA(2):</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>amznrt<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = amznrt, order = c(0, 0, 2))
Coefficients:
ma1 ma2 intercept
-0.0254 -0.0689 0.0012
s.e. 0.0215 0.0217 0.0005
sigma^2 estimated as 0.0007011: log likelihood = 4801.02, aic = -9594.05</code></pre></div><div style="text-align: justify;">Обе оценки коэффициентов β отрицательны. Давайте еще раз нарисуем остатки:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>amznrt.ma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">$</span>res<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjAEY4cKzX-sLkDPuAXOgxZPD_mNxSPG6Y_xJsBanPBPTEjV9pegknKYnz9ODzpLtEGn2YmdidndR4GmrJXVe_tbXVHqMBV_4KYbH-nIWAUWY2pfwtwka6jojUQpZbK_uGuDeCkYPKsXUFs0bvkzGbe4ZCWGI3f1sO8wEBrY7JtulirTF3SLZRHafbF=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjAEY4cKzX-sLkDPuAXOgxZPD_mNxSPG6Y_xJsBanPBPTEjV9pegknKYnz9ODzpLtEGn2YmdidndR4GmrJXVe_tbXVHqMBV_4KYbH-nIWAUWY2pfwtwka6jojUQpZbK_uGuDeCkYPKsXUFs0bvkzGbe4ZCWGI3f1sO8wEBrY7JtulirTF3SLZRHafbF=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Остатки модели MA(2), подогнанной к дневным логарифмическим доходностям AMZN</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы видим, что в первые несколько лагов автокорреляция почти нулевая. Однако у нас есть пять незначительных пиков при лагах k = 12, k = 16, k = 19, k = 25 и k = 27. Это наводит на мысль, что модель MA(2) улавливает большую часть автокорреляции, но не все эффекты длинной памяти. Как насчет модели MA(3)?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>amznrt<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> amznrt.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = amznrt, order = c(0, 0, 3))
Coefficients:
ma1 ma2 ma3 intercept
-0.0262 -0.0690 0.0177 0.0012
s.e. 0.0214 0.0217 0.0212 0.0005
sigma^2 estimated as 0.0007009: log likelihood = 4801.37, aic = -9592.75</code></pre></div><div style="text-align: justify;">Еще раз, мы можем построить невязки:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>amznrt.ma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">$</span>res<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjdgLZq-C1X0YX6PxClJItY3YUYkOcBVEVzPTxo9mWaHijWUbkvWXNyl32Go7h5IBLZqcFDKaFyJUFNoKeNlaneKMlTRogbnFrRsF3khkLNcLz5joMkHD3MS9FFQSXI3zUcomDgr-yNQApYyc5ewecBoGw53VMGyKy32x38T1xuL93zFJAfzpPPzGH6=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjdgLZq-C1X0YX6PxClJItY3YUYkOcBVEVzPTxo9mWaHijWUbkvWXNyl32Go7h5IBLZqcFDKaFyJUFNoKeNlaneKMlTRogbnFrRsF3khkLNcLz5joMkHD3MS9FFQSXI3zUcomDgr-yNQApYyc5ewecBoGw53VMGyKy32x38T1xuL93zFJAfzpPPzGH6=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Остатки модели MA (3), подогнанной к дневным логарифмическим доходностям AMZN.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">График остатков MA(3) выглядит почти идентично графику модели MA(2). Это неудивительно, поскольку мы добавляем новый параметр в модель, которая, казалось бы, объяснила большую часть корреляций при более коротких лагах, но это не окажет большого влияния на более долгосрочные лаги.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Все эти свидетельства наводят на мысль о том, что модель MA(q) вряд ли будет полезна для объяснения всей последовательной корреляции изолированно, по крайней мере, для AMZN.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>S&P500</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы помните, в первой части мы видели, что структура разностей первого порядка логарифмической доходности для S&P500 имеет много значительных пиков с различными лагами, как короткими, так и длинными. Это предоставило доказательства как условной гетероскедастичности (т. е. кластеризации волатильности), так и эффектов долгой памяти. Это привело нас к выводу, что модели AR(p) было недостаточно для отражения всей присутствующей автокорреляции.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как мы видели выше, модели MA(q) было недостаточно, чтобы уловить дополнительную серийную корреляцию в остатках подобранной модели с разностями первого порядка логарифмической доходности. Теперь мы попытаемся подогнать модель MA(q) к S&P500.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Кто-то может спросить, зачем мы это делаем, если мы знаем, что это вряд ли пройдет. Это хороший вопрос. Ответ заключается в том, что нам нужно точно увидеть, насколько это не соответствует факту, потому что это конечный процесс, которому мы будем следовать, когда столкнемся с гораздо более сложными моделями, которые потенциально труднее интерпретировать.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Давайте начнем с получения данных и их преобразования в разность первого порядка логарифмически преобразованных дневных цен закрытия, как в предыдущей статье:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> getSymbols<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token string" style="border: 0px; box-sizing: border-box; color: #a6e22e; margin: 0px; padding: 0px; vertical-align: baseline;">"^GSPC"</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span> diff<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>log<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>Cl<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>GSPC<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div style="text-align: justify;">Теперь мы собираемся подогнать модели MA(1), MA(2) и MA(3) к ряду, как мы сделали выше для AMZN. Начнем с МА(1):</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>gspcrt<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = gspcrt, order = c(0, 0, 1))
Coefficients:
ma1 intercept
-0.1284 2e-04
s.e. 0.0223 3e-04
sigma^2 estimated as 0.0001844: log likelihood = 6250.23, aic = -12494.46</code></pre></div><div style="text-align: justify;">Построим график остатков этой подогнанной модели:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>gspcrt.ma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">$</span>res<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjyWVw1V1FxLIZu8OHM80mQEUV_8z-e3b7xle1RLlt8d0U2RvUBPVrrNC24LQQGxoP6rVm0ZFWnUilswW2D69cRsrOMZLzH9idrij1ol08MMw3hVPlhbTyEiFUtDHloeYMMZ23wgEVQuTT4IE2ztYrVreYOF1lB5XPL3QLevIAnETPqJMlfe5KDX1Xs=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEjyWVw1V1FxLIZu8OHM80mQEUV_8z-e3b7xle1RLlt8d0U2RvUBPVrrNC24LQQGxoP6rVm0ZFWnUilswW2D69cRsrOMZLzH9idrij1ol08MMw3hVPlhbTyEiFUtDHloeYMMZ23wgEVQuTT4IE2ztYrVreYOF1lB5XPL3QLevIAnETPqJMlfe5KDX1Xs=w640-h480" width="640" /></a></div><div style="text-align: justify;"><i>Остатки модели MA(1), адаптированной к логарифмическим дневным ценам S&P500</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Первый значимый пик возникает при k = 2, но их гораздо больше при k {5,10,14,15,16,18,20,21}. Очевидно, что это не реализация белого шума, поэтому мы должны отклонить модель MA(1) как потенциально подходящую для S&P500.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Улучшается ли ситуация с MA (2)?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>gspcrt<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">2</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = gspcrt, order = c(0, 0, 2))
Coefficients:
ma1 ma2 intercept
-0.1189 -0.0524 2e-04
s.e. 0.0216 0.0223 2e-04
sigma^2 estimated as 0.0001839: log likelihood = 6252.96, aic = -12497.92</code></pre></div><div style="text-align: justify;">Еще раз, давайте построим график остатков этой модели MA(2):</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>gspcrt.ma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">$</span>res<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEicGMi4pYFFSZt2OHJX7N681TjZlKEzpm0mLxpq4NmO0cl-s8Luxrhpo7g5Q60nlE8QAF7YilmYPTLq0yZC734UDqKZxTOrjZdmAF7V-NDqC6BQnkJE-uIWeNVLsp9pwtXsAt1RxuuUCgkD1V0cuaNK-g3dhk2bslzSkQSlFwKlyRU3mDVImZqiqG5z=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEicGMi4pYFFSZt2OHJX7N681TjZlKEzpm0mLxpq4NmO0cl-s8Luxrhpo7g5Q60nlE8QAF7YilmYPTLq0yZC734UDqKZxTOrjZdmAF7V-NDqC6BQnkJE-uIWeNVLsp9pwtXsAt1RxuuUCgkD1V0cuaNK-g3dhk2bslzSkQSlFwKlyRU3mDVImZqiqG5z=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Остатки модели MA (2), адаптированной к логарифмическим дневным ценам S&P500</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Хотя пик при k = 2 исчез (как и следовало ожидать), мы все еще остались со значительными пиками на многих более длительных лагах в остатках. И снова мы видит, что модель MA(2) не подходит.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы должны ожидать, что для модели MA (3) будет наблюдаться меньшая последовательная корреляция при k = 3, чем для MA(2), но, опять же, мы также не должны ожидать уменьшения дальнейших лагов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt.ma <span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;"><-</span> arima<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>gspcrt<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> order<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">=</span>c<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">0</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">,</span> <span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">3</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span>
<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> gspcrt.ma</code></pre></div><div style="text-align: justify;"><pre class=" language-none" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-none" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;">Call:
arima(x = gspcrt, order = c(0, 0, 3))
Coefficients:
ma1 ma2 ma3 intercept
-0.1189 -0.0529 0.0289 2e-04
s.e. 0.0214 0.0222 0.0211 3e-04
sigma^2 estimated as 0.0001838: log likelihood = 6253.9, aic = -12497.81</code></pre></div><div style="text-align: justify;">Наконец, давайте построим график остатков этой модели MA(3):</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class=" language-r" style="background: rgb(39, 40, 34); border-radius: 0.3em; border: 0px; box-sizing: border-box; color: #f8f8f2; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 16px; hyphens: none; line-height: 1.5; margin-bottom: 1.6em; margin-top: 0.5em; overflow-wrap: normal; overflow: auto; padding: 1em; tab-size: 4; text-align: left; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal;"><code class=" language-r" style="background: none; border: 0px; box-sizing: border-box; font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace; font-size: 1em; hyphens: none; line-height: 1.5; margin: 0px; overflow-wrap: normal; padding: 0px; tab-size: 4; text-shadow: rgba(0, 0, 0, 0.3) 0px 1px; vertical-align: baseline; word-break: normal; word-spacing: normal;"><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">></span> acf<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">(</span>gspcrt.ma<span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">$</span>res<span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">[</span><span class="token operator" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">-</span><span class="token number" style="border: 0px; box-sizing: border-box; color: #ae81ff; margin: 0px; padding: 0px; vertical-align: baseline;">1</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">]</span><span class="token punctuation" style="border: 0px; box-sizing: border-box; margin: 0px; padding: 0px; vertical-align: baseline;">)</span></code></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgZYhMgnzDPTO-DnjuOk3T0Ll2fPJiuKVApzpOmXlWpWmCZFtBA-e3bQ0Up8c0-96ArdQTpKGEzUPEnILBfTKjNp_hxJsKsUOQ8Eba4fDzyf39UQUixMTzh0cTamcE_vZar0B6ugTFQNSOdIC54dCyvOGoTiRX5pQ2_Bj8v6rMGc--Ix8oZOvVqJaa7=s2400" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1800" data-original-width="2400" height="480" src="https://blogger.googleusercontent.com/img/a/AVvXsEgZYhMgnzDPTO-DnjuOk3T0Ll2fPJiuKVApzpOmXlWpWmCZFtBA-e3bQ0Up8c0-96ArdQTpKGEzUPEnILBfTKjNp_hxJsKsUOQ8Eba4fDzyf39UQUixMTzh0cTamcE_vZar0B6ugTFQNSOdIC54dCyvOGoTiRX5pQ2_Bj8v6rMGc--Ix8oZOvVqJaa7=w640-h480" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Остатки модели MA (3), адаптированной к логарифмическим дневным ценам S&P500</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Именно это мы и видим на коррелограмме остатков. Следовательно, MA(3), как и другие модели выше, не подходит для S&P500.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Дальнейшие шаги</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы подробно рассмотрели две основные модели временных рядов, а именно автогрессионную модель порядка p, AR(p) и затем скользящую среднюю порядка q, MA(q). Мы видели, что они обе способны объяснить некоторую автокорреляцию в остатках разностей первого порядка от логарифмических цен на акции и индексы, но кластеризация волатильности и эффекты долгой памяти сохраняются.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Наконец, пора обратить наше внимание на комбинацию этих двух моделей, а именно на авторегрессионную скользящую среднюю порядка p, q, ARMA (p, q), чтобы посмотреть, улучшит ли она ситуацию.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Однако для полноценного обсуждения нам придется подождать до следующей статьи!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.quantstart.com/articles/Autoregressive-Moving-Average-ARMA-p-q-Models-for-Time-Series-Analysis-Part-2/">Autoregressive Moving Average ARMA(p, q) Models for Time Series Analysis - Part 2</a>.</div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-68654883081654406082022-02-22T11:45:00.000-08:002022-02-22T11:45:16.434-08:0094% галактик Вселенной навсегда находятся за пределами нашей досягаемости<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhsrBvJZbFThoNmcf47LBv_FyUTLyvBYqkV8_Pmhs4B7ldZaauHpXkxP0f74sgB3aB8ZEGs_QQ9cKFAkmiH2iupLwM4UZybSIb0MDn6gES85Z3RLrbz3q8UPoLgFKryEU8wloaiuiADTnjLzAGP4qAX6rE_-lnU0e6LGJAaKoTQ9U5_JQIylLyTsJej=s960" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="818" data-original-width="960" height="395" src="https://blogger.googleusercontent.com/img/a/AVvXsEhsrBvJZbFThoNmcf47LBv_FyUTLyvBYqkV8_Pmhs4B7ldZaauHpXkxP0f74sgB3aB8ZEGs_QQ9cKFAkmiH2iupLwM4UZybSIb0MDn6gES85Z3RLrbz3q8UPoLgFKryEU8wloaiuiADTnjLzAGP4qAX6rE_-lnU0e6LGJAaKoTQ9U5_JQIylLyTsJej=w464-h395" width="464" /></a></div><div style="text-align: justify;"><br /></div><span style="font-family: verdana;"><div style="text-align: justify;">Наша Вселенная повсюду и во всех направлениях заполнена звездами и галактиками.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj6I7kyLNznCaO34Y2_FdMa3FZZgp8xu4ZGhvj-qv35r8TGqJie1sqrXb92CMdiLgzxEL8_5sfrofnTgQl2ul0MmBXkszS4-lwgSTst3CaO5Lu5cbe6A4MACse_XFGCdHJjz5RfvpU-IjE4uKSpKvxhIpphpB2vGoGGSvL5joUK1iSpgt2CJodf61en=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="587" data-original-width="875" height="430" src="https://blogger.googleusercontent.com/img/a/AVvXsEj6I7kyLNznCaO34Y2_FdMa3FZZgp8xu4ZGhvj-qv35r8TGqJie1sqrXb92CMdiLgzxEL8_5sfrofnTgQl2ul0MmBXkszS4-lwgSTst3CaO5Lu5cbe6A4MACse_XFGCdHJjz5RfvpU-IjE4uKSpKvxhIpphpB2vGoGGSvL5joUK1iSpgt2CJodf61en=w640-h430" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Млечный Путь, видимый из обсерватории Ла Силья, представляет собой ошеломляющее, внушающее благоговейный трепет зрелище для всех и предлагает захватывающий вид на огромное количество звезд в нашей галактике. Однако за пределами нашей галактики есть триллионы других галактик, почти все из которых удаляются от нас. (Фото: ESO / Håkon Dahle)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">С нашей точки зрения мы можем наблюдать на расстоянии до 46,1 миллиарда световых лет.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhxNGV7bcP5hUk9-bO2RMLZXrlcBRY67bBBcmpzfjdjiGHQWa-qi4fhhPZMj3sxo8z9tlgvxDLW5s2fZKv57A7z3M0sz73QGM2jQeLWgsmfjVZf-u285azqNxde2DzrVE6BoF8yC6o8zfO8UZylTZ50MfEs7u-SUeTYhAILsVArIEm8Y2sGOlV4ofNh=s777" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="432" data-original-width="777" height="356" src="https://blogger.googleusercontent.com/img/a/AVvXsEhxNGV7bcP5hUk9-bO2RMLZXrlcBRY67bBBcmpzfjdjiGHQWa-qi4fhhPZMj3sxo8z9tlgvxDLW5s2fZKv57A7z3M0sz73QGM2jQeLWgsmfjVZf-u285azqNxde2DzrVE6BoF8yC6o8zfO8UZylTZ50MfEs7u-SUeTYhAILsVArIEm8Y2sGOlV4ofNh=w640-h356" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Поскольку свет, излученной в начале горячего Большого взрыва 13,8 миллиарда лет назад, достиг бы нас к сегодняшнему дню, этот объект находится в пределах нашей наблюдаемой в настоящее время Вселенной. Однако не каждый наблюдаемый объект достижим. (Источник: F. Summers, A. Pagan, L. Hustak, G. Bacon, Z. Levay, and L. Frattere (STScI))</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Наша видимая Вселенная содержит около 2 триллионов галактик.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiRi5Unxa8p-hHOiuqF48sVXtRFNk1E1JWUOApEqbj05D9W6xJu7JTywUt2INQWHr9d_wBwu666FRK6sQQ_nAJUrFJ6ayWjk55N9yclV3FPSxASMoHDwUlrQECI3QYhD2qQPVSPGWOsIUIDy6aC-fK9OmAWGjkmd5ltSdkKVINbKMCq64-HY2Sp5BLU=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="873" data-original-width="875" height="474" src="https://blogger.googleusercontent.com/img/a/AVvXsEiRi5Unxa8p-hHOiuqF48sVXtRFNk1E1JWUOApEqbj05D9W6xJu7JTywUt2INQWHr9d_wBwu666FRK6sQQ_nAJUrFJ6ayWjk55N9yclV3FPSxASMoHDwUlrQECI3QYhD2qQPVSPGWOsIUIDy6aC-fK9OmAWGjkmd5ltSdkKVINbKMCq64-HY2Sp5BLU=w475-h474" width="475" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>На снимке Hubble eXtreme Deep Field (XDF) представлен участок неба, составляющий всего 1/32 000 000 от общей площади звездного неба, но на нем смогли обнаружить колоссальные 5500 галактик: примерно 10% от общего числа галактик, фактически содержащихся в этом срезе. Остальные 90% галактик либо слишком тусклые, либо слишком красные, либо слишком затемненные, чтобы Хаббл мог их обнаружить. (Источник: команды HUDF09 и HUDF12; обработка: Э. Сигель)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Однако большинство из них уже навсегда недоступны для нас.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjHBWJdCdWnWp3qgNT3vqhoeAlLEDbl8iLUAnTLs5hPT00VeJUAiwgeDJDfWGYUv7RZ-FnVSBOt0mYd0K8i_XsKFDPgsBpeX5eNRuBtKWQI4zCPi7mZlnBoLsWscKQBO65xOhsZVpMy9H5Qn_UVPAFPifIhv1hjOb3p9DNXOOyXIDUVVpsWVKmNLPsD=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="612" data-original-width="875" height="448" src="https://blogger.googleusercontent.com/img/a/AVvXsEjHBWJdCdWnWp3qgNT3vqhoeAlLEDbl8iLUAnTLs5hPT00VeJUAiwgeDJDfWGYUv7RZ-FnVSBOt0mYd0K8i_XsKFDPgsBpeX5eNRuBtKWQI4zCPi7mZlnBoLsWscKQBO65xOhsZVpMy9H5Qn_UVPAFPifIhv1hjOb3p9DNXOOyXIDUVVpsWVKmNLPsD=w640-h448" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Хотя в eXtreme Deep Field есть увеличенные, сверхдальние, очень красные и даже инфракрасные галактики, есть галактики, которые еще дальше, чем те, которые мы обнаружили в наших самых глубоких на сегодняшний день изображениях. Эти галактики всегда будут оставаться видимыми для нас, но мы никогда не увидим их такими, какими они являются сегодня: через 13,8 миллиарда лет после Большого взрыва. (Источник: НАСА, ЕКА, Р. Боуэнс и Г. Иллингсворт (Калифорнийский университет, Санта-Крус))</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По мере расширения Вселенной пространство между всеми несвязанными объектами со временем увеличивается.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjO42mS61MXYc5gsrPWP13Rq0-3Bt07RZ-JofSCm2TVM_ifbld_nXlq0hQXpOKhkf3vRepYX1_JuS_HNSVrRQj_X08PqCxPznXQ2H1BZeRmY5TPKwnTaato6fMQePNUrRhCPW6BB8HVkVNGAcVWSjPaDgfMj_ZeiD2y7mAa04TQbnuf4OJIJpJ-nejy=s648" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="518" data-original-width="648" height="397" src="https://blogger.googleusercontent.com/img/a/AVvXsEjO42mS61MXYc5gsrPWP13Rq0-3Bt07RZ-JofSCm2TVM_ifbld_nXlq0hQXpOKhkf3vRepYX1_JuS_HNSVrRQj_X08PqCxPznXQ2H1BZeRmY5TPKwnTaato6fMQePNUrRhCPW6BB8HVkVNGAcVWSjPaDgfMj_ZeiD2y7mAa04TQbnuf4OJIJpJ-nejy=w496-h397" width="496" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Эта упрощенная анимация показывает, как происходит красное смещение света и как со временем меняются расстояния между несвязанными объектами в расширяющейся Вселенной. Обратите внимание, что объекты в начале ближе, чем время, которое требуется свету, чтобы пройти между ними, свет смещается в красную сторону из-за расширения пространства, а две галактики оказываются намного дальше друг от друга, чем путь, пройденный фотоном между ними. (Источник: Роб Кноп.)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">За пределами расстояний примерно в 14,5 миллиардов световых лет расширение космоса удаляет галактики быстрее, чем может двигаться свет.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEieomitVw_zxMT9qgZISVWx_Em_dDtv1KNUW0V7mu9U7cOodvxAvPxaaslcBtFwb6UaVJUgV5RK19IEkb7LfjkKw7lM8XPqWLlvnYG85qkyX7-1p4OygqpbkZNpiHzccC3Kap95pm8fB06HWHE2rcnkyg5CYTf0mx5ThkFwtAvWoomgdZKdHpn4_MQU=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="875" data-original-width="875" height="493" src="https://blogger.googleusercontent.com/img/a/AVvXsEieomitVw_zxMT9qgZISVWx_Em_dDtv1KNUW0V7mu9U7cOodvxAvPxaaslcBtFwb6UaVJUgV5RK19IEkb7LfjkKw7lM8XPqWLlvnYG85qkyX7-1p4OygqpbkZNpiHzccC3Kap95pm8fB06HWHE2rcnkyg5CYTf0mx5ThkFwtAvWoomgdZKdHpn4_MQU=w493-h493" width="493" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Оглядываясь на космическое время в Hubble Ultra Deep Field, ALMA проследил присутствие монооксида углерода. Это позволило астрономам создать трехмерное изображение звездообразующего потенциала космоса. Галактики, богатые газом, показаны оранжевым цветом. На этом изображении вы можете ясно видеть, что ALMA может обнаруживать особенности в галактиках, которые не может видеть Хаббл, и как галактики, которые могут быть полностью невидимы для Хаббла, могут быть видны с помощью ALMA. Эти галактики всегда будут видны нам, но недосягаемы для нас. (Источник: Б. Сакстон (NRAO/AUI/NSF); ALMA (ESO/NAOJ/NRAO); NASA/ESA Hubble)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Со временем скорость расширения все еще падает, но остается положительной и большой из-за темной энергии.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvGUzVw-ek8CaLfQnCW0quEySESX7cXX6b5dT403ihpuWbsBwtXojJ93lsqu090S_hi6pROFtCoEm086xBwb-L3W2NPpjH7r-69x0nl4RIJBrQoEqarEi6goF7Kf1y2pWYvSjNkFj7De0bbVALqQ0YqT9bnGVGW6lcul_JYfa4v3H4FBjiEWDzwkTf=s805" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="805" data-original-width="800" height="640" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvGUzVw-ek8CaLfQnCW0quEySESX7cXX6b5dT403ihpuWbsBwtXojJ93lsqu090S_hi6pROFtCoEm086xBwb-L3W2NPpjH7r-69x0nl4RIJBrQoEqarEi6goF7Kf1y2pWYvSjNkFj7De0bbVALqQ0YqT9bnGVGW6lcul_JYfa4v3H4FBjiEWDzwkTf=w636-h640" width="636" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Все ожидаемые судьбы Вселенной (три верхние иллюстрации) соответствуют Вселенной, в которой материя и энергия вместе борются с начальной скоростью расширения. В наблюдаемой нами Вселенной космическое ускорение вызвано каким-то типом темной энергии, который до сих пор остается необъяснимым. Все эти Вселенные управляются уравнениями Фридмана, которые связывают расширение Вселенной с различными типами материи и энергии, присутствующими в ней. (Источник: E. Siegel/Beyond the Galaxy)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Темная энергия, присущая самому пространству, никогда не уменьшается, даже когда Вселенная расширяется.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjU9THibPGQxGoV5XtnW53P-63EuYTmnC06MSDkjQqYE8fYkSle_VrBNcx4JtTF3Hi3H5LRGNSQCbKGgn2qoNoP4oByg516hEH57eufS4zZtqBGGlUhI2AeV-DH-MUYomMuY-57rV6Wdp-PNLWbfvCq7_qOXzsXiqy16dVg7QisVuGiJwnxRN4mpZGP=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="659" data-original-width="875" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEjU9THibPGQxGoV5XtnW53P-63EuYTmnC06MSDkjQqYE8fYkSle_VrBNcx4JtTF3Hi3H5LRGNSQCbKGgn2qoNoP4oByg516hEH57eufS4zZtqBGGlUhI2AeV-DH-MUYomMuY-57rV6Wdp-PNLWbfvCq7_qOXzsXiqy16dVg7QisVuGiJwnxRN4mpZGP=w640-h482" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Материя (вверху), излучение (в центре) и космологическая постоянная (внизу) эволюционируют со временем в расширяющейся Вселенной. По мере расширения Вселенной плотность материи уменьшается, но излучение также становится холоднее, поскольку его длины волн растягиваются до более длинных и менее энергичных состояний. С другой стороны, плотность темной энергии действительно останется постоянной, если она будет вести себя так, как думают в настоящее время: как форма энергии, присущая самому пространству. (Источник: E. Siegel/Beyond The Galaxy)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Все галактики за пределами определенного расстояния всегда остаются недоступными, даже при скорости света.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiKfcM3gMZ74-jnPj6D1TApPAEeWoueq82RbnZYXBsG5SDwKCAdl2atSnISvuGqMXAzW64h5t_3UN7ZpxaUFOVQ1uowjjyR1a9Jt1kelL5Er4pmJWrK8wj2LLcp665YpaClBbivjxmeBER9KnwFaNC24LDk4q18YSG61zg-7YA6Id31wuIiO7ZLqM9K=s969" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="969" data-original-width="875" height="528" src="https://blogger.googleusercontent.com/img/a/AVvXsEiKfcM3gMZ74-jnPj6D1TApPAEeWoueq82RbnZYXBsG5SDwKCAdl2atSnISvuGqMXAzW64h5t_3UN7ZpxaUFOVQ1uowjjyR1a9Jt1kelL5Er4pmJWrK8wj2LLcp665YpaClBbivjxmeBER9KnwFaNC24LDk4q18YSG61zg-7YA6Id31wuIiO7ZLqM9K=w477-h528" width="477" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Наши самые глубокие исследования галактик могут выявить объекты, находящиеся на расстоянии десятков миллиардов световых лет, но в наблюдаемой Вселенной есть много галактик, которые нам еще предстоит открыть. Есть части Вселенной, еще не видимые сегодня, которые когда-нибудь станут для нас наблюдаемыми, и есть части, видимые для нас, которые нам уже недоступны, даже если бы мы путешествовали со скоростью света. (Источник: Sloan Digital Sky Survey).</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Нынешний «предел достижимости» находится на расстоянии ~18 миллиардов световых лет.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEghzBNOXJjRVkl-emR_DQCSfoIGJnG01ufoFyMN0EGPnHYPIds1fn-JgGcz0LpRMXROecvcplzqdi26XB8hI9momZ4q6Z06v2n1szaVxvAtJ3geFA3Llf6U0ApkhNd1TZg_x3iU0ERYjrbSQu4Zj8akxvi7wMRND5CdIzFkr_GgQXTGVIJASBDbOsAA=s800" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="678" data-original-width="800" height="542" src="https://blogger.googleusercontent.com/img/a/AVvXsEghzBNOXJjRVkl-emR_DQCSfoIGJnG01ufoFyMN0EGPnHYPIds1fn-JgGcz0LpRMXROecvcplzqdi26XB8hI9momZ4q6Z06v2n1szaVxvAtJ3geFA3Llf6U0ApkhNd1TZg_x3iU0ERYjrbSQu4Zj8akxvi7wMRND5CdIzFkr_GgQXTGVIJASBDbOsAA=w640-h542" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Размер нашей видимой Вселенной (желтый), а также объем, которого мы можем достичь (пурпурный). Предел видимой Вселенной составляет 46,1 миллиарда световых лет, так как это предел того, насколько далеко находится объект, излучающий свет, достигший нас сегодня, после расширения в течение 13,8 миллиарда лет. Однако за пределами примерно 18 миллиардов световых лет мы никогда не сможем получить доступ к галактике, даже если будем двигаться к ней со скоростью света. (Источник: Andrew Z. Colvin and Frederic Michel, Wikimedia Commons; Annotations: E. Siegel)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Всех галактик, находящихся ближе, чем это расстояние, можно было бы достичь, если бы мы вылетели сегодня; все галактики за его пределами недостижимы.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhq1maj096pOcAseSvPk0cpiC2zmJK3wezXWeTbgTWc7KcOTzkddqHZN18RmzDJZacc0gld34T2jW4MNxijdpRQ3L9n5J_Qq3N34Z-7K8SJMIBpblxRpkPz1xOVCdIck6L9_h_uIACcPJJ8P7HfaxOaIZs-B1_R8PDHmR86vlZjbJaekqrDF3z8wjF6=s760" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="694" data-original-width="760" height="584" src="https://blogger.googleusercontent.com/img/a/AVvXsEhq1maj096pOcAseSvPk0cpiC2zmJK3wezXWeTbgTWc7KcOTzkddqHZN18RmzDJZacc0gld34T2jW4MNxijdpRQ3L9n5J_Qq3N34Z-7K8SJMIBpblxRpkPz1xOVCdIck6L9_h_uIACcPJJ8P7HfaxOaIZs-B1_R8PDHmR86vlZjbJaekqrDF3z8wjF6=w640-h584" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>По прошествии достаточного времени свет, излучаемый удаленным объектом, попадет в наши глаза даже в расширяющейся Вселенной. Однако, если скорость удаления далекой галактики достигает и остается выше скорости света, мы никогда не сможем достичь ее, даже если сможем получать свет из ее далекого прошлого. (Источник: Larry McNish/RASC Calgary)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Только 6% наблюдаемых в настоящее время галактик остаются доступными; 94% уже лежат за пределами нашей досягаемости.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgojWtDi-ngxCluWQvAGD3bo9Tj8jSor9Y7SyfwRiPSYlTsJ3NgiHhisPkDYHDzH-pC8oIgd1-YCm0ROI2PenCB1f1SXpRIHZNdnHAjqlqaPAee4-JbIN9XDw5srmv5bBU69uUzhd3JALqy2LDcDjQqEa2CkmYlbyTuOLOULUsatRcv66PKcZ63IzQN=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="563" data-original-width="875" height="412" src="https://blogger.googleusercontent.com/img/a/AVvXsEgojWtDi-ngxCluWQvAGD3bo9Tj8jSor9Y7SyfwRiPSYlTsJ3NgiHhisPkDYHDzH-pC8oIgd1-YCm0ROI2PenCB1f1SXpRIHZNdnHAjqlqaPAee4-JbIN9XDw5srmv5bBU69uUzhd3JALqy2LDcDjQqEa2CkmYlbyTuOLOULUsatRcv66PKcZ63IzQN=w640-h412" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Обзор GOODS-North, показанный здесь, содержит некоторые из самых далеких галактик, которые когда-либо наблюдались, многие из которых уже недоступны для нас. С течением времени все больше и больше галактик постигнет та же участь. (Источник: NASA, ESA, and Z. Levay)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Каждый год еще около 160 миллиардов звезд, достаточно, чтобы составить одну большую галактику, становятся недоступными для нас.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><iframe allowfullscreen="" class="BLOG_video_class" height="317" src="https://www.youtube.com/embed/wFkRCFvdtTw" width="522" youtube-src-id="wFkRCFvdtTw"></iframe></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Последние, в группе M81, станут недостижимыми еще через ~100 миллиардов лет.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFlPwyc22_nZ7c5VIemIgsmALgWTd89nLP_MqdFOGo4EKXBekaMWnozXwymntwkfd_glNCS-p_XP_f3Rhpa74BMMG7VlZj5s9kY6wLYWUKGWqZBaxBEhMSnW4d4sFolmDfHqDADHhmCSL9Fnb72cT4Wiu9Zh_QrUBPqsM8jllkSCGPn2PBIka-pLzd=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="595" data-original-width="875" height="436" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFlPwyc22_nZ7c5VIemIgsmALgWTd89nLP_MqdFOGo4EKXBekaMWnozXwymntwkfd_glNCS-p_XP_f3Rhpa74BMMG7VlZj5s9kY6wLYWUKGWqZBaxBEhMSnW4d4sFolmDfHqDADHhmCSL9Fnb72cT4Wiu9Zh_QrUBPqsM8jllkSCGPn2PBIka-pLzd=w640-h436" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Расположенная всего в 3,6 мегапарсеках от нашей Местной группы, группа M81 является ближайшей к нашей Местной группе существенной группой галактик, но остается свободной от гравитационной связи с нами. Через ~100 миллиардов лет даже эти галактики станут для нас недостижимыми, даже если мы полетим со скоростью света. (Фото: Dominique Dierick/flickr)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После этого в пределах досягаемости останется только наша Локальная группа.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg4RrodHO4c1nJv1wnxrwF1z5u1P8274JsE1xUnMeldZCrYYoPFchjdFfwihxNptYYFHcc-1gply3JxD59LVg3MY9ldZZKg7HelFlWmlinDJ_d7aaSW_7vRstcqijJo-EvqwBHTch-YD3zUfS1i4ldvv3O7525iuvxxFINrsyCTk07JYQ8PyE6oihqB=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="652" data-original-width="875" height="476" src="https://blogger.googleusercontent.com/img/a/AVvXsEg4RrodHO4c1nJv1wnxrwF1z5u1P8274JsE1xUnMeldZCrYYoPFchjdFfwihxNptYYFHcc-1gply3JxD59LVg3MY9ldZZKg7HelFlWmlinDJ_d7aaSW_7vRstcqijJo-EvqwBHTch-YD3zUfS1i4ldvv3O7525iuvxxFINrsyCTk07JYQ8PyE6oihqB=w640-h476" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>В Местной группе галактик доминируют Андромеда и Млечный Путь, кроме того, она состоит примерно из 60 других, более мелких галактик. Все они расположены в пределах ~5 миллионов световых лет друг от друга, а ближайшие галактические группы за пределами нашей остаются гравитационно несвязанными с нами на все времена. (Источник: Antonio Ciccolella/Wikimedia Commons/cca-sa-4.0)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://medium.com/starts-with-a-bang/94-of-the-universes-galaxies-are-permanently-beyond-our-reach-293c29e771be">94% of the universe’s galaxies are permanently beyond our reach</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-21446640331105727452022-02-21T12:03:00.000-08:002022-02-21T12:03:17.376-08:00Назначение файла /etc/shadow<div style="text-align: justify;"><span style="font-family: verdana;">Существует несколько различных схем аутентификации, которые можно использовать в системах Linux. Наиболее часто используемая и стандартная схема заключается в выполнении аутентификации по файлам /etc/passwd и /etc/shadow.</span></div><div style="text-align: justify;"><span style="font-family: verdana;"><br /></span></div><span style="font-family: verdana;"><div style="text-align: justify;">/etc/shadow — это текстовый файл, содержащий информацию о паролях пользователей системы. Он принадлежит пользователю root и групповой тени и имеет 640 разрешений.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>/etc/shadow Format </b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Файл /etc/shadow содержит по одной записи на строку, каждая из которых представляет учетную запись пользователя. Вы можете просмотреть содержимое файла с помощью текстового редактора или такой команды, как cat:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">sudo cat /etc/shadow</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как правило, первая строка описывает пользователя root, далее следуют учетные записи системы и обычных пользователей. Новые записи добавляются в конец файла.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Каждая строка файла /etc/shadow содержит девять полей, разделенных запятыми:</div><div style="text-align: justify;"><pre class="chroma" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-txt" data-lang="txt" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">mark:$6$.n.:17736:0:99999:7:::
[--] [----] [---] - [---] ----
| | | | | |||+-----------> 9. Unused
| | | | | ||+------------> 8. Expiration date
| | | | | |+-------------> 7. Inactivity period
| | | | | +--------------> 6. Warning period
| | | | +------------------> 5. Maximum password age
| | | +----------------------> 4. Minimum password age
| | +--------------------------> 3. Last password change
| +---------------------------------> 2. Encrypted Password
+----------------------------------------> 1. Username</code></pre></div><div style="text-align: justify;"><b>Username</b>. Строка, которую вы вводите при входе в систему. Учетная запись пользователя, существующая в системе.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Encrypted Password</b>. Пароль использует формат $type$salt$hashed. $type — это алгоритм криптографического хеширования, который может принимать следующие значения:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><ul style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: white; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: Roboto, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; font-size: 18px; list-style-image: initial; list-style-position: initial; margin: 0px 0px 1rem; min-width: 0px; padding: 0px 0px 0px 1.5rem; text-align: left;"><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; margin-bottom: 0.5rem; margin-top: 0.5rem; min-width: 0px;"><code style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: rgb(243 244 246/var(--tw-bg-opacity)); border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0.25rem; word-break: break-word;">$1$</code> – MD5</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; margin-bottom: 0.5rem; margin-top: 0.5rem; min-width: 0px;"><code style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: rgb(243 244 246/var(--tw-bg-opacity)); border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0.25rem; word-break: break-word;">$2a$</code> – Blowfish</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; margin-bottom: 0.5rem; margin-top: 0.5rem; min-width: 0px;"><code style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: rgb(243 244 246/var(--tw-bg-opacity)); border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0.25rem; word-break: break-word;">$2y$</code> – Eksblowfish</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; margin-bottom: 0.5rem; margin-top: 0.5rem; min-width: 0px;"><code style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: rgb(243 244 246/var(--tw-bg-opacity)); border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0.25rem; word-break: break-word;">$5$</code> – SHA-256</li><li style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; margin-bottom: 0.5rem; margin-top: 0.5rem; min-width: 0px;"><code style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; background-color: rgb(243 244 246/var(--tw-bg-opacity)); border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0.25rem; word-break: break-word;">$6$</code> – SHA-512</li></ul></div><div style="text-align: justify;">Если поле пароля содержит звездочку (*) или восклицательный знак (!), пользователь не сможет войти в систему, используя аутентификацию по паролю. Другие методы входа в систему, такие как аутентификация на основе ключа или переключение пользователя, по-прежнему разрешены.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В старых системах Linux зашифрованный пароль пользователя хранился в файле /etc/passwd.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Last password change</b>. Это дата последней смены пароля. Количество дней отсчитывается с 1 января 1970 г.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Minimum password age</b>. Количество дней, которое должно пройти, прежде чем пароль пользователя можно будет изменить. Обычно он равен нулю, что означает отсутствие минимального срока действия пароля.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Maximum password age</b>. Количество дней после смены пароля пользователя. По умолчанию это число имеет значение 99999.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Warning period</b>. Количество дней до истечения срока действия пароля, в течение которых пользователя предупреждают о необходимости смены пароля.</div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Inactivity period</b>. Количество дней после истечения срока действия пароля пользователя до отключения учетной записи пользователя. Обычно это поле пустое.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Expiration date</b>. Дата, когда учетная запись была отключена. Она представлена как дата эпохи.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Unused</b>. Это поле игнорируется. Оно зарезервировано для использования в будущем.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Файл /etc/shadow не следует редактировать вручную, если вы не знаете, что делаете. Всегда используйте команду, предназначенную для этой цели. Например, чтобы изменить пароль пользователя, используйте команду passwd, а чтобы изменить информацию о сроке действия пароля, используйте команду chage.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Давайте посмотрим на следующий пример:</div><div style="text-align: justify;"><pre class="chroma" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-txt" data-lang="txt" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">linuxize:$6$zHvrJMa5Y690smbQ$z5zdL...:18009:0:120:7:14::</code></pre></div><div style="text-align: justify;">Запись выше содержит информацию о пароле пользователя «linuxize»:</div><div style="text-align: justify;"><ul><li>Пароль зашифрован с помощью SHA-512 (пароль усечен для лучшей читаемости).</li><li>Последний раз пароль менялся 23 апреля 2019 года - 18009.</li><li>Минимального срока действия пароля нет.</li><li>Пароль необходимо менять не реже одного раза в 120 дней.</li><li>Пользователь получит предупреждающее сообщение за семь дней до истечения срока действия пароля.</li><li>Если пользователь не попытается войти в систему в течение 14 дней после истечения срока действия пароля, учетная запись будет отключена.</li><li>Срок действия учетной записи отсутствует.</li></ul></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Файл /etc/shadow хранит записи о зашифрованных паролях пользователей, а также другую информацию, связанную с паролями.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://linuxize.com/post/etc-shadow-file/">Understanding the /etc/shadow File</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-78526713947175726222022-02-18T10:42:00.000-08:002022-02-18T10:42:34.523-08:0020 способов бесплатного скачивания видео из интернета<div style="text-align: justify;"><span style="font-family: verdana;">Интернет - это новое телевидение: все, от развлечений до образования и общения и работы, происходит в сети. Мы продолжаем смотреть видео для развлечения или получения информации в интернете.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Бывают случаи, когда вам нравится видео в интернете или в социальной сети, и вы хотите загрузить и сохранить его на своем устройстве. В общем, загрузка видео теперь стала намного проще, чем раньше.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вот некоторые из сайтов, с помощью которых мы рекомендуем вам скачивать видео из интернета.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>1. Video Download Helper</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.downloadhelper.net/">Video Download Helper</a> отлично подходит для пользователей, которые регулярно скачивают видео. Когда помощник загрузки обнаруживает любое видео, панель инструментов активирует/выделяет значок, а строка меню позволяет загрузить выбранное видео одним щелчком мыши.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">У него есть расширение для браузера Firefox и Chrome, что для некоторых может рассматриваться как недостаток, но эта функция определенно повышает удобство загрузки видео из Интернета.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhuvEFoL0ctCLxCdqaoCNhrJ9O2t2_QLEFcdZ_aQAQtLPI8J1gP8lraVh8jH3zl8lx3W-Z4n3TMSlDX4QbkloW82LztTZ5vq-KBsm_22H-5zmktvnuSHRnKI6OuQ_fjZpD1cc0DWr-z9ljSeG8fq6aGCXSfe78m-UEuAyrL6CymTOcmWZW7b2M5voWj=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="427" data-original-width="900" height="304" src="https://blogger.googleusercontent.com/img/a/AVvXsEhuvEFoL0ctCLxCdqaoCNhrJ9O2t2_QLEFcdZ_aQAQtLPI8J1gP8lraVh8jH3zl8lx3W-Z4n3TMSlDX4QbkloW82LztTZ5vq-KBsm_22H-5zmktvnuSHRnKI6OuQ_fjZpD1cc0DWr-z9ljSeG8fq6aGCXSfe78m-UEuAyrL6CymTOcmWZW7b2M5voWj=w640-h304" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>2. 4k Video Downloader</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.4kdownload.com/products/product-videodownloader">4k Video Downloader</a> - это быстрый и простой в использовании инструмент. Пользователю просто нужно скопировать и вставить ссылку на необходимое видео на веб-страницу и нажать кнопку загрузки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он также позволяет пользователю подписываться на каналы YouTube. Здесь самые свежие видео могут быть загружены автоматически с опцией автоматической загрузки. 4K Video Downloader позволяет загружать видео в разных форматах и разрешениях.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhn-F2GQrhaIw8LcEDt2T8nO2N0M46DDbJHHtVtzA44lrqmdM9kYv3iDeqvlrH-bI741Tu2e5kTrdVsx_o7mEMDNgBYq75zwHqsoep947CWYq-lnY3WLAqJaL2tKZXPui3YaX_oPW4Iww0fcQ_qjyr5WEYMccAJT4Mk053664KcNOBN2hLPCBBDFxQd=s769" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="505" data-original-width="769" height="420" src="https://blogger.googleusercontent.com/img/a/AVvXsEhn-F2GQrhaIw8LcEDt2T8nO2N0M46DDbJHHtVtzA44lrqmdM9kYv3iDeqvlrH-bI741Tu2e5kTrdVsx_o7mEMDNgBYq75zwHqsoep947CWYq-lnY3WLAqJaL2tKZXPui3YaX_oPW4Iww0fcQ_qjyr5WEYMccAJT4Mk053664KcNOBN2hLPCBBDFxQd=w640-h420" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>3. Freemake Video Downloader</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.freemake.com/free_video_downloader/">Freemake Video Downloader</a> - еще один простой менеджер загрузок, в котором пользователю нужно скопировать ссылку и вставить ее в утилиту, чтобы начать загрузку видео. Единственное ограничение, с которым сталкиваются пользователи, это то, что он доступен только в Windows.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он позволяет загружать файлы с различных сайтов, таких как YouTube, Vimeo, Daily Motion и т. д. Вы можете загружать и сохранять любые видео и музыкальные файлы в форматах HD, MP3, MP4, AVI и т. д. Freemake Video Downloader поддерживает видеоклипы 4K.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjtRskIAN9NhS6mNS78BI-GLRxjv_xFAEZU1ztgPBhpawpIKbBbedjha9jD8dNjqHwrgBh_ys7x65Dv3_FKW2ohHVFx0x0W3Wn7w4CcZluSRRHLrOdmnjrlyXjHGawsPNzlq7P_m97lHycWsE_CMFCbO0OiYF33G0Fh4QiA-r_jJfRZyEi1SdjdSI9B=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="437" data-original-width="900" height="310" src="https://blogger.googleusercontent.com/img/a/AVvXsEjtRskIAN9NhS6mNS78BI-GLRxjv_xFAEZU1ztgPBhpawpIKbBbedjha9jD8dNjqHwrgBh_ys7x65Dv3_FKW2ohHVFx0x0W3Wn7w4CcZluSRRHLrOdmnjrlyXjHGawsPNzlq7P_m97lHycWsE_CMFCbO0OiYF33G0Fh4QiA-r_jJfRZyEi1SdjdSI9B=w640-h310" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>4. Youtube-dl</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://ytdl-org.github.io/youtube-dl/index.html">Youtube-dl</a> требует от пользователя определенных знаний использования командной строки. Это один из самых гибких инструментов, доступных в настоящее время для загрузки видео из интернета.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он имеет широкий спектр функций, включая загрузку в соответствии с ограничением скорости, автоматическое именование файлов, обработку списков воспроизведения и загрузку субтитров вместе с видео. Эти дополнительные функции являются привилегией для пользователя, который умеет работать в командной строке.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEge_PitEfyv6Lp0I1EAXyYcT2FPPqQdt7r7MjEaVz1NqUwH8o2o3K1AWsFDB6tcz6NrZxbz5qm1n2PeWTpe2eRBXkOXGrCz4EwS7shKfT9qUMPlLqh2cTwa_wWvK1nvC1hbOze6BrwMnT5dQIkQm18svF2fC1NSZwRdz0BS10HUy3kfql1HY5Doz95d=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="481" data-original-width="900" height="342" src="https://blogger.googleusercontent.com/img/a/AVvXsEge_PitEfyv6Lp0I1EAXyYcT2FPPqQdt7r7MjEaVz1NqUwH8o2o3K1AWsFDB6tcz6NrZxbz5qm1n2PeWTpe2eRBXkOXGrCz4EwS7shKfT9qUMPlLqh2cTwa_wWvK1nvC1hbOze6BrwMnT5dQIkQm18svF2fC1NSZwRdz0BS10HUy3kfql1HY5Doz95d=w640-h342" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>5. SaveFrom.net</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://en.savefrom.net/">SaveFrom.net</a> - это, в основном, загрузчик YouTube. Его ярлыки упрощают использование и ускоряют загрузку. Он может скачивать даже по ссылке на страницу, где воспроизводится видео.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Добавление «ss» перед обычной ссылкой YouTube позволяет пользователю автоматически переходить по ссылке для скачивания видео, устраняя необходимость даже копировать ее.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3GCRkOc6i8x1wSKz9oj8WdQHW4IdWlszCZqbyCdhwS_vB6IWQ_Dlwg-0ENhJKnGAprSILRQAToCRN98RHumRjVUHgBRSxcyWaKsqUmYaf0DHjlkA3431qvVRED_uPtJVkEk1xKBjNgEGPLzNmjT8hOGLdp3uV2-Kngn5QDsX6vnEwLLJE5hKA66zW=s901" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="382" data-original-width="901" height="272" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3GCRkOc6i8x1wSKz9oj8WdQHW4IdWlszCZqbyCdhwS_vB6IWQ_Dlwg-0ENhJKnGAprSILRQAToCRN98RHumRjVUHgBRSxcyWaKsqUmYaf0DHjlkA3431qvVRED_uPtJVkEk1xKBjNgEGPLzNmjT8hOGLdp3uV2-Kngn5QDsX6vnEwLLJE5hKA66zW=w640-h272" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>6. FastestTube</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как следует из названия, <a href="https://kwizzu.com/">FastestTube</a> - один из самых быстрых загрузчиков видео. Это расширение, разработанное для видео на YouTube.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После установки в браузере расширение автоматически появляется в виде раскрывающейся кнопки загрузки и позволяет пользователю загружать видео во время его просмотра.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjBr67AmzsHbZmKOYr87HEC53PnIWSNYoDK9zhEdYb88Kaao7RFHs5971Crv5Q4jY5s74m1mMGW-OAeuQ-d_xQwqARUJENlVV22lck_gIOVo_Jbq0AqGt74KGzrWLP4ikMh0tC-_8MyH99a5edOhI4hV0IqDsTlnYWR6ZhJY5iWMHNV-dpa2NJaAJcC=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="377" data-original-width="900" height="268" src="https://blogger.googleusercontent.com/img/a/AVvXsEjBr67AmzsHbZmKOYr87HEC53PnIWSNYoDK9zhEdYb88Kaao7RFHs5971Crv5Q4jY5s74m1mMGW-OAeuQ-d_xQwqARUJENlVV22lck_gIOVo_Jbq0AqGt74KGzrWLP4ikMh0tC-_8MyH99a5edOhI4hV0IqDsTlnYWR6ZhJY5iWMHNV-dpa2NJaAJcC=w640-h268" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>7. Twitter Video Downloader</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.downloadtwittervideo.com/">Twitter Video Downloader</a> - это онлайн-инструмент, используемый исключительно для загрузки видео, встроенных в твиты, представленные в Twitter. На выбор пользователя доступны различные форматы: MP3, MP4 и MP4 HD.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Существуют и другие онлайн-инструменты, которые специально созданы для Twitter и разработаны в соответствии со стандартами Twitter.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj1MoTseUzW0xp1qp8ft8pD6G9tIaCftWCcKN7Btm5R3qJ1RJEBgjLd1A8pijcpOa-WiB-ZfcrRZ_f82tn88bThA16XE_udMaLSMiyA0xE2UTkrs_pH2_xxnOXJGrYfqGxYFV_DmgOtJ7kzAJBSk0dVQUzQ4Qkf2K_-bAFaPDM-shRz60NCiUv0zQ7L=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="343" data-original-width="900" height="244" src="https://blogger.googleusercontent.com/img/a/AVvXsEj1MoTseUzW0xp1qp8ft8pD6G9tIaCftWCcKN7Btm5R3qJ1RJEBgjLd1A8pijcpOa-WiB-ZfcrRZ_f82tn88bThA16XE_udMaLSMiyA0xE2UTkrs_pH2_xxnOXJGrYfqGxYFV_DmgOtJ7kzAJBSk0dVQUzQ4Qkf2K_-bAFaPDM-shRz60NCiUv0zQ7L=w640-h244" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>8. Instagram Downloader</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как и последователи Twitter, энтузиасты Instagram теперь имеют эксклюзивные независимые инструменты для управления загрузками. <a href="https://www.downloadvideosfrom.com/Instagram.php">Instagram Downloader</a> позволяет пользователям загружать видео из сообщений и stories, опубликованных в Instagram, и сохранять их на своих устройствах.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjC_lqN_jXujxvbqhJ44sUhRh5w_CLrbHvblsj9ApTVqU4Hvh6faXV39inPz3aQgvMZK9eHHO16-kmuKxDbcaAb_9UYWMLx_9szAeDr6vYP1U-oPVWulYOfEAzJRjuarzkdhWYEjfsAwuE02km6HZBEh1K4P20yvHY0om7njH18ZQ_SfrVvj2b6Dnqu=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="328" data-original-width="900" height="234" src="https://blogger.googleusercontent.com/img/a/AVvXsEjC_lqN_jXujxvbqhJ44sUhRh5w_CLrbHvblsj9ApTVqU4Hvh6faXV39inPz3aQgvMZK9eHHO16-kmuKxDbcaAb_9UYWMLx_9szAeDr6vYP1U-oPVWulYOfEAzJRjuarzkdhWYEjfsAwuE02km6HZBEh1K4P20yvHY0om7njH18ZQ_SfrVvj2b6Dnqu=w640-h234" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>9. FBdown.net</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.fbdown.net/">FBdown.net</a> - это расширение Chrome, разработанное специально для загрузки видео с Facebook. После загрузки расширение избавляет от необходимости покидать страницу социальной сети и переходить на другую веб-страницу, чтобы скопировать или загрузить желаемое видео.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это упрощает пользователю загрузку нескольких видео по мере их просмотра.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhSSBPIPUaI0TpbwFva-nbi12cQWTNNKfFiBsP7nOpuVNKAonyKQdHN4NjxJLTfKsHrKArXnBSYgQSEGECYaEepEeLj8KsOAOPiAiDJeVJn7Nrq6_M9K6GlKfZeJ5XWYGjLfe50w2-t4k4WbHOxzz4YFrUS9WWe__xgocyY7SYNznxvC5-5soA2DuT7=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="328" data-original-width="900" height="234" src="https://blogger.googleusercontent.com/img/a/AVvXsEhSSBPIPUaI0TpbwFva-nbi12cQWTNNKfFiBsP7nOpuVNKAonyKQdHN4NjxJLTfKsHrKArXnBSYgQSEGECYaEepEeLj8KsOAOPiAiDJeVJn7Nrq6_M9K6GlKfZeJ5XWYGjLfe50w2-t4k4WbHOxzz4YFrUS9WWe__xgocyY7SYNznxvC5-5soA2DuT7=w640-h234" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>10. FBDown.net-Private Videos</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">У <a href="https://www.fbdown.net/how-to-download-private-facebook-videos-online.php">FBDown</a> есть еще одна функция, которая позволяет пользователям загружать видео из частных учетных записей, которые в противном случае могли бы быть невидимы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Здесь наиболее важная команда - Ctrl + U, она позволяет пользователю видеть исходный код видео, с помощью которого эти видео могут быть загружены.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjbQoJtVoILrwXzo6mQyD1oV294ucERVwBLr6IG8OcimiDQPHaKwqIxTkGVwBQRAEb8Uu_clDXqLjMf3ZT6csCMwUhJApLqArphuRHAMCgsdpsjlHK4YLW_OTIW641dQkiv3o_Ioh6LsHeXADKT4pBrPIdhV3rpNOBW5gfDrYBN632EwVckyKpBvEI4=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="350" data-original-width="900" height="248" src="https://blogger.googleusercontent.com/img/a/AVvXsEjbQoJtVoILrwXzo6mQyD1oV294ucERVwBLr6IG8OcimiDQPHaKwqIxTkGVwBQRAEb8Uu_clDXqLjMf3ZT6csCMwUhJApLqArphuRHAMCgsdpsjlHK4YLW_OTIW641dQkiv3o_Ioh6LsHeXADKT4pBrPIdhV3rpNOBW5gfDrYBN632EwVckyKpBvEI4=w640-h248" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>11. KeepVid</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://keepvid.com/">KeepVid</a> поддерживает как новостные, так и образовательные сайты, такие как Lynda, NBC, ABC и т. д.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для загрузки видео требуется скопировать ссылку на видео, а затем вставить ее на веб-страницу KeepVid. Это позволяет пользователям загружать и сохранять видео в различных форматах и размерах.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhg_ak_0UPS6aT625HUM7NDpkpqY5ykaWPj5j0qsFP06ZnFjYzHr6jcx2HmUTjanzhLSx1Ne1JBjSOMuf-liE6MCKxbLqyiUYSO4GNAwvmgpG4p6gEYZF1cr9wfYVzb_0N99KtQlEQE_raT8dtblZlL3VQt0PtzKpkRc2peescc657huE3zk0do3-l6=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="440" data-original-width="900" height="312" src="https://blogger.googleusercontent.com/img/a/AVvXsEhg_ak_0UPS6aT625HUM7NDpkpqY5ykaWPj5j0qsFP06ZnFjYzHr6jcx2HmUTjanzhLSx1Ne1JBjSOMuf-liE6MCKxbLqyiUYSO4GNAwvmgpG4p6gEYZF1cr9wfYVzb_0N99KtQlEQE_raT8dtblZlL3VQt0PtzKpkRc2peescc657huE3zk0do3-l6=w640-h312" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>12. VideoGrabby</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.videograbby.com/">VideoGrabby</a> поддерживает большую часть video с YouTube, Sound Cloud, Vimeo и других сайтов. Как и большинство других сайтов загрузки, он следует тому же формату копирования-вставки и загрузки.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEitfLJNQSxZRhss97Z2lEVuko68dxwW8NBLSWrTlYDwYf4LnYIOCFfIjd5jcVVVondrkREh5PzkbzBhdgB5-mt_-e_Lm2oetUiflr7lClUOqmDbct_BnK_F7D_sPulE02uSzB44XroW-L8g60E6yjrA9wkbIpdk69sCygvLbw02CH9SLGieWfOaUmhc=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="378" data-original-width="900" height="268" src="https://blogger.googleusercontent.com/img/a/AVvXsEitfLJNQSxZRhss97Z2lEVuko68dxwW8NBLSWrTlYDwYf4LnYIOCFfIjd5jcVVVondrkREh5PzkbzBhdgB5-mt_-e_Lm2oetUiflr7lClUOqmDbct_BnK_F7D_sPulE02uSzB44XroW-L8g60E6yjrA9wkbIpdk69sCygvLbw02CH9SLGieWfOaUmhc=w640-h268" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>13. YooDownload</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://yoodownload.com/">YooDownload</a> - это универсальный загрузчик видео, так как он обслуживает все платформы социальных сетей, а также наиболее распространенные сайты, используемые для видео.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это главный игрок на рынке, и он имеет все необходимые функции для беспрепятственной загрузки любого видео.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjGNprLQtf3rIeJvGOrW0RB-vRf3ZjMFAcMspnkH0fYEXHxprnBNqW-ywbUl500itV7Fsjj1a48zhLwUBzoTjygRXuewgpYCeHF0FExqwqLc4MQFbq638Q_r5ucId9tU340hb9yrnX9Ex51i9vhtZlaT_LF__YGmVxMu0UKFYwWojCosTqLTLHfKSNA=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="335" data-original-width="900" height="238" src="https://blogger.googleusercontent.com/img/a/AVvXsEjGNprLQtf3rIeJvGOrW0RB-vRf3ZjMFAcMspnkH0fYEXHxprnBNqW-ywbUl500itV7Fsjj1a48zhLwUBzoTjygRXuewgpYCeHF0FExqwqLc4MQFbq638Q_r5ucId9tU340hb9yrnX9Ex51i9vhtZlaT_LF__YGmVxMu0UKFYwWojCosTqLTLHfKSNA=w640-h238" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>14. ClipConverter</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.clipconverter.cc/">ClipConverter</a> - это надстройка браузера для Chrome, Safari и Firefox, которая может конвертировать и записывать онлайн-клипы в любой аудио- или видеоформат. Его охват широк и распространяется на самые разные сайты.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi-VdcILVPGIYMyK5MYOrWhhmJgQw3X47-SXkvWAhGzodKVZaDG9HvgBFWAh0jIpVzpLljuz1KYaYMNbj6n_JaVu-RY4B2JTdOsZQZsPE1Mz9gSPgA1abZqetl10dhYB-OLi8nEcznXpMWu-c7Va8RcASPHiRyz6z-UgZCp68gTUJHfGMw5RF0VGuih=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="344" data-original-width="900" height="244" src="https://blogger.googleusercontent.com/img/a/AVvXsEi-VdcILVPGIYMyK5MYOrWhhmJgQw3X47-SXkvWAhGzodKVZaDG9HvgBFWAh0jIpVzpLljuz1KYaYMNbj6n_JaVu-RY4B2JTdOsZQZsPE1Mz9gSPgA1abZqetl10dhYB-OLi8nEcznXpMWu-c7Va8RcASPHiRyz6z-UgZCp68gTUJHfGMw5RF0VGuih=w640-h244" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>15. Online Video Converter</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.onlinevideoconverter.com/">Online Video Converter</a> не только поддерживает множество сайтов и форматов, но и совместим с мобильными устройствами. Он не похож на многие другие веб-приложения. Он помогает пользователям загружать видео на ходу и считается независимым от платформы.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgCXYGkfPnhuqn1y6-NKUey5yWuTyIqBD3qZVqchlHk34tuAeKu1w5NlJAYYcmzExxUcpHHYIOajvsfThraGoh193fY1yMAu_CrLKaUu8dMUPCyDzf9tf6I26zOMi56xCdnnpuIORMjIqlIoY5mnW_yTzy-o2nRvrDGNTaxibSxfMzttloKz7zjzywN=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="440" data-original-width="900" height="312" src="https://blogger.googleusercontent.com/img/a/AVvXsEgCXYGkfPnhuqn1y6-NKUey5yWuTyIqBD3qZVqchlHk34tuAeKu1w5NlJAYYcmzExxUcpHHYIOajvsfThraGoh193fY1yMAu_CrLKaUu8dMUPCyDzf9tf6I26zOMi56xCdnnpuIORMjIqlIoY5mnW_yTzy-o2nRvrDGNTaxibSxfMzttloKz7zjzywN=w640-h312" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>16. VideoGrabber</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.videograbber.net/">Video Grabber</a> - это не веб-приложение, а десктопная программа. Он имеет функцию записи экрана.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Эта функция позволяет пользователю записывать все, что происходит на экране, и сохранять результат как снимок экрана или видеофайл. Его также можно использовать для записи вебинаров, обучающих программ и видеочатов.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEihVPh4rOMMUHckas53wFW_1AI0yhIrM-yDlJ140rDPFgjCyWqG1_vkkEjMSIX21dp_QOwYztUe4OEZlsKFYm5C9HruS1hhMK45-tMDOoq2RW3pQxN45HULvUtkDspHtFKne8GpNt6G4F4GA2FzjxjkvkefsAR1hOa5VOCalgYUAtR-kdr2pucyWLhk=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="406" data-original-width="900" height="288" src="https://blogger.googleusercontent.com/img/a/AVvXsEihVPh4rOMMUHckas53wFW_1AI0yhIrM-yDlJ140rDPFgjCyWqG1_vkkEjMSIX21dp_QOwYztUe4OEZlsKFYm5C9HruS1hhMK45-tMDOoq2RW3pQxN45HULvUtkDspHtFKne8GpNt6G4F4GA2FzjxjkvkefsAR1hOa5VOCalgYUAtR-kdr2pucyWLhk=w640-h288" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>17. FLVTO</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.flvto.biz/">FLVTO</a> имеет специальную функцию, позволяющую пользователям ставить свои видео в очередь, они автоматически загружаются позже, как только они становятся доступными.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это позволяет пользователям накапливать набор видео для загрузки, тратя время на что-то другое, вместо того, чтобы постоянно ждать.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhmXTEGoKQZzso5ySgPLR4MEKLnPu95dhwOWz_eGPzK1xXB4XW4Bpg0wjlAiY7CxKhlm_t2xOF-SHAqPqqs1RxmzgtPjiNW2jpQO4suq_wQZG7B0Kd8uQ6Paz_AwUJ9PNjjKSjlFRAWMMyO1yaETKEETvZM8NO9VCIqnYu4GeB5qbgMjaH1mi9jeBey=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="302" data-original-width="900" height="214" src="https://blogger.googleusercontent.com/img/a/AVvXsEhmXTEGoKQZzso5ySgPLR4MEKLnPu95dhwOWz_eGPzK1xXB4XW4Bpg0wjlAiY7CxKhlm_t2xOF-SHAqPqqs1RxmzgtPjiNW2jpQO4suq_wQZG7B0Kd8uQ6Paz_AwUJ9PNjjKSjlFRAWMMyO1yaETKEETvZM8NO9VCIqnYu4GeB5qbgMjaH1mi9jeBey=w640-h214" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>18. JDownloader</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="http://jdownloader.org/">Jdownloader</a> полностью избавляет от необходимости иметь ссылку на конкретное видео. Как только пользователь предоставит ссылку на страницу, JDownloader сканирует всю страницу, чтобы отобразить все видео, существующие на этой странице.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Затем пользователи могут выбрать, хотят ли они загрузить все видео или только определенные.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEge4pXgtA5QvL3IEUeB8l26CEkB2QJzztD7WlVmpHxHOBBFpDzJY7jjpEr0uSgtWhelsY3owl5DBcSLVnz5dBZQGsgettPg0x0UUcH9C-sf9n88CJUGdOaF1xxHINGW0TpfbtQ_zwNua-Epu5ATQZ3zbCxHvG_n-nLbWgko6Xqbs4_UjBCZFfrwYpKy=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="464" data-original-width="900" height="330" src="https://blogger.googleusercontent.com/img/a/AVvXsEge4pXgtA5QvL3IEUeB8l26CEkB2QJzztD7WlVmpHxHOBBFpDzJY7jjpEr0uSgtWhelsY3owl5DBcSLVnz5dBZQGsgettPg0x0UUcH9C-sf9n88CJUGdOaF1xxHINGW0TpfbtQ_zwNua-Epu5ATQZ3zbCxHvG_n-nLbWgko6Xqbs4_UjBCZFfrwYpKy=w640-h330" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>19. Open Broadcaster Software (OBS)</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://obsproject.com/">OBS</a> - это бесплатная программа с открытым исходным кодом, которая позволяет пользователю быстро и легко записывать видео и транслировать его в реальном времени.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ее преимущество заключается в том, что пользователь может записывать видео во время игры на ПК или даже делать снимки с рабочего стола. Затем записи могут быть названы и сохранены на самой платформе.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjam2M1exRZZSPxu4FjbeT6MP4PlG6eDxutu_1P_sVvuoSMr32ypPDFPmsUoIGYLQ7Msd00weYEo7cWQTckSlavh36-f8iqULeF3yynuImZVnwxQ1WDFp8_xTL3WGol2DdwmvlB8dVFExt79LRnd1nyX14ghmxkQcNoRZiAGiRmsABDUZeERwEfL4Fs=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="398" data-original-width="900" height="284" src="https://blogger.googleusercontent.com/img/a/AVvXsEjam2M1exRZZSPxu4FjbeT6MP4PlG6eDxutu_1P_sVvuoSMr32ypPDFPmsUoIGYLQ7Msd00weYEo7cWQTckSlavh36-f8iqULeF3yynuImZVnwxQ1WDFp8_xTL3WGol2DdwmvlB8dVFExt79LRnd1nyX14ghmxkQcNoRZiAGiRmsABDUZeERwEfL4Fs=w640-h284" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>20. Cam Studio</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://camstudio.org/">Cam Studio</a> - это более простой способ записи видео, чем OBS. Эта программа предназначена для записи всей визуальной и звуковой активности на экране вашего компьютера.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это одно приложение, в котором пользователь может нажать кнопку «record» и видео будет записываться, пока он не выключит запись. Cam Studio сохраняет все свои видео в формате AVI.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjUbE8SRQbj2s-WeNwuVIzpyAM2xTejJZ_BbKeoBIuSJg8_hTkq7VDTpZPqdauC070a4ayNCJfnM9r3JlqCNFvAnriNUuyLpd6MAxZ95tqjZg7VwmPLnUVKifYR3wgrR1Gc42DLGP34GnKBa1hos9VFUyE0fekg4bidMb2Akyg6v6TtYedVmJqW0iZm=s900" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="444" data-original-width="900" height="316" src="https://blogger.googleusercontent.com/img/a/AVvXsEjUbE8SRQbj2s-WeNwuVIzpyAM2xTejJZ_BbKeoBIuSJg8_hTkq7VDTpZPqdauC070a4ayNCJfnM9r3JlqCNFvAnriNUuyLpd6MAxZ95tqjZg7VwmPLnUVKifYR3wgrR1Gc42DLGP34GnKBa1hos9VFUyE0fekg4bidMb2Akyg6v6TtYedVmJqW0iZm=w640-h316" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.fossmint.com/ways-to-download-videos-from-the-internet/">20 Free Ways to Download Videos from The Internet</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-87313029036474671532022-02-17T12:37:00.000-08:002022-02-17T12:37:39.110-08:00Насколько велика самая большая гора в Солнечной системе<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNUsgbBBLOD3hlrKFOYGwIUJyhZXDa0wPp93JglirbbQPb70M3SfATMSACMXYzVwjWrBj5h8pPgSdfdd5b4QZz241cMBcRoFX0ASaPy6WJt0y_1Ygp5UHGzIQO38PM__-S4-7euL3UtI85UkEM5DIJ-V4ZntPr2X4egxFzKuQmVFEDFU5_G1q02Od8=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="815" data-original-width="875" height="446" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNUsgbBBLOD3hlrKFOYGwIUJyhZXDa0wPp93JglirbbQPb70M3SfATMSACMXYzVwjWrBj5h8pPgSdfdd5b4QZz241cMBcRoFX0ASaPy6WJt0y_1Ygp5UHGzIQO38PM__-S4-7euL3UtI85UkEM5DIJ-V4ZntPr2X4egxFzKuQmVFEDFU5_G1q02Od8=w479-h446" width="479" /></a></div><div style="text-align: justify;"><br /></div><span style="font-family: verdana;"><div style="text-align: justify;"><i>Вид на Олимп с орбиты (Общественное достояние/НАСА)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Олимп — самая большая гора в Солнечной системе. Марсианская гора является не только самой высокой вершиной, когда-либо обнаруженной людьми, но и самой большой по объему и площади. Олимп действительно очень большой.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Но насколько он велик? Визуализировать абсолютно титанические размеры этого географического объекта сложно, но вот несколько способов сравнить величественные высоты горы Олимп с земными объектами.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Самая высокая гора в Солнечной системе</b></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjWmFp8dxCGSrLC6NeT9r36SjAOx0xcP92abi1NBxzxruhDAmNKDZFtHsHfbo-9rQhM0VdjgBx1JPseK73N86itQiQM90rK-R6naxZklaums1e13gOv7wSwTNHFadYszMbl9AHmpWHwm1qmDj_A2HRU1BVKWE2FsDjv3N3mJC6f6A_msHh7wz7Ffy6k=s825" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="212" data-original-width="825" height="164" src="https://blogger.googleusercontent.com/img/a/AVvXsEjWmFp8dxCGSrLC6NeT9r36SjAOx0xcP92abi1NBxzxruhDAmNKDZFtHsHfbo-9rQhM0VdjgBx1JPseK73N86itQiQM90rK-R6naxZklaums1e13gOv7wSwTNHFadYszMbl9AHmpWHwm1qmDj_A2HRU1BVKWE2FsDjv3N3mJC6f6A_msHh7wz7Ffy6k=w640-h164" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Высота горы Олимп по сравнению с другими известными вершинами (Resident Mario/CC BY 3.0)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Пик горы Олимп возвышается примерно на 26 000 м в высоту. Это в два с половиной раза больше высоты Эвереста. Это означает, что пик простирается более чем на 13 миль в атмосферу.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы представить это в перспективе, Олимп имеет ту же высоту пропорционально Эвересту, что и Эверест горе Little Dome в Колорадо. Little Dome имеет высоту 3657 м и представляет собой обычную горную формацию, встречающуюся во всем мире.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По сравнению с Олимпом Эверест выглядит маленьким и ничем не примечательным.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если его положить на бок, машине, движущейся со скоростью, характерной для шоссе, потребуется двенадцать минут, чтобы добраться от основания до вершины.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Самая массивная гора в Солнечной системе</b></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjLsq3hwv6SZ-zzDJ48PKUrJUT_MqbAhgDlYT1uPG68B5pVNvwqZjpza90A2JrMilVxW6cxD64vJzrhH5qGuxgWzJ8-5oj0eP9tfT31DIr03n_YSepKLnIN4rMlPOoKTS6UBQZ6JotUwLYQac-DXf_3gnRzLxfwuhPdYS2tFZwGSpLhKZziwINxXSh7=s454" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="374" data-original-width="454" height="389" src="https://blogger.googleusercontent.com/img/a/AVvXsEjLsq3hwv6SZ-zzDJ48PKUrJUT_MqbAhgDlYT1uPG68B5pVNvwqZjpza90A2JrMilVxW6cxD64vJzrhH5qGuxgWzJ8-5oj0eP9tfT31DIr03n_YSepKLnIN4rMlPOoKTS6UBQZ6JotUwLYQac-DXf_3gnRzLxfwuhPdYS2tFZwGSpLhKZziwINxXSh7=w472-h389" width="472" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Комплекс кальдеры горы Олимп (НАСА/общественное достояние)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Олимп не только высокий, но и громоздкий. Масштаб выдающихся особенностей этой горы невероятен. Олимп — типичный щитовой вулкан, мало чем отличающийся от Мауна-Кеа и Килауэа на Гавайях. Олимп просто невероятен.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Кальдера на пике имеет диаметр пятьдесят миль. Глубина главной кальдеры простирается почти на две мили вглубь вулкана.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Внешняя граница вулкана представляет собой отвесные скалы высотой более пяти миль. Эти утесы были сформированы в результате катастрофических оползней в прошлом, которые оторвали части откоса, оставив после себя эти впечатляющие утесы.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjWewtSSYHV9aUTEGAuAv448XRpw9Bncyr1y7fvj7E1sSJxK2j6rGUA688YsyroYgIzYikmwA3lcUV6vwKVw_I1EDvU3BjZ1D_hq_wnDG5xT_ODJeuVvisBGg0oowP3btUcDmZUIhuWab3BZhSU6J9VRFnuLhTovcStLEKGk4yzjrZsXhIwErmMJ6yZ=s1280" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1280" data-original-width="1280" height="457" src="https://blogger.googleusercontent.com/img/a/AVvXsEjWewtSSYHV9aUTEGAuAv448XRpw9Bncyr1y7fvj7E1sSJxK2j6rGUA688YsyroYgIzYikmwA3lcUV6vwKVw_I1EDvU3BjZ1D_hq_wnDG5xT_ODJeuVvisBGg0oowP3btUcDmZUIhuWab3BZhSU6J9VRFnuLhTovcStLEKGk4yzjrZsXhIwErmMJ6yZ=w457-h457" width="457" /></a></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgelZvlXGW7wtn1s37FIYlH4C_i_OWXDcqGMarU6lsZt-_i0iZeu2etR3vC1S_rHcMrujupiqCjF8Gj7YwVM0oic0LmZo_nfoCRHI8sezIg6lc_cAoewPMCFQk0Ua4Q22sOLut5K0xoEvkGVoQvUIyYzylzg0cR_3brwkm27a-xuCTeVsCElH721g3l=s1280" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1280" data-original-width="1280" height="521" src="https://blogger.googleusercontent.com/img/a/AVvXsEgelZvlXGW7wtn1s37FIYlH4C_i_OWXDcqGMarU6lsZt-_i0iZeu2etR3vC1S_rHcMrujupiqCjF8Gj7YwVM0oic0LmZo_nfoCRHI8sezIg6lc_cAoewPMCFQk0Ua4Q22sOLut5K0xoEvkGVoQvUIyYzylzg0cR_3brwkm27a-xuCTeVsCElH721g3l=w521-h521" width="521" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: justify;"><i>Площадь горы Олимп такая же, как у Польши, и почти такая же, как у всей Франции. (Wikimedia Commons CC BY 4.0)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Эти размеры затмевают все, что есть на Земле, и легко превосходят почти любой другой пик, наблюдаемый во всей Солнечной системе.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Трудно по-настоящему представить, как выглядят такие размеры, но НАСА сделало все возможное, чтобы собрать составное изображение, используя все доступные данные, и вот что они придумали.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjG3I37oJcfb59TxsEDz_BX3oaaogMpyX356oef5IfsyLkyLGdwvpjrEqsFnCr6go-0Ag655JuHJ0W_Agk1PY2nUXN7k8M-_0VqyHuaZZwPHFaZDQLFASoLHDs6YRXQ1O5_A_fm2aRqSXV1EIbwhU8kiq2Ig9Yjdzf0repdlE0vIJ4-e5i1M6Z4Vw8X=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="375" data-original-width="875" height="274" src="https://blogger.googleusercontent.com/img/a/AVvXsEjG3I37oJcfb59TxsEDz_BX3oaaogMpyX356oef5IfsyLkyLGdwvpjrEqsFnCr6go-0Ag655JuHJ0W_Agk1PY2nUXN7k8M-_0VqyHuaZZwPHFaZDQLFASoLHDs6YRXQ1O5_A_fm2aRqSXV1EIbwhU8kiq2Ig9Yjdzf0repdlE0vIJ4-e5i1M6Z4Vw8X=w640-h274" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он может показаться не таким уж большим, но это размер Польши. Выдающиеся кальдеры на пике возвышаются на мили и мили над окружающими равнинами. Эта гора настолько велика, что наблюдатели в 19 веке могли сказать, что на Марсе есть массивная гора, задолго до того, как у нас появились мощные телескопы и межпланетные марсоходы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если сегодня восхождение на Эверест является великим достижением на Земле, то, возможно, когда-нибудь восхождение на гору Олимп станет таким же, но вдвойне впечатляющим.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Короче говоря, Олимп большой. Очень, очень, очень большой.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Такой большой, что трудно представить.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://grantpiperwriting.medium.com/heres-how-big-the-largest-mountain-in-the-solar-system-actually-is-dfb432073b48">Here’s How Big The Largest Mountain In The Solar System Actually Is</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-35621984739222490332022-02-16T10:44:00.000-08:002022-02-16T10:44:53.565-08:00Прогнозирование прочности бетона с использованием машинного обучения (с кодом Python)<div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjGecLfUhq23vSe-NuBAXVNfIklUsH_DHqqbs4x0mxVPXHdA5NAp71hLjvc4mP8KKh49DY8I6d8kbJ2-4KgwlD7IzP7JmRO4-kyBn1JVlAtITC-HG8jdGXbWnpjMsy6jkjjgcIhjb8aeqRDiHKxGP9OLhfEwe2CQIYKrUfUgkT31apMtAJiZjRHT1lf=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjGecLfUhq23vSe-NuBAXVNfIklUsH_DHqqbs4x0mxVPXHdA5NAp71hLjvc4mP8KKh49DY8I6d8kbJ2-4KgwlD7IzP7JmRO4-kyBn1JVlAtITC-HG8jdGXbWnpjMsy6jkjjgcIhjb8aeqRDiHKxGP9OLhfEwe2CQIYKrUfUgkT31apMtAJiZjRHT1lf=w640-h360" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div></div><div style="font-family: verdana; text-align: justify;"><b>Введение</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Каждый специалист по анализу данных должен создавать предметные знания в каждой области, потому что мы должны решать каждую проблему, с которой, вероятно, сталкивается мир. Если вы не знаете, что такое знание предметной области? это знание определенной области или специализация в какой-либо области. мы также можем сказать, что это часть общих знаний, поэтому, как специалисты по данным, мы, вероятно, решаем реальные проблемы, которые были основаны на машинном обучении, со знанием предметной области конкретной проблемы.<span><a name='more'></a></span></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Как специалисты по обработке данных, мы обычно сталкивались с множеством реальных проблем, таких как социальные проблемы, строительство и т. д. Мы должны решать этот тип проблем с помощью методов машинного обучения. Мы знаем, что качество является наиболее важным свойством материала, используемого в строительстве. Если качество бетона ниже, чем требуется, то постройка не может быть стабильной, но если мы используем бетон самого высокого качества, то здание будет стабильным и долговечным.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Чтобы узнать, является ли данный бетон качественным или нет, мы обычно проверяем прочность бетона. Проще говоря, прочность бетона на сжатие определяет качество бетона, мы проверяем его стандартным испытанием на раздавливание бетонного цилиндра. Прочность бетона также считается ключевым фактором в достижении желаемой прочности конструкции. На проверку прочности уйдет 28 дней, это большое время, так как мы может его сократить? Используя Data Science, мы сокращаем эти временные затраты и прогнозируем, какое сырье, и в каком количестве мы должны использовать для обеспечения хорошей прочности на сжатие.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Итак, мы собираемся проанализировать набор данных Concrete Compressive Strength и построить модель машинного обучения для прогнозирования качества:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Набор данных</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Мы будем использовать набор данных прочности на сжатие бетона, который был получен из Kaggle, вы можете кликнуть <a href="https://www.kaggle.com/elikplim/concrete-compressive-strength-data-set">здесь</a>, чтобы получить его.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Описание набора данных</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Если вы загрузите этот набор данных, вы увидите, что несколько признаков влияют на качество бетона. Итак, мы обсуждаем краткое описание каждого признака:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><i><b>cement</b></i>: вещество, используемое в строительстве, которое затвердевает при смешивании с водой.</div><div style="font-family: verdana; text-align: justify;"><i><b>slag</b></i>: смесь оксидов металлов и диоксида кремния.</div><div style="font-family: verdana; text-align: justify;"><i><b>Flyash</b></i>: продукт сгорания угля, состоящий из твердых частиц, которые выбрасываются из угольных котлов вместе с дымом.</div><div style="font-family: verdana; text-align: justify;"><i><b>Water</b></i>: используется для получения бетонного раствора.</div><div style="font-family: verdana; text-align: justify;"><i><b>Superplasticizer</b></i>: используется при изготовлении высокопрочного бетона.</div><div style="font-family: verdana; text-align: justify;"><i><b>Coaseseaggregate</b></i>: щебень, полученный из наземных отложений.</div><div style="font-family: verdana; text-align: justify;"><i><b>fineaggregate</b></i>: щебень с размером частиц менее 4,75 мм.</div><div style="font-family: verdana; text-align: justify;"><i><b>age</b></i>: скорость набора прочности выше в начале, и она уменьшается с возрастом образца.</div><div style="font-family: verdana; text-align: justify;"><i><b>csMPa</b></i>: единица измерения прочности бетона.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы импортируем некоторые важные модули:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Импорт модулей</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Для дальнейшего процесса нам нужно импортировать некоторые важные модули, присутствующие в python:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># importing pandas
import pandas as pd
#importing numpy
import numpy as np
#importing matplotlib
import matplotlib.pyplot as plt
#importing seaborn
import seaborn as sb</pre></div><div style="font-family: verdana; text-align: justify;">Итак, мы импортируем pandas для анализа данных, NumPy для вычисления N-мерного массива, seaborn и matplotlib для визуализации данных.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Чтение данных</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Как правило, мы используем набор данных в виде файла CSV, для чтения этого файла мы будем использовать библиотеку pandas, давайте посмотрим:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">df = pd.read_csv(' Concrete_data.csv ')
df</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhAOBwfGtnQtxB0Ab0T4G_t0w0XnOof-lhF1LEauqP4f5xyXo9jqw3yVztE6An-joLmN-qS4mg-HgjV-vzK6iN_tUaCQq9bVTFqmetW19ScvLQziaBM57upXoG8I8hLKv2szOdI2PuTYl2o2oahnLooROTszZs_1k9ChGgTNMxKHMCB6NJkTg1ImETu=s1146" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="477" data-original-width="1146" height="266" src="https://blogger.googleusercontent.com/img/a/AVvXsEhAOBwfGtnQtxB0Ab0T4G_t0w0XnOof-lhF1LEauqP4f5xyXo9jqw3yVztE6An-joLmN-qS4mg-HgjV-vzK6iN_tUaCQq9bVTFqmetW19ScvLQziaBM57upXoG8I8hLKv2szOdI2PuTYl2o2oahnLooROTszZs_1k9ChGgTNMxKHMCB6NJkTg1ImETu=w640-h266" width="640" /></a></div><br /><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Изучение набора данных</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">После чтения набора данных мы должны извлечь информацию из данных, для этого мы используем следующую функцию:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">df.info()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh50lrAgboBUk-0_cxfX6UG2UIQ313uhYP4xBAQe7L7v9DiZgboOHJweXWGaT4RFSco2EnX7Y5QWE_sCv_2KqYWVhDCh53eAN5zTq0HveSRm-UNDMPQBoU20H98ut3PJeNf_lJkP6lCjo_7PS8jeCbJl97qvH9_0W8_vLvU_VSAbsjuD5QbkLFFJOss=s821" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="388" data-original-width="821" height="302" src="https://blogger.googleusercontent.com/img/a/AVvXsEh50lrAgboBUk-0_cxfX6UG2UIQ313uhYP4xBAQe7L7v9DiZgboOHJweXWGaT4RFSco2EnX7Y5QWE_sCv_2KqYWVhDCh53eAN5zTq0HveSRm-UNDMPQBoU20H98ut3PJeNf_lJkP6lCjo_7PS8jeCbJl97qvH9_0W8_vLvU_VSAbsjuD5QbkLFFJOss=w640-h302" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Здесь мы отмечаем присутствие нулевых значений в каждом признаков и видим, какой тип данных признаков присутствует в наборе данных.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">df.describe()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhvPJHWo5X4tIW2qaLUOmfuKCDDS-2IFvmj8RWSYEz6RTjXYc938iFr86MUjClQilJREqj1VkkeO1UaCqM8aDegDOTt5mX8b6UQNuiTiUObIs92pNKb9u3uKqX1JSjofe5VPoSxyFYYOoqxuVxmxmNIY8uFvvQ_xw7LWhsHtxz2M2NTixL-b_yPegLU=s1303" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="343" data-original-width="1303" height="168" src="https://blogger.googleusercontent.com/img/a/AVvXsEhvPJHWo5X4tIW2qaLUOmfuKCDDS-2IFvmj8RWSYEz6RTjXYc938iFr86MUjClQilJREqj1VkkeO1UaCqM8aDegDOTt5mX8b6UQNuiTiUObIs92pNKb9u3uKqX1JSjofe5VPoSxyFYYOoqxuVxmxmNIY8uFvvQ_xw7LWhsHtxz2M2NTixL-b_yPegLU=w640-h168" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Метод description() производит различные вычисления для каждой точки данных в признаке.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Обработка нулевых значений</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы обрабатываем нулевые значения, которые присутствуют в наборе данных, для большей точности,</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">df.isnull().sum()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjnNzqnnC7ZvFLG5u_wutiMdDufA3iU4135-AYl0lvLU03YAdhxqtfx117yPRqQQnWOdIU-hKVPlLeGWLqViV4kWKg-5yZ7hYPvJB388ypGvEQ26CW0fw2PdgRNt48O81VQs73oklnId35F6-oTa4rSStRSbKZ2QbzTCa53RYhv0KscTlD3xrmajInM=s387" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="202" data-original-width="387" height="218" src="https://blogger.googleusercontent.com/img/a/AVvXsEjnNzqnnC7ZvFLG5u_wutiMdDufA3iU4135-AYl0lvLU03YAdhxqtfx117yPRqQQnWOdIU-hKVPlLeGWLqViV4kWKg-5yZ7hYPvJB388ypGvEQ26CW0fw2PdgRNt48O81VQs73oklnId35F6-oTa4rSStRSbKZ2QbzTCa53RYhv0KscTlD3xrmajInM=w418-h218" width="418" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">вы можете видеть, что в каждом признаке присутствует определенное количество нулевых значений, поэтому мы должны вменять им какое-то другое значение, чтобы заполнить нулевые значения,</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">num= df.select_dtypes(include=['int64','float64']).keys()
from sklearn.impute import SimpleImputer
impute=SimpleImputer(strategy='mean')
impute_fit= impute.fit(df[num])
df[num]= impute_fit.transform(df[num])
df</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjZESZ5IohiRqjDhXwlNWOh7hc9KJ_vatYwj7VZ8YWjTTavQpKX-us_VXlKzgRyrwnig8z7QBqCZJF8rNUUeb7DfyIqbeHbKVEidP_m2NGfUQQKjps97bTYKA3HKDDO2-Xf1TzdmEep-hhp9gWCGpR90KughoNoyOS7Y8mJXggEgk6g2GtBmr2SCain=s925" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="392" data-original-width="925" height="272" src="https://blogger.googleusercontent.com/img/a/AVvXsEjZESZ5IohiRqjDhXwlNWOh7hc9KJ_vatYwj7VZ8YWjTTavQpKX-us_VXlKzgRyrwnig8z7QBqCZJF8rNUUeb7DfyIqbeHbKVEidP_m2NGfUQQKjps97bTYKA3HKDDO2-Xf1TzdmEep-hhp9gWCGpR90KughoNoyOS7Y8mJXggEgk6g2GtBmr2SCain=w640-h272" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Здесь мы используем метод преобразования, который известен как SimpleImputer, он используется для заполнения нулевых значений средними, медианными значениями и модами.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Исследовательский анализ данных (EDA)</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">EDA - важный шаг для создания любого проекта машинного обучения, это подход к анализу наборов данных для обобщения их основных характеристик. С помощью EDA мы можем получать информацию о признаках, просто наблюдая за графиками.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Итак, здесь мы будем использовать некоторые часто используемые методы визуализации для наблюдения за данными:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Парный график:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Он строит попарные соотношения в наборе данных, создает сетку осей, где ось Y принадлежит строке, а ось X - столбцам.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># pairplot of dataframe
sb.pairplot( df )</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjqy8KOQrHGPkPBihRLqebCsR-TqRSh0RBgtb5SQRsColqZWS9H7CYIrCnhngiX8Q3sjKtGHfJN5gyjl9Rs4jpMiLupYnU5U1uJCGfr-LCv3n453JK_ZNvNqYGcfh9YdA8_2GiBrQj_CeNG6ApHJ2M_E0bHgE2qRhNZEg55RxodCa80dTVrRn3HoErN=s847" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="782" data-original-width="847" height="590" src="https://blogger.googleusercontent.com/img/a/AVvXsEjqy8KOQrHGPkPBihRLqebCsR-TqRSh0RBgtb5SQRsColqZWS9H7CYIrCnhngiX8Q3sjKtGHfJN5gyjl9Rs4jpMiLupYnU5U1uJCGfr-LCv3n453JK_ZNvNqYGcfh9YdA8_2GiBrQj_CeNG6ApHJ2M_E0bHgE2qRhNZEg55RxodCa80dTVrRn3HoErN=w640-h590" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Как вы можете видеть, он отображает корреляции между каждым признаком.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>График рассеяния</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Этот график отображает отношения между любыми двумя наборами данных.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># scatter plot of Water and Cement
plt.figure(figsize=[17,9])
plt.scatter(y='csMPa',x='cement',edgecolors='red',data=df)
plt.ylabel('csMPa')
plt.xlabel('cement')</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgcBmyoRx-nZ8It8X_DRW2DanSLbk5tm-V3hH4I-P1JoB1pzwSWn6WitGpiNRnjxRg76C-Veod50NJhCB6uJCC_lsD2VdRIssMfHcY_VxKhvUjjuhbm_gGIggCplKW6Mndq09i1Qms5SBR1nIptF0dxY0Nltr6SEkAJdK-K2zeF3H1YnRmpBIrHV21w=s1078" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="561" data-original-width="1078" height="334" src="https://blogger.googleusercontent.com/img/a/AVvXsEgcBmyoRx-nZ8It8X_DRW2DanSLbk5tm-V3hH4I-P1JoB1pzwSWn6WitGpiNRnjxRg76C-Veod50NJhCB6uJCC_lsD2VdRIssMfHcY_VxKhvUjjuhbm_gGIggCplKW6Mndq09i1Qms5SBR1nIptF0dxY0Nltr6SEkAJdK-K2zeF3H1YnRmpBIrHV21w=w640-h334" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Мы используем matplotlib для построения графика рассеяния, на этом изображении вы можете ясно видеть, что ось x содержит точки данных cement, значения которых могут варьироваться от 100 до 500, а ось y представляет зависимую переменную csMPa, где ее точки данных варьируются от 0 до 80.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">По мере того, как мы увеличиваем количество цемента в бетоне, качество бетона также может повышаться, как показано на диаграмме рассеяния.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">В соответствии с этим мы также можем построить взаимосвязь между любыми другими двумя признаками, содержащимися в наборе данных. Давайте построим диаграмму рассеяния между csMPa и flyash.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">plt.figure(figsize=[17,9])
plt.scatter(y='csMPa',x='flyash',edgecolors='blue',data=df)
plt.ylabel('csMPa')
plt.xlabel('flyash')</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь построим график корреляции:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjOnGjDgRfFYQ48lOZHBdLA4BKQ2-VZihSESXc1TPW0US9okHDf3gI-TubYo7zq2RPFpvKA2kA4h5WuckvnB4gmfWcExElh4VfG5bTRNa4Z7D2ZYNnxjVwmjRDTovHQSkW6Wg08-kBP3T8s6orBQ1I2-pAnrMPS_Uuml8G0Rvf8ONkrmWj7ZnWalEM9=s1046" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="556" data-original-width="1046" height="340" src="https://blogger.googleusercontent.com/img/a/AVvXsEjOnGjDgRfFYQ48lOZHBdLA4BKQ2-VZihSESXc1TPW0US9okHDf3gI-TubYo7zq2RPFpvKA2kA4h5WuckvnB4gmfWcExElh4VfG5bTRNa4Z7D2ZYNnxjVwmjRDTovHQSkW6Wg08-kBP3T8s6orBQ1I2-pAnrMPS_Uuml8G0Rvf8ONkrmWj7ZnWalEM9=w640-h340" width="640" /></a></div><br /><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>График корреляции</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">График корреляции показывает коэффициент корреляции между переменными. Этот график содержит таблицу в виде корреляционной матрицы.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы визуализируем корреляцию между переменными, построив график:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="text-align: justify;"><span style="font-family: courier;">plt.figure(figsize=[17,8])</span></div><div style="text-align: justify;"><span style="font-family: courier;">#ploting correlation plot</span></div><div style="text-align: justify;"><span style="font-family: courier;">sb.heatmap(df.corr(),annot=True)</span></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; font-family: verdana; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhtpoaXMSXty-pZjk9_Jh_ygW4QZjMJON3zxzCt2FMZddZNCHTz7WhhQkIx7sPojvllG108_H-tneOb6JXr3gS7hwT1mFQbCxh1sMZ7PGcMINMLf7G-ge24NlELojIe_1vLTYeaA_mCaofDYOXhfR-Ab34GIGtF4XXkR2GKBZtciL2QLwuR90jMI-t1=s1022" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="625" data-original-width="1022" height="392" src="https://blogger.googleusercontent.com/img/a/AVvXsEhtpoaXMSXty-pZjk9_Jh_ygW4QZjMJON3zxzCt2FMZddZNCHTz7WhhQkIx7sPojvllG108_H-tneOb6JXr3gS7hwT1mFQbCxh1sMZ7PGcMINMLf7G-ge24NlELojIe_1vLTYeaA_mCaofDYOXhfR-Ab34GIGtF4XXkR2GKBZtciL2QLwuR90jMI-t1=w640-h392" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Мы используем библиотеку seaborn для построения графика корреляции между переменными, здесь вы видите, что между переменными существует взаимосвязь один к одному. Каждая переменная показывает связь с другой переменной.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Если мы возьмем наблюдения из тепловой карты, то обнаружим, что cement имеет сильную корреляцию с water.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы рисуем выброс, который присутствует в наборе данных:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Ящик с усами</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">l=['cement','slag','flyash','water','superplasticizer','coarseaggregate','fineaggregate','age','csMPa']
for i in l:
sb.boxplot(x=df[i])]' ]
plt.show()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiPeGxk8L7jq50m76XXP-6AQqRzLyr_B3z5VsTOkGWk_gL3C4PlP19MRvVSFRgaLeUttl4yezklgbLA68NOgwWn7pbw32zQCiRowwILMexg8y3Sx71DXQ6Dcf2MwvyzqPgDB2WnWOSO1AmkD59AHYykQwbnIN29tmNci0KkOrB__QBoru_Pu8qwQS3o=s843" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="843" data-original-width="731" height="499" src="https://blogger.googleusercontent.com/img/a/AVvXsEiPeGxk8L7jq50m76XXP-6AQqRzLyr_B3z5VsTOkGWk_gL3C4PlP19MRvVSFRgaLeUttl4yezklgbLA68NOgwWn7pbw32zQCiRowwILMexg8y3Sx71DXQ6Dcf2MwvyzqPgDB2WnWOSO1AmkD59AHYykQwbnIN29tmNci0KkOrB__QBoru_Pu8qwQS3o=w433-h499" width="433" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Посмотрите на диаграмму boxplot, вы заметите, что черные точки присутствуют слева и справа от линий, эти точки являются более резкими, чем те, которые присутствуют в конкретном признаке.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Разделение зависимых и независимых переменных</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Перед тем, как начать построение модели, мы должны разделить набор данных на две части.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Независимые переменные содержат список тех переменных, от которых зависит качество бетона.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Зависимая переменная - это та переменная, которая зависит от значений других переменных.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># independent variables
x = df.drop(['csMPa'],axis=1)
# dependent variables
y = df['csMPa']</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">В этой программе x содержит список независимых переменных, а y содержит зависимую переменную, в этом случае:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">1. Независимые переменные: cement, flyash, water, superplasticizer, coaseseaggregate, fineaggregate, age.</div><div style="font-family: verdana; text-align: justify;">2. зависимая переменная - только csMPa</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Разделение данных</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы используем модуль scikit-learn train_test_split, которая применяется для разделения обучающей и тестовой выборок.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># importing train_test_split
from sklearn.model_selection import train_test_split
xtrain,xtest,ytrain,ytest= train_test_split(x,y,test_size=0.3,random_state=42)</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Масштабирование признаков</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Мы делаем масштабирование данных для балансировки точек данных.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">from sklearn.preprocessing import StandardScaler
stand= StandardScaler()
Fit = stand.fit(xtrain)
xtrain_scl = Fit.transform(xtrain)
xtest_scl = Fit.transform(xtest)</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">В этой программе сначала мы импортируем train_test_split из scikit-learn, затем создаем объект класса StandardScaler(), после создания объекта мы подгоняем обучающие данные в StandardScaler для масштабирования данных, а затем преобразуем обучающие и тестовые данные в массив.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Применение модели</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Машинное обучение состоит из алгоритмов, которые могут автоматизировать построение аналитических моделей. Используются алгоритмы, которые итеративно учатся на данных. На этом этапе мы применяем несколько алгоритмов машинного обучения к обучающей выборке.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Давайте посмотрим ниже:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Линейная регрессия</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># import linear regression models
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
lr=LinearRegression()
fit=lr.fit(xtrain_scl,ytrain)
score = lr.score(xtest_scl,ytest)
print('predcted score is : {}'.formate(score))
print('..................................')
y_predict = lr.predict(xtest_scl)
print('mean_sqrd_error is ==',mean_squared_error(ytest,y_predict))
rms = np.sqrt(mean_squared_error(ytest,y_predict))
print('root mean squared error is == {}'.format(rms))</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhlaNQ1B96-IbfisozEN8dwaeEEZtrhn-7ry7lCCfocq5K50_ODjmGWnu3YIjk_Q500Xn4qjj3YcRKRV3NmjYV0aS8jKIhOCW7w6rS6itiBEofwyulgwFRN__WaK6Vg7TYrdHdHLDKK3i0oDNKwEP8jOwlAmaC45raoZDfPi4ad9xzK4cZOqEvljnlj=s612" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="113" data-original-width="612" height="118" src="https://blogger.googleusercontent.com/img/a/AVvXsEhlaNQ1B96-IbfisozEN8dwaeEEZtrhn-7ry7lCCfocq5K50_ODjmGWnu3YIjk_Q500Xn4qjj3YcRKRV3NmjYV0aS8jKIhOCW7w6rS6itiBEofwyulgwFRN__WaK6Vg7TYrdHdHLDKK3i0oDNKwEP8jOwlAmaC45raoZDfPi4ad9xzK4cZOqEvljnlj=w640-h118" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы строим диаграмму рассеяния и подгоняем прямую для проверки прогнозных значений:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">plt.figure(figsize=[17,8])
plt.scatter(y_predict,ytest)
plt.plot([ytest.min(), ytest.max()], [ytest.min(), ytest.max()], color='red')
plt.xlabel('predicted')
plt.ylabel('orignal')
plt.show()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEghOPhwA-9xgamXLNcEE7GgbYnJ3Zp57fvry99acd8PDJev_fCxbtLyOs3oFmsSxv-2PMfTqsJD9Gf4r6Dj6tSO7VMGyhSqJ7kwFz29tOUZR_XTkEazBP-tvkkz1gbkbqvP21JALQSZF4yuazPSqLUEdPrYybUx0y-csQPtEIto5xej3qD7UhBeiDZW=s1236" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="863" data-original-width="1236" height="446" src="https://blogger.googleusercontent.com/img/a/AVvXsEghOPhwA-9xgamXLNcEE7GgbYnJ3Zp57fvry99acd8PDJev_fCxbtLyOs3oFmsSxv-2PMfTqsJD9Gf4r6Dj6tSO7VMGyhSqJ7kwFz29tOUZR_XTkEazBP-tvkkz1gbkbqvP21JALQSZF4yuazPSqLUEdPrYybUx0y-csQPtEIto5xej3qD7UhBeiDZW=w640-h446" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Вы можете увидеть, что прямая частично соответствует нашим прогнозируемым точкам данных.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Лассо и гребневая регрессия</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># import rigd and lasso regresion
from sklearn.linear_model import Ridge,Lasso
from sklearn.metrics import mean_squared_error
rd= Ridge(alpha=0.4)
ls= Lasso(alpha=0.3)
fit_rd=rd.fit(xtrain_scl,ytrain)
fit_ls = ls.fit(xtrain_scl,ytrain)
print('score od ridge regression is:-',rd.score(xtest_scl,ytest))
print('.......................................................')
print('score of lasso is:-',ls.score(xtest_scl,ytest))
print('mean_sqrd_roor of ridig is==',mean_squared_error(ytest,rd.predict(xtest_scl)))
print('mean_sqrd_roor of lasso is==',mean_squared_error(ytest,ls.predict(xtest_scl)))
print('root_mean_squared error of ridge is==',np.sqrt(mean_squared_error(ytest,rd.predict(xtest_scl))))
print('root_mean_squared error of lasso is==',np.sqrt(mean_squared_error(ytest,lr.predict(xtest_scl))))</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh4YU7ftmXYYvOvYp9l5gdOa5zwAdTvaVot1Yx9NRlYgzIZzDnjaaZu3g7Vz44MzNfMBAk2fuzIUXACiz5o8WRJcIO5F9QPI1_AzUYOca3ijYf-W4k2-nVEEVjEdWCLg0d7tLsBZToSVQxBxB0DWjtlxKLQsn7T3eOMAyuAICGmYat6z4ruABywZirP=s567" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="152" data-original-width="567" height="128" src="https://blogger.googleusercontent.com/img/a/AVvXsEh4YU7ftmXYYvOvYp9l5gdOa5zwAdTvaVot1Yx9NRlYgzIZzDnjaaZu3g7Vz44MzNfMBAk2fuzIUXACiz5o8WRJcIO5F9QPI1_AzUYOca3ijYf-W4k2-nVEEVjEdWCLg0d7tLsBZToSVQxBxB0DWjtlxKLQsn7T3eOMAyuAICGmYat6z4ruABywZirP=w476-h128" width="476" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Этот алгоритм двух регрессий дает немного другую оценку прогноза по сравнению с линейной регрессией.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы построим диаграмму рассеяния предсказанных данных и построим прямую.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">График гребневой регрессии:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">plt.figure(figsize=[17,8])
plt.scatter(y_predict,ytest)
plt.plot([ytest.min(), ytest.max()], [ytest.min(), ytest.max()], color='red')
plt.xlabel('predicted')
plt.ylabel('orignal')
plt.show()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgK4sWj7iDwmW6ECXt7AN2Dachr6S-oUfUN1bAOm14d3RWjxIjToXL6cGmY8xGf38_IuZHcDE85ByC1ktHaEt84zDFtGz9Zw1aZcwW6UEtl-jtXqFpFpsFujt5x-VKyfaFusThTsnBs93S6Y5pCp9oHs_AU9_TzQks5WpTfRCh7A3BeKivZbh0OYuhl=s1182" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="715" data-original-width="1182" height="388" src="https://blogger.googleusercontent.com/img/a/AVvXsEgK4sWj7iDwmW6ECXt7AN2Dachr6S-oUfUN1bAOm14d3RWjxIjToXL6cGmY8xGf38_IuZHcDE85ByC1ktHaEt84zDFtGz9Zw1aZcwW6UEtl-jtXqFpFpsFujt5x-VKyfaFusThTsnBs93S6Y5pCp9oHs_AU9_TzQks5WpTfRCh7A3BeKivZbh0OYuhl=w640-h388" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">График регрессии лассо:</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">plt.figure(figsize=[17,8])
plt.scatter(y_predict,ytest)
plt.plot([ytest.min(), ytest.max()], [ytest.min(), ytest.max()], color='red')
plt.xlabel('predicted')
plt.ylabel('orignal')
plt.show()</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj9fobERPJ865LqYQRD7L4hV0hYG_Y8GV_53T8bghabRW1JMiAr2YLqH2i3ytfPABWL6FH79dxKRloRFmODCvyDBk3nm-Csok2MTpVkjhomPYI0mcp1x3kduDIx0ZyLLqOVy3cWxytF2K0MhKkhvellTXRChdd5qvS6GJuXbzhzLMibovoXcHO-r5sY=s1236" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="863" data-original-width="1236" height="446" src="https://blogger.googleusercontent.com/img/a/AVvXsEj9fobERPJ865LqYQRD7L4hV0hYG_Y8GV_53T8bghabRW1JMiAr2YLqH2i3ytfPABWL6FH79dxKRloRFmODCvyDBk3nm-Csok2MTpVkjhomPYI0mcp1x3kduDIx0ZyLLqOVy3cWxytF2K0MhKkhvellTXRChdd5qvS6GJuXbzhzLMibovoXcHO-r5sY=w640-h446" width="640" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Мы можем видеть на этих двух графиках, что они очень похожи, потому что оценка прогноза или оба алгоритма немного похожи.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>RandomForestRegressor</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;"># import random forest regression
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_squared_error
rnd= RandomForestRegressor(ccp_alpha=0.0)
fit_rnd= rnd.fit(xtrain_scl,ytrain)
print('score is:-',rnd.score(xtest_scl,ytest))
print('........................................')
print('mean_sqrd_error is==',mean_squared_error(ytest,rnd.predict(xtest_scl)))
print('root_mean_squared error of is==',np.sqrt(mean_squared_error(ytest,rnd.predict(xtest_scl))))</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXeD29-Z5Setx_ZAaO9HbPibcGlKIQW9TVm-wz9PN-p8RMzIcmkAey1KrQGBgvCFX0FfHkInXWV4ZTPz0KCTDYi2V-9CV4emTLEHTEi7_w6vssg0I9BIT7KG5xVI3tf72We2NRQ-PcvgUgKGjZA5TvkucGBCc-KYTP_STa0kJ5gUubERt4mjzS5NcK=s505" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="102" data-original-width="505" height="106" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXeD29-Z5Setx_ZAaO9HbPibcGlKIQW9TVm-wz9PN-p8RMzIcmkAey1KrQGBgvCFX0FfHkInXWV4ZTPz0KCTDYi2V-9CV4emTLEHTEi7_w6vssg0I9BIT7KG5xVI3tf72We2NRQ-PcvgUgKGjZA5TvkucGBCc-KYTP_STa0kJ5gUubERt4mjzS5NcK=w522-h106" width="522" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Оценка точности RandomForestRegressor является самой высокой среди линейной регрессии, регрессии лассо и гребневой, поэтому мы используем модель RandomForestRegressor. Здесь самая высокая точность означает, что она лучше предсказывает качество бетона, а также дает меньшую частоту ошибок.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Прогнозируемые значения по сравнению с исходными значениями</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы смотрим соответствие между предсказанными значениями зависимой переменной csMPa и исходными значениями.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">x_predict = list(rnd.predict(xtest))
predicted_df = {'predicted_values': x_predict, 'original_values': ytest}
#creating new dataframe
pd.DataFrame(predicted_df).head(20)</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjrephngiHYurSmHp8_q79_QWcji-r8FAUxx99OSUaO2KH20JJt-TY-rrb3BS0fnaXosOmzSVIzAmO923sgY2VbkOwbGGe4RSoELmI1XQ_soachGl5I76799aNLVeeFPV9Sj0d4ZKwf0WfU6xdnRfG5NI0Yy9xEZ2v7fJxWZCeHggbaMaT79NqzPRGy=s937" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="632" data-original-width="937" height="351" src="https://blogger.googleusercontent.com/img/a/AVvXsEjrephngiHYurSmHp8_q79_QWcji-r8FAUxx99OSUaO2KH20JJt-TY-rrb3BS0fnaXosOmzSVIzAmO923sgY2VbkOwbGGe4RSoELmI1XQ_soachGl5I76799aNLVeeFPV9Sj0d4ZKwf0WfU6xdnRfG5NI0Yy9xEZ2v7fJxWZCeHggbaMaT79NqzPRGy=w519-h351" width="519" /></a></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Вы можете видеть, что при применении модели RandomForestRegressor прогнозируемые значения очень похожи на наши исходные значения.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><b>Сохранение модели</b></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Теперь мы сохраняем нашу модель машинного обучения с помощью pickle.</div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;"><pre style="background-color: rgb(44, 44, 44) !important; border-radius: 4px !important; border: 1px solid rgb(216, 216, 216) !important; box-sizing: border-box; color: rgb(255, 255, 255) !important; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px !important; margin-bottom: 10px; margin-top: 0px; overflow: auto; padding: 10px !important; text-align: left;">import pickle
file = 'concrete_strength'
save = pickle.dump(rnd,open(file,'wb'))</pre></div><div style="font-family: verdana; text-align: justify;"><br /></div><div style="font-family: verdana; text-align: justify;">Оригинал: <a href="https://www.analyticsvidhya.com/blog/2021/04/concrete-strength-prediction-using-machine-learning-with-python-code/">Concrete Strength Prediction Using Machine Learning (with Python code)</a></div>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-74445258412474536122022-02-15T11:29:00.000-08:002022-02-15T11:29:28.319-08:00Команда tcpdump для начинающих<div style="text-align: justify;"><span style="font-family: verdana;">Каждый раз, когда вы открываете веб-страницу на своем компьютере, через сетевой интерфейс отправляются и принимаются пакеты данных. Иногда анализ этих пакетов становится важным по многим причинам. К счастью, Linux предлагает утилиту командной строки, которая выводит информацию, связанную с этими пакетами данных.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этой статье мы обсудим основы использования рассматриваемой утилиты - tcpdump. Необходимо отметить, что все приведенные здесь примеры были протестированы на машине с Ubuntu 18.04 LTS.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Команда tcpdump</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда tcpdump в Linux позволяет вам выводить сетевой трафик. Ниже приводится ее краткий синтаксис:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump [OPTIONS]</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">А вот детальный синтаксис:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump [ -AbdDefhHIJKlLnNOpqStuUvxX# ] [ -B buffer_size ]<br /> [ -c count ]<br /> [ -C file_size ] [ -G rotate_seconds ] [ -F file ]<br /> [ -i interface ] [ -j tstamp_type ] [ -m module ] [ -M secret ]<br /> [ --number ] [ -Q in|out|inout ]<br /> [ -r file ] [ -V file ] [ -s snaplen ] [ -T type ] [ -w file ]<br /> [ -W filecount ]<br /> [ -E spi@ipaddr algo:secret,... ]<br /> [ -y datalinktype ] [ -z postrotate-command ] [ -Z user ]<br /> [ --time-stamp-precision=tstamp_precision ]<br /> [ --immediate-mode ] [ --version ]<br /> [ expression ]</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И вот как справочная страница утилиты описывает ее:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #999999;">Tcpdump выводит описание содержимого пакетов на сетевом интерфейсе, которые соответствуют логическому выражению; описанию предшествует отметка времени, отображаемая по умолчанию в виде часов, минут, секунд и долей секунды с полуночи.</span></i></div><div style="text-align: justify;"><i><span style="color: #999999;"><br /></span></i></div><div style="text-align: justify;"><i><span style="color: #999999;">Его также можно запустить с флагом -w, который заставляет ее сохранять данные в файл для последующего анализа, и/или с флагом -r, который заставляет ее читать из сохраненного файла прежде, чем читать пакеты с сетевого интерфейса. Его также можно запустить с флагом -V, который заставляет ее читать список сохраненных файлов.</span></i></div><div style="text-align: justify;"><i><span style="color: #999999;"><br /></span></i></div><div style="text-align: justify;"><i><span style="color: #999999;">Во всех случаях tcpdump будет обрабатывать только пакеты, которые соответствуют логическому выражению.</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приведены примеры в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда tcpdump.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q1. Как использовать tcpdump?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Прежде чем использовать tcpdump для перехвата пакетов данных, в идеале вы должны знать, на каком сетевом интерфейсе вы хотите запустить ее. Для получения списка сетевых интерфейсов, доступных в системе, используйте параметр командной строки -D.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -D</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вот как справочная страница описывает эту опцию:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #999999;">Выводит список сетевых интерфейсов, доступных в системе и для которых tcpdump может захватывать пакеты. Для каждого сетевого интерфейса выводятся номер и имя интерфейса, за которым, возможно, следует текстовое описание интерфейса. Имя или номер интерфейса можно указать после флага -i, чтобы задать интерфейс для захвата.</span></i></div><div style="text-align: justify;"><i><span style="color: #999999;"><br /></span></i></div><div style="text-align: justify;"><i><span style="color: #999999;">Это может быть полезно в системах, в которых нет команды для их перечисления (например, в системах Windows или системах UNIX, в которых отсутствует ifconfig -a); число может быть полезно в Windows 2000 и более поздних системах, где имя интерфейса представляет собой довольно сложную строку.</span></i></div><div style="text-align: justify;"><i><span style="color: #999999;"><br /></span></i></div><div style="text-align: justify;"><i><span style="color: #999999;">Флаг -D не будет поддерживаться, если tcpdump был собран с более старой версией libpcap, в которой нет функции pcap_findalldevs ().</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Например, в моем случае был получен следующий вывод:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">1.wlx18a6f713679b [Up, Running]<br />2.any (Pseudo-device that captures on all interfaces) [Up, Running]<br />3.lo [Up, Running, Loopback]<br />4.enp3s0 [Up]<br />5.nflog (Linux netfilter log (NFLOG) interface)<br />6.nfqueue (Linux netfilter queue (NFQUEUE) interface)<br />7.usbmon1 (USB bus number 1)<br />8.usbmon2 (USB bus number 2)<br />9.usbmon3 (USB bus number 3)<br />10.usbmon4 (USB bus number 4)</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь, когда у вас есть список интерфейсов, вы можете выбрать один из них и передать его имя в качестве входных данных параметру командной строки -i команды tcpdump. Например:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -i wlx18a6f713679b</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Далее часть вывода, произведенного этой командой в моем случае:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump: verbose output suppressed, use -v or -vv for full protocol decode<br /><span style="font-style: inherit; font-weight: 700;">listening on wlx18a6f713679b</span>, link-type EN10MB (Ethernet), capture size 262144 bytes<br />11:53:11.408964 IP 192.168.2.132.52898 > 239.255.255.250.3702: UDP, length 656<br />11:53:11.409492 IP himanshu.57383 > one.one.one.one.domain: 8572+ [1au] PTR? 250.255.255.239.in-addr.arpa. (57)<br />11:53:11.409588 IP 192.168.2.140.49690 > 239.255.255.250.1900: UDP, length 174<br />11:53:11.409954 IP 192.168.2.147.mdns > 224.0.0.251.mdns: 1 [2q] PTR (QU)? _%9E5E7C8F47989526C9BCD95D24084F6F0B27C5ED._sub._googlecast._tcp.local. PTR (QU)? _googlecast._tcp.local. (94)<br />11:53:11.499220 IP one.one.one.one.domain > himanshu.57383: 8572 NXDomain 0/1/1 (114)<br />11:53:11.499950 IP himanshu.34201 > one.one.one.one.domain: 12068+ [1au] PTR? 132.2.168.192.in-addr.arpa. (55)<br />11:53:11.591291 IP one.one.one.one.domain > himanshu.34201: 12068 NXDomain* 0/1/2 (278)<br />11:53:11.592195 IP himanshu.55501 > one.one.one.one.domain: 31630+ [1au] PTR? 1.1.1.1.in-addr.arpa. (49)<br />11:53:11.842603 IP himanshu.57253 > one.one.one.one.domain: 16905+ [1au] PTR? 140.2.168.192.in-addr.arpa. (55)<br />11:53:11.951226 IP himanshu.52662 > one.one.one.one.domain: 52377+ [1au] PTR? 251.0.0.224.in-addr.arpa. (53)<br />11:53:12.428931 IP 192.168.2.140.49690 > 239.255.255.250.1900: UDP, length 174<br />11:53:12.437905 IP 192.168.2.147.mdns > 224.0.0.251.mdns: 2 [2q] PTR (QM)? _%9E5E7C8F47989526C9BCD95D24084F6F0B27C5ED._sub._googlecast._tcp.local. PTR (QM)? _googlecast._tcp.local. (94)<br />11:53:12.438730 IP6 fe80::eccc:59f2:fc78:9e07.52899 > ff02::c.3702: UDP, length 656<br />11:53:12.439017 IP himanshu.33194 > one.one.one.one.domain: 15679+ [1au] PTR? c.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.2.0.f.f.ip6.arpa. (101)<br />11:53:12.572386 IP one.one.one.one.domain > himanshu.33194: 15679 NXDomain 0/1/1 (165)<br />11:53:12.642129 IP 192.168.2.11.mdns > 224.0.0.251.mdns: 0*- [0q] 1/0/3 PTR Google-Home-Mini-e3a3ae72a03e3d1c60d24653d4666ca6._googlecast._tcp.local. (356)<br />...<br />...</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q2. Как заставить tcpdump завершить работу после получения заданного количества пакетов?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это может быть достигнуто с помощью параметра командной строки -c. Например, если вы хотите, чтобы tcpdump отображал только информацию, связанную с 10 пакетами, вы можете сделать это следующим образом:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -c 10</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Например, в моем случае я выполнил следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -c 10 -i wlx18a6f713679b</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приводится ее вывод:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgnFBh2iuv9gauV5a_2RziCM8Tc2hYCNq98etemDf29hU6agOSgskDuk1_0lHFrgL2DM7-p05H_CjM8LQ32zSzNZmRi9pqdzkRilcdeRLZFTKsIAs2ewVWKM5bsWafy6KFEg7jRmZCD4Zli8BfsPcdmBTrfGR8JHpOh7QEl07G79tPLeDcCyniBJv-2=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="335" data-original-width="500" src="https://blogger.googleusercontent.com/img/a/AVvXsEgnFBh2iuv9gauV5a_2RziCM8Tc2hYCNq98etemDf29hU6agOSgskDuk1_0lHFrgL2DM7-p05H_CjM8LQ32zSzNZmRi9pqdzkRilcdeRLZFTKsIAs2ewVWKM5bsWafy6KFEg7jRmZCD4Zli8BfsPcdmBTrfGR8JHpOh7QEl07G79tPLeDcCyniBJv-2=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Таким образом, вы можете увидеть, что были захвачены 10 пакетов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q3. Как сделать так, чтобы tcpdump отображал заголовок уровня ссылки в выводе?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это можно сделать с помощью параметра командной строки -e. Например:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -e -i wlx18a6f713679b</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И вот результат:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">listening on wlx18a6f713679b, link-type EN10MB (Ethernet), capture size 262144 bytes<br />12:14:07.951396 3c:a8:2a:a7:7b:c1 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 197: 192.168.2.55.17500 > 255.255.255.255.17500: UDP, length 155<br />12:14:07.952111 3c:a8:2a:a7:7b:c1 (oui Unknown) > Broadcast, ethertype IPv4 (0x0800), length 197: 192.168.2.55.17500 > 192.168.2.255.17500: UDP, length 155<br />...<br />...</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Таким образом, вы можете видеть, что в выводе были созданы заголовки уровня ссылки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q4. Как сделать так, чтобы tcpdump отображал иностранные IP-адреса численно?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это может быть достигнуто с помощью параметра командной строки -f.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -f -i [INTERFACE]</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Отображение в tcpdump «чужих» IPv4-адресов в числовом, а не в символьном смысле имеет свои преимущества в определенных ситуациях. Один такой пример упоминается в справочной странице утилиты:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #999999;">Эта опция предназначена для того, чтобы обойти серьезные неполадки на сервере NIS от Sun - обычно он зависает навсегда при попытке трансляции нелокальных численные IP-адреса.</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q5. Как заставить tcpdump выдавать номера пакетов в выводе?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы заставить tcpdump выдавать номера пакетов в выводе, используйте параметр командной строки --number.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Например, я выполнил следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump --number -i wlx18a6f713679b</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И вот часть вывода:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">listening on wlx18a6f713679b, link-type EN10MB (Ethernet), capture size 262144 bytes<br /> 1 12:38:35.522944 ARP, Request who-has 192.168.2.196 tell _gateway, length 46<br /> 2 12:38:35.523265 IP6 fe80::8ab4:a6ff:fe9d:a6bb > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28<br /> 3 12:38:35.523578 IP6 fe80::8ab4:a6ff:fe9d:a6bb > ip6-allrouters: ICMP6, router solicitation, length 16<br /> 4 12:38:35.523861 ARP, Request who-has 192.168.2.15 tell 192.168.2.170, length 28<br />...<br />...<br />...</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Итак, теперь вы можете видеть, что каждая строка начинается с номера.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q6. Как сделать вывод tcpdump более коротким?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это можно сделать с помощью параметра командной строки -q. Вот как это объясняется на справочной странице утилиты:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #999999;">Быстрый (тихий?) вывод. Выводите меньше протокольной информации, чтобы строки были короче.</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приведен пример этой опции:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjgFmYxctPPKj9PY306EDnepiHYX79nzSsMknXndSbyx5Wg7lNnYNRSH1wJUpOdC3kbIp_ja2DgMVhretSeKwgqPZdIDdHc6KX6f3w_KJAA6FM93Dao6uuvxvnOEfglX7TC77U7w0zc1H6wO9O49ApXRR56Ra3m1qTKwVudZkcdeCAayzEuDBiICH09=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="142" data-original-width="500" src="https://blogger.googleusercontent.com/img/a/AVvXsEjgFmYxctPPKj9PY306EDnepiHYX79nzSsMknXndSbyx5Wg7lNnYNRSH1wJUpOdC3kbIp_ja2DgMVhretSeKwgqPZdIDdHc6KX6f3w_KJAA6FM93Dao6uuvxvnOEfglX7TC77U7w0zc1H6wO9O49ApXRR56Ra3m1qTKwVudZkcdeCAayzEuDBiICH09=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Таким образом, вы можете видеть, что на этот раз в выводе было меньше информации.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q7. Как убрать информацию о временных метках из вывода tcpdump?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для этого используйте параметр командной строки -t. Вот пример команды:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -t -i wlx18a6f713679b</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">А вот вывод:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">listening on wlx18a6f713679b, link-type EN10MB (Ethernet), capture size 262144 bytes<br />IP himanshu.56992 > mails11.telegram.org.https: Flags [.], ack 3090054317, win 965, options [nop,nop,TS val 226976758 ecr 3781653930], length 0<br />IP himanshu.41122 > one.one.one.one.domain: 12755+ [1au] PTR? 22.171.154.149.in-addr.arpa. (56)<br />IP mails11.telegram.org.https > himanshu.56824: Flags [.], ack 273652159, win 1001, options [nop,nop,TS val 3781656472 ecr 226966324], length 0<br />ARP, Request who-has 192.168.2.48 tell _gateway, length 46<br />ARP, Request who-has 192.168.2.135 tell _gateway, length 46<br />...<br />...</pre></div><div style="text-align: justify;">Таким образом, вы можете видеть, что информация о временной метке (которая обычно находится в начале каждой строки) сейчас отсутствует.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q8. Как заставить tcpdump производить детальный вывод?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом случае вы можете использовать параметр командной строки -v. Ниже описано, как справочная страница утилиты объясняет эту опцию:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">tcpdump -v -i [INTERFACE]</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #999999;">Производится более подробный вывод. Например, выводятся время жизни, идентификатор, общая длина и опции IP-пакета. Также команда включает дополнительные проверки целостности пакета, такие как проверка контрольной суммы заголовка IP и ICMP.</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы только что коснулись этой темы, поскольку команда tcpdump предлагает множество параметров командной строки. Чтобы познакомиться с ними поближе, вы можете перейти на справочную страницу утилиты.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.howtoforge.com/linux-tcpdump-command/">Linux tcpdump Command Tutorial for Beginners (8 Examples)</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-33787874005497658222022-02-14T10:54:00.000-08:002022-02-14T10:54:08.692-08:00Как задать время сессии Sudo<div style="text-align: justify;"><span style="font-family: verdana;">При работе с командой sudo для выполнения административных задач в Linux вы, возможно, заметили, что даже если вы предоставили пароль sudo некоторое время назад, через некоторое время вас попросят предоставить его снова. Это происходит из-за ограничения времени сеанса sudo, которое по умолчанию равно 15 минут. Если вы введете команду sudo через 15 минут даже в том же сеансе терминала, вас попросят ввести пароль еще раз. Как администратор Linux, вы, возможно, захотите увеличить или сократить ограничение времени для сеанса sudo по сравнению с пятнадцатью минутами по умолчанию.<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом руководстве описывается, как можно внести очень простые изменения в файл /etc/sudoers, чтобы указать ограничение времени для сеанса sudo. Команды, упомянутые в этой статье, были выполнены в Ubuntu 18; однако, они делают то же самое в более старых версиях Ubuntu.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Задаем время X для сеанса Sudo</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом примере мы изменим ограничение времени нашего сеанса sudo на 10 минут:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Откройте терминал Ubuntu, нажав Ctrl + Alt + T или через Ubuntu Dash.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Так как вам нужно отредактировать файл sudoers, расположенный в папке etc, введите следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: white; border: 1px solid rgb(234, 234, 234); box-sizing: border-box; color: #666666; font-family: "courier 10 pitch", Courier, monospace; font-size: 14px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin-bottom: 20px; margin-top: 0px; outline: 0px; overflow: auto; padding: 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap;">$ sudo visudo</pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEizzI_vOHaKhRqCJnAgTLdTGpG-B6SEjvJdJzt7HLRt-8DfLk6M8gq3WF1cZBbzDHsSBpG0oqflXijMQr9mgDWkagTu-Vxs6EXcIdYZCnF2v-DzV2xLxKfnY3iQe6joGoXFwVZrT48lMd-VxEs29Y5M3JTxAysQ2DAIL8Zf14u2H64yVDdS-YSAkU3y=s291" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="72" data-original-width="291" height="72" src="https://blogger.googleusercontent.com/img/a/AVvXsEizzI_vOHaKhRqCJnAgTLdTGpG-B6SEjvJdJzt7HLRt-8DfLk6M8gq3WF1cZBbzDHsSBpG0oqflXijMQr9mgDWkagTu-Vxs6EXcIdYZCnF2v-DzV2xLxKfnY3iQe6joGoXFwVZrT48lMd-VxEs29Y5M3JTxAysQ2DAIL8Zf14u2H64yVDdS-YSAkU3y" width="291" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вам будет предложено ввести пароль пользователя.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вам наверное интересно, почему мы не открываем файл sudoers, как мы открываем другие текстовые файлы. Ответ в том, что в отличие от других текстовых редакторов, visudo проверяет синтаксис текста, который вы вводите в файл. Это избавляет вас от любых ошибочных изменений, которые могут привести к серьезным последствиям. Например, внесение некорректных изменений в файл sudoers может стоить вам возможности войти в систему как привилегированный пользователь.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Введите свой пароль и нажмите Enter. Файл sudoers откроется в редакторе Nano, так как это текстовый редактор по умолчанию для Ubuntu 18.04.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhawU1YWk6fTMKDkqhY-pX9o9cnqurCPWZBSY_HnEBO7dDZ3pEjz1LuLxPlmJRMmnkwGlzim-K7V8TQLDsJFVJauXs8R5q1WAJKtq306QjaP2LT9mrMeZPaaGpkeDDEINp0dyMUGI9j1rL3l62SW-4IfJuODXBw9A7R0RupO6vIsh6xNVnOgZ7T_sLZ=s735" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="367" data-original-width="735" height="320" src="https://blogger.googleusercontent.com/img/a/AVvXsEhawU1YWk6fTMKDkqhY-pX9o9cnqurCPWZBSY_HnEBO7dDZ3pEjz1LuLxPlmJRMmnkwGlzim-K7V8TQLDsJFVJauXs8R5q1WAJKtq306QjaP2LT9mrMeZPaaGpkeDDEINp0dyMUGI9j1rL3l62SW-4IfJuODXBw9A7R0RupO6vIsh6xNVnOgZ7T_sLZ=w640-h320" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">На скриншоте выше вы можете увидеть следующую строку:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: white; border: 1px solid rgb(234, 234, 234); box-sizing: border-box; color: #666666; font-family: "courier 10 pitch", Courier, monospace; font-size: 14px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin-bottom: 20px; margin-top: 0px; outline: 0px; overflow: auto; padding: 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap;">Defaults env_reset</pre></div><div style="text-align: justify;">Эта строка отвечает за ограничение времени вашей сессии sudo. Вам необходимо внести следующие изменения в эту строку:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: white; border: 1px solid rgb(234, 234, 234); box-sizing: border-box; color: #666666; font-family: "courier 10 pitch", Courier, monospace; font-size: 14px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin-bottom: 20px; margin-top: 0px; outline: 0px; overflow: auto; padding: 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap;">Defaults env_reset, timestamp_timeout=x</pre></div><div style="text-align: justify;">Здесь x - это время в минутах, которое вы можете указать, чтобы установить требуемый лимит времени. Обратите внимание на следующие моменты при установке этого тайм-аута:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы установите время ожидания равным 0, ваша сессия будет длиться всего 0 минут. Это означает, что вам будет предложено вводить пароли для каждой из ваших команд sudo.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы установите это время меньше нуля (отрицательное), команда sudo не будет работать должным образом.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом примере я сокращаю время по умолчанию с 15 минут до 10 минут с помощью следующих изменений в моем файле sudoers:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiEv-LZuIgU3jGDBvbVdVqKkUkMyIMBA_W-X2cMevmmF30-OZ6E95uNW-0NN0iXhUq-CJj63zvLdqj23-zQpLQDLPaTpQcpja5GQhYj0Q1462IZW-xf4Lotc8JKDRvIejsNE_5XXwt_tFStCd5S-Q4Z55LDyrUoNqOZV8UPgbBpGAMRyabyHM9d9DBy=s613" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="274" data-original-width="613" height="286" src="https://blogger.googleusercontent.com/img/a/AVvXsEiEv-LZuIgU3jGDBvbVdVqKkUkMyIMBA_W-X2cMevmmF30-OZ6E95uNW-0NN0iXhUq-CJj63zvLdqj23-zQpLQDLPaTpQcpja5GQhYj0Q1462IZW-xf4Lotc8JKDRvIejsNE_5XXwt_tFStCd5S-Q4Z55LDyrUoNqOZV8UPgbBpGAMRyabyHM9d9DBy=w640-h286" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Нажмите Ctrl + X, чтобы выйти из файла после внесения необходимых изменений. Вам будет задан вопрос, хотите ли вы сохранить измененный файл. Нажмите Y, чтобы сохранить изменения.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjWbAxDarO_rUXcL7mtL8yaoofVWfvvsLq3_ZgyMGplcPhaXxxLqPTDoyzdFYRU8hs9elfVETwf3f_-sZ9oAUnEltszILBvKAl-XUzOFd2UTpFWIief8e8XglWqAUx9qy-tXGgSQGBomXeDxUR32BxPUlF25eV8XGXxHmiH8K77MO6WK1IU-v8dsMD6=s602" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="90" data-original-width="602" height="96" src="https://blogger.googleusercontent.com/img/a/AVvXsEjWbAxDarO_rUXcL7mtL8yaoofVWfvvsLq3_ZgyMGplcPhaXxxLqPTDoyzdFYRU8hs9elfVETwf3f_-sZ9oAUnEltszILBvKAl-XUzOFd2UTpFWIief8e8XglWqAUx9qy-tXGgSQGBomXeDxUR32BxPUlF25eV8XGXxHmiH8K77MO6WK1IU-v8dsMD6=w640-h96" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вам также будет предложено указать имя файла для сохранения. Пожалуйста, нажмите Enter, так как мы не хотим менять имя файла.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQ5dm1K8SnzBiBHKJGV86BCFsaM1ZMd99yua6aD35NlThWtTaDP9GULzKWf1bX5tA9XluG0DWfpaKfZoa4wPfg-pb8MG49ETvfA4U4pYeizFQe5gIH-qYVPxmUnjDOlNxbimXilpYRozxixd5W6L40KMsW-A6QME8rq3xQD4OW3WLu7j9zkMnYllVg=s704" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="70" data-original-width="704" height="64" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQ5dm1K8SnzBiBHKJGV86BCFsaM1ZMd99yua6aD35NlThWtTaDP9GULzKWf1bX5tA9XluG0DWfpaKfZoa4wPfg-pb8MG49ETvfA4U4pYeizFQe5gIH-qYVPxmUnjDOlNxbimXilpYRozxixd5W6L40KMsW-A6QME8rq3xQD4OW3WLu7j9zkMnYllVg=w640-h64" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ваши изменения будут сохранены, и ваш сеанс sudo будет длиться указанное вами время.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Как задать время действия сеанса sudo до закрытия терминала</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">С помощью простой команды вы можете позволить вашему сеансу sudo длиться до тех пор, пока вы не закроете терминал, независимо от того, как долго терминал остается открытым. Вам не нужно будет вводить пароль для любой команды, для которой требуется разрешение sudo после выполнения этой команды:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: white; border: 1px solid rgb(234, 234, 234); box-sizing: border-box; color: #666666; font-family: "courier 10 pitch", Courier, monospace; font-size: 14px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin-bottom: 20px; margin-top: 0px; outline: 0px; overflow: auto; padding: 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap;">$ sudo -s</pre></div><div style="text-align: justify;"><b>Завершение сеанса sudo</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После того, как вы ввели пароль для sudo, вы можете прекратить сеанс sudo даже до истечения срока, указанного в файле sudoers, с помощью следующей простой команды:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: white; border: 1px solid rgb(234, 234, 234); box-sizing: border-box; color: #666666; font-family: "courier 10 pitch", Courier, monospace; font-size: 14px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; line-height: 1.4; margin-bottom: 20px; margin-top: 0px; outline: 0px; overflow: auto; padding: 20px; text-align: start; vertical-align: baseline; white-space: pre-wrap;">$ sudo -k</pre></div><div style="text-align: justify;">Обратите внимание, что эта команда не завершит сеанс, если вы использовали «sudo -s» во время терминального сеанса.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Таким образом, вы можете сократить или увеличить длительность сеанса sudo, внеся изменения в одну строку в файле /etc/sudoers. Вы также можете использовать другие команды, упомянутые в этой статье, чтобы завершить сеанс sudo или продлить его, пока не закончится сеанс терминала.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://vitux.com/how-to-specify-time-limit-for-a-sudo-session/">How to Specify Time Limit for a Sudo Session</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com1tag:blogger.com,1999:blog-5899477667926811092.post-36805600389673150422022-02-11T11:37:00.000-08:002022-02-11T11:37:48.274-08:00Аллигатор Билла Вильямса<div style="text-align: justify;"><span style="font-family: verdana;">Индикатор Аллигатор разработал известный трейдер Билл Вильямс и в основном стал популярен после выхода двух книг «Новые Измерения в Биржевой Торговле» и «Торговый Хаос 2», там же можно найти наиболее полное его описание. Трейдеры знают, что подавляющую часть времени (70-80%) рынки находятся в состоянии торгового диапазона или флета, цены в это время колеблются в определенных границах, и только в 20-30% времени наблюдаются действительно трендовые движения, которые наиболее благоприятны для извлечения прибыли, поскольку изменение цены в это время носит ярко выраженный направленный характер.<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Индикатор Аллигатор как раз и является весьма интересным подходом оценки направления движения рынка и фильтрации периодов отсутствия тренда (бокового диапазона). Его основная цель дать сигнал зарождающегося тренда.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Формула Аллигатора Билла Вильямса:</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Аллигатор является простой комбинацией 3-х обычных скользящих средних разной длины и с разным сдвигом вперед.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Все скользящие средние в индикаторе Аллигатор используют не цену закрытия, а медианную цену.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Median Price = (high + low) / 2</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Где:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">high — максимум данного бара свечи, low — минимум данного бара свечи.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Скользящая средняя 1 называется у Билла Вильямса «Челюсть Аллигатора» – это Линия Баланса для временного периода, который использовался для построения графика. Линия является 13-периодным скользящим средним, сдвинутым на графике на 8 баров вперед. Обычно изображается синим цветом.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Alligators Jaw (челюсть) = Smma (Median Price, 13, 8).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Где Smma — сглаженное скользящее среднее (Smoothed Moving Average, SMMA).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Скользящая средняя 2 называется у Билла Вильямса «Зубы Аллигатора» — это Линия Баланса для значимого временного периода на порядок ниже. Линия является 8-периодным скользящим средним, сдвинутым награфике на 5 баров в будущее. Обычно красная.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Alligators teeth (зубы) = Smma (Median Price, 8, 5)</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Скользящая средняя 3 называется у Билла Вильямса «Губы Аллигатора» – это Линия Баланса для значимого временного периода, который ниже еще на один порядок, чем Линия является 5-периодным скользящим средним, сдвинутым на графике на 3 бара вперед. Зеленая линия.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Alligators Lips (губы) = Smma (Median Price, 5, 3).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для торговли по системе "Аллигатор" нужно найти спящий рынок – ситуацию, в которой линии челюстей, зубов и губ индикатора Alligator все вместе переплетены и двигаются горизонтально. Индикатор Awesome Oscillator должен находиться вблизи уровня 0. Сигналом на вход будет начавшееся движение в одном направлении линий Alligator и гистограммы Awesome Oscillator, подтверждающееся пробитием уровня цены ближайшего фрактала на графике.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Сигнал на покупку по стратегии "Аллигатор"</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Сигнал на покупку появляется, когда после периода "спящего" рынка начинается восходящее движение:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">• Переплетенные линии индикатора Alligator начинают движение вверх и расходятся, аллигатор раскрывает свою пасть вверх, начиная охоту на медведей.</div><div style="text-align: justify;">• Гистограмма индикатора Awesome Oscillator начинает расти из области нулевой линии, столбики гистограммы зеленые.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Точкой для входа будет служить уровень ближайшего фрактала, расположенного выше линий индикатора Alligator – происходит выход вверх из локального ценового диапазона. Первоначально Стоп устанавливается за уровень ближайшего противоположного фрактала, находящегося ниже линий Alligator.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В дальнейшем, при уверенном росте цены, Стоп переносится в безубыток. Основным ориентиром для фиксации прибыли служит красная линия индикатора Alligator. Закрытие свечи ниже красной линии является сигналом для закрытия прибыльной позиции. При резком восходящем импульсе можно зафиксировать прибыль, не дожидаясь потерь на коррекции, ориентируясь на Awesome Oscillator – как только появится снижающийся красный столбик гистограммы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Сигнал на продажу по стратегии "Аллигатор"</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Сигнал на продажу формируется, когда после периода "спячки" рынок начинает движение вниз. Для входа в рынок на продажу должны выполняться следующие условия:</div><div style="text-align: justify;"><ul><li>Переплетенные линии индикатора Alligator начинают расправляться и двигаться вниз – аллигатор раскрывает свою пасть вниз, чтобы съесть зазевавшихся быков.</li><li>Индикатор Awesome Oscillator начинает снижение от нулевой линии, столбики гистограммы красные.</li><li>Цена пробивает уровень ближайшего локального фрактала, расположенного ниже всех трех линий индикатора.</li></ul></div><div style="text-align: justify;">Стоп устанавливается за противоположный фрактал, расположенный выше линий индикатора Alligator.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После открытия позиции на покупку осуществляется сопровождение сделки по следующей схеме: Стоп переносится в безубыток после достижения красным мувингом Alligator цены открытия сделки. При спокойном направленном движении прибыль фиксируем после разворота цены вверх и закрытия свечи выше красного мувинга Alligator. Если прошло резкое импульсное падение, профит можно зафиксировать раньше, когда Awesome Oscillator покажет локальный разворот вверх – появится растущий зеленый столбик гистограммы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><div style="background-color: white; color: #444444;"><a href="https://distrland.blogspot.com/2021/02/blog-post_22.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Простое скользящее среднее</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/03/exponential-moving-average-ema.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Экспоненциальное скользящее среднее</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/04/weighted-moving-average-wma.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Взвешенное скользящее среднее</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/04/volume-weighted-moving-average-vwma.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Взвешенное по объёму скользящее среднее</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/06/ama-kama-amka.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Адаптивная скользящая средняя Кауфмана</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/07/dema.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Двойная экспоненциальная скользящая средняя (DEMA)</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/07/triple-exponential-moving-average-tema.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Тройная экспоненциальная скользящая средняя - Triple exponential moving average (TEMA)</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/08/smoothed-moving-average-ssma.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Сглаженная скользящая средняя - Smoothed Moving Average (SSMA)</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/08/sine-weighted-moving-average-swma.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Синус-взвешенная скользящая средняя - Sine-Weighted Moving Average (SWMA)</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/09/triangular-moving-average.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Треугольная скользящая средняя</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/10/chandes-variable-index-dynamic-average.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Скользящее среднее с динамическим периодом усреднения Чанда</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/11/fractal-adaptive-moving-average-frama.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Фрактально-адаптивная скользящая средняя - Fractal Adaptive Moving Average (FRAMA)</a><br style="text-align: start;" /><a href="https://distrland.blogspot.com/2021/12/hull-moving-average-hma.html" style="color: #3778cd; text-align: start; text-decoration-line: none;">Скользящая средняя Халла - Hull Moving Average (HMA)</a></div><div style="background-color: white; color: #444444;"><a href="https://distrland.blogspot.com/2021/12/wwma.html" style="color: #3778cd; text-decoration-line: none;">Скользящая средняя Уэллса Уайлдера (WWMA)</a></div><div style="background-color: white;"><span style="color: #444444;"><a href="https://distrland.blogspot.com/2022/01/variable-moving-average-vma.html">Переменная скользящая средняя (Variable Moving Average, VMA)</a></span></div></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-3195663235562680162022-02-10T11:19:00.000-08:002022-02-10T11:19:23.557-08:00Cutefish OS — впечатляющий дистрибутив Linux в разработке<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGBZr6CAa2dDvobB4MCjQzC_uLVcsqr9EKUs8WiOpYLE2JeCqX4xbX0hAlAvxIddxfME98qZTtNkNTNAZfnzOMDYuUOfUT4iY7ssYS1Qw-gJCn_A2Sx5HRfJuMyisj5vZVOkc7q-vXUGx4G4xSghdvMRxdsXtKirizT-IIJmyk9xqgu3yW-ZnatxA8=s1476" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="837" data-original-width="1476" height="362" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGBZr6CAa2dDvobB4MCjQzC_uLVcsqr9EKUs8WiOpYLE2JeCqX4xbX0hAlAvxIddxfME98qZTtNkNTNAZfnzOMDYuUOfUT4iY7ssYS1Qw-gJCn_A2Sx5HRfJuMyisj5vZVOkc7q-vXUGx4G4xSghdvMRxdsXtKirizT-IIJmyk9xqgu3yW-ZnatxA8=w640-h362" width="640" /></a></div><div style="text-align: justify;"><br /></div><span style="font-family: verdana;"><div style="text-align: justify;">Мы рассматриваем дистрибутив Cutefish OS Linux, в котором есть потрясающий рабочий стол Cutefish.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Cutefish — это бесплатный дистрибутив Linux с открытым исходным кодом, основанный на Debian. Эта ОС в настоящее время находится в стадии разработки и включает в себя новый собственный рабочий стол Cutefish.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Сама ОС основана на Debian и Ubuntu, однако основным преимуществом является сам рабочий стол, построенный на Qt Quick, QML и C++.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">На момент написания этой статьи рабочий стол также все еще находился на очень ранней стадии разработки. Следовательно, вы можете не получить все функции, которые вы ожидаете от среды рабочего стола и ее приложений.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Тем не менее, давайте посмотрим на функции в целом и на то, к чему они стремятся.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Особенности ОС Cutefish</b></div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Текущая версия</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">На момент написания этого поста последней версией Cutefish OS была 0.6 BETA. Этот выпуск основан на ядре Linux 5.10 и Debian 11 Bullseye.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Прежде чем я углублюсь в детали, вот новые обновления в этой бета-версии:</div><div style="text-align: justify;"><ul><li>В настройках добавлены новые параметры прокси. Также доступны настройки звука и Bluetooth.</li><li>Изменения в управлении питанием дают вам выбор режимов производительности и энергосбережения.</li><li>Файловый менеджер по умолчанию — это собственная утилита. Файловый менеджер предлагает функцию перетаскивания с возможностью отображения/скрытия файлов.</li><li>На экране блокировки теперь отображаются элементы управления мультимедиа, показывающие, что музыка воспроизводится.</li><li>Предварительно загруженные приложения получают последнюю стабильную версию. Предварительно загруженные приложения GNOME основаны на GNOME 3.38.</li></ul></div><div style="text-align: justify;">Вы можете скачать ISO-образ по ссылке ниже.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://en.cutefishos.com/">https://en.cutefishos.com/</a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Обзор ОС Cutefish</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Сама ОС Cutefish пытается занять уникальное положение на уже фрагментированной территории дистрибутивов Linux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Она определенно пытается выглядеть очаровательно, в значительной степени напоминая macOS. Это тоже нестандартный опыт. Вам не нужны дополнительные темы и настройки, чтобы сделать ее похожей на macOS.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Установка</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Данная ОС использует Calamares. Это стабильный установщик, так что никаких сюрпризов. Тестовая установка прошла нормально, без сбоев. GRUB хорошо устанавливается в новой системе и сохранил двойную загрузку.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Внешний вид и поведение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Она определенно пытается выглядеть как macOS. Верхняя панель, нижний док и иконки + стоковые обои.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Экран входа и блокировки аккуратный и чистый. У вас есть дата, время, учетные записи пользователей и список паролей. Это модифицированная версия SDDM.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhJ4kF82aKamiw4ce6ih4sO8dlmkF2DfnF1EWrHi6TBnXZ9tVfkOD8UjlvHMDAbK0-_ldBAN_6ezDL2YHWEFOF8vhNfvhwAloAKkZoQUeumEBh4DlKD7kIb9o6NyT94zuhQzfVKw94UJSN1d8B5HdqeSI0Z-pisLDI8xpjnXbfJzsqaJUPhMFL2_Fw2=s1479" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="834" data-original-width="1479" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEhJ4kF82aKamiw4ce6ih4sO8dlmkF2DfnF1EWrHi6TBnXZ9tVfkOD8UjlvHMDAbK0-_ldBAN_6ezDL2YHWEFOF8vhNfvhwAloAKkZoQUeumEBh4DlKD7kIb9o6NyT94zuhQzfVKw94UJSN1d8B5HdqeSI0Z-pisLDI8xpjnXbfJzsqaJUPhMFL2_Fw2=w640-h360" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Нижний док хорошо спроектирован. Иконки отличные. Слева у вас есть меню приложений — очень похоже на GNOME. Однако рабочих столов на данный момент нет. Меню приложений большое, в нем четыре строки приложений со строкой поиска вверху. Нижний док не исчезает при открытии меню приложений.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgWLuayuo0JR8gwMFTcdionUqo4E-COrM-fsWzWrKsevYlqcw8RH74X7i1zmZvME00oGpFTgB6TXc0eH4csWzP1_8gPIQRm3SlCCw2rjS6LSdC1-JLb_VmQ0lPhg2UPpoFXbHPL7PvBSC4P0PXiWGOXNub0Lu-1qurr9bF7WHO_l9iwZ0InfWp4TwMw=s1479" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="840" data-original-width="1479" height="364" src="https://blogger.googleusercontent.com/img/a/AVvXsEgWLuayuo0JR8gwMFTcdionUqo4E-COrM-fsWzWrKsevYlqcw8RH74X7i1zmZvME00oGpFTgB6TXc0eH4csWzP1_8gPIQRm3SlCCw2rjS6LSdC1-JLb_VmQ0lPhg2UPpoFXbHPL7PvBSC4P0PXiWGOXNub0Lu-1qurr9bF7WHO_l9iwZ0InfWp4TwMw=w640-h364" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Системный трей и область уведомлений выглядят чистыми и очень красивыми. Всплывающие окна уведомлений имеют четко определенную форму с закругленными углами. Есть регуляторы громкости, время (без даты!) и ярлыки для Wi-Fi, параметры переключения темного режима на панели задач.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiXFQj8xQ072rP7dB5yv6CbU3rnxsoJHqVnrNyNqFhVU3FKt0AJxvsI8y8rIp90Af5mNp2wmlMl6I-cw9ywtu9YsfjlB6ipxzdr4JtD5ziY3ADBEt0BxjaHcTZBID6vpM6HTi6_8ghNXP0Ha6-e99Q9qupYFNw7D0mQw4AHDETM8-etvHtfzYVf304f=s1485" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="836" data-original-width="1485" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEiXFQj8xQ072rP7dB5yv6CbU3rnxsoJHqVnrNyNqFhVU3FKt0AJxvsI8y8rIp90Af5mNp2wmlMl6I-cw9ywtu9YsfjlB6ipxzdr4JtD5ziY3ADBEt0BxjaHcTZBID6vpM6HTi6_8ghNXP0Ha6-e99Q9qupYFNw7D0mQw4AHDETM8-etvHtfzYVf304f=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Приложения и глобальное меню</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда разработчиков также предлагает собственные приложения, такие как файловый менеджер, и это хорошо. Хотя у нас уже есть отличные файловые менеджеры в экосистеме Linux. Thunar, Dolphin, Nautilus — все они зрелые и хорошо развиты. Но другой вариант также приветствуется в экосистеме Linux, если он соответствует основной философии самой ОС.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Возможно, лучшая особенность этой ОС — встроенное глобальное меню. На данный момент ни один дистрибутив Linux не предоставляет его из коробки. В рабочем столе Unity есть эта функция с HUD. Но не заставляйте меня начинать знакомство с миром Linux с Unity.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEif9BG3JBS21G_-wRBtQ0DJMznDEzl2bVqn4v2W6XiibE3CJcx5Su8QLsWJvYrMNw1Vj4MRxf2D_ZU8aBePK3PyKus_yw8xTxy19LEnrZQpPxdv-ThyQuzWomns6n2ERgKZ1oPImLgjWBn8rC2cLtWFzj5bHTDSkJfbC6P3sis0tIULRyhbdsjqlkYJ=s1411" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="795" data-original-width="1411" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEif9BG3JBS21G_-wRBtQ0DJMznDEzl2bVqn4v2W6XiibE3CJcx5Su8QLsWJvYrMNw1Vj4MRxf2D_ZU8aBePK3PyKus_yw8xTxy19LEnrZQpPxdv-ThyQuzWomns6n2ERgKZ1oPImLgjWBn8rC2cLtWFzj5bHTDSkJfbC6P3sis0tIULRyhbdsjqlkYJ=w640-h360" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Тем не менее, глобальное меню хорошо реализовано в предварительно загруженных приложениях, таких как файловый менеджер, GEdit, Terminal, Gnome Photo Viewer. Они выглядят хорошо.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Но некоторые приложения, такие как LibreOffice, не подходят к нему с точки зрения внешнего вида и отсутствия интеграции с глобальным меню.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Тем не менее, закругленные углы хорошо смотрятся во всех приложениях. Хотя я считаю, что настройка для этих незначительных изменений должна быть включена в панель настроек в будущем.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhnqzKRATvZ_mic6Tr9QG3j4UujEhTF-NFVGRnwe4DY7msyZCVRUsFWHd1grs00i78ENkeP9-vU-TRIVp5zA4_j0i8LK_6n4yExgFez7d4Us25o4yWSEmm8sj7CRYeSGFoUU36mqwZ7ILksKAnnyX6duDJsg6ePP-GQUJ75HWJFRjx6ejXpXG54flpy=s1107" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="833" data-original-width="1107" height="482" src="https://blogger.googleusercontent.com/img/a/AVvXsEhnqzKRATvZ_mic6Tr9QG3j4UujEhTF-NFVGRnwe4DY7msyZCVRUsFWHd1grs00i78ENkeP9-vU-TRIVp5zA4_j0i8LK_6n4yExgFez7d4Us25o4yWSEmm8sj7CRYeSGFoUU36mqwZ7ILksKAnnyX6duDJsg6ePP-GQUJ75HWJFRjx6ejXpXG54flpy=w640-h482" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Поскольку это все еще находится в стадии разработки, пока нет ни одной стабильной версии, мы можем надеяться, что все приложения смогут хорошо интегрироваться с этим новым рабочим столом.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Производительность</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Что касается производительности, то она достойная. Система использует диспетчер отображения SDDM и оконный менеджер KWin. Я установил ее в virt-manager и запускал более 10 часов. Она потребляет ~ 950 МБ ОЗУ, а загрузка ЦП колеблется от 1% до 2% в состоянии простоя. Однако она может увеличиваться в зависимости от вашей рабочей нагрузки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Отзывчивость — я почувствовал очень небольшую задержку при открытии списка приложений, минимизации и раскрытии окон. Может ничего серьезного, но стоит отметить.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чего не хватает в ОС Cutefish, если вы долгое время пользуетесь Linux</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом рабочем столе многого не хватает, если сравнивать его с современными хорошо разработанными и зрелыми рабочими столами. Многие из тех функций, которые мы считаем само собой разумеющимися в KDE или GNOME, пока недоступны.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вот некоторые функции этого рабочего стола или дистрибутива, которые, как мне кажется, еще потребуются перед первым стабильным выпуском.</div><div style="text-align: justify;"><ul><li>рабочие пространства или несколько рабочих столов;</li><li>варианты выбора значков, курсоров, тем;</li><li>хорошая интеграция с темами QT или GTK;</li><li>вкладки в файловом менеджере;</li><li>собственное сжатие файлов в файловом менеджере;</li><li>приложение календаря с реализацией на панели задач;</li><li>дата в системном трее;</li><li>опции для настройки параметров рабочего стола Cutefish (например, радиус скругления углов и т. д.);</li><li>центр программного обеспечения, установщик приложений из Ubuntu или Debian;</li><li>поддержка Flatpak или Snap;</li><li>больше улучшений производительности в отношении общей отзывчивости рабочего стола;</li><li>поддержка Wayland? Может быть.</li></ul></div><div style="text-align: justify;">Огромный список желаний, не так ли?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Подводя итог обзору Cutefish, можно сказать, что он еще совсем не готов для ежедневного использования. Но если вы хотите поэкспериментировать, то можете попробовать. Эти «еще не реализованные» функции блокируют правильную продуктивную работу. Однако, являясь дистрибутивом на основе Debian/APT, он равно позволяет установить буквально все, что вам нужно, через терминал из официального репозитория Debian.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">У него также есть версия на базе Ubuntu в разработке (не уверен, что она официальная), которую вы можете попробовать, если вам не нравится, что Debian стар и консервативен. И да, в репозитории Arch также есть <a href="https://archlinux.org/groups/x86_64/cutefish/">десктопный пакет Cutefish</a>, который вы можете установить и протестировать в Arch Linux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Я надеюсь, что наиболее часто используемые функции будут реализованы в будущем, чтобы он стал хорошей альтернативой KDE и GNOME Desktop.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Что вы думаете об этом дистрибутиве и рабочем столе Cutefish? Станет ли он популярным рабочим столом, таким как GNOME или KDE Plasma? Дайте мне знать в поле для комментариев ниже.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.debugpoint.com/2021/11/cutefish-os-review-2021/">Cutefish OS Review – Impressive Linux Distribution in the Making</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-1229336679977722972022-02-09T12:11:00.000-08:002022-02-09T12:11:40.526-08:00Лучшие бесплатные альтернативы Apple Final Cut Pro с открытым исходным кодом<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEga0xPQAFsz6xWc0f9Ng7m8grEtht1Dz5PFLkYHciFA8roDI55DiJNrbx7_gHhZy9F5YdcY1jCOsSaGPMb4Apk-ka95-n7HJD1mOfU91avr43y_64nkrTu7v0WzkEcWIIX3uXFVd9ZB9nAYAHlKOf3ExiOZqJ3-bDSdGpTx6YXZ_21Ofd891WefqHa3=s700" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="311" data-original-width="700" height="284" src="https://blogger.googleusercontent.com/img/a/AVvXsEga0xPQAFsz6xWc0f9Ng7m8grEtht1Dz5PFLkYHciFA8roDI55DiJNrbx7_gHhZy9F5YdcY1jCOsSaGPMb4Apk-ka95-n7HJD1mOfU91avr43y_64nkrTu7v0WzkEcWIIX3uXFVd9ZB9nAYAHlKOf3ExiOZqJ3-bDSdGpTx6YXZ_21Ofd891WefqHa3=w640-h284" width="640" /></a></div><div style="text-align: justify;"><br /></div><span style="font-family: verdana;"><div style="text-align: justify;">Apple, Microsoft, Alphabet (родительская компания Google), Amazon и Facebook доминируют в сфере технологий. Их доминирование настолько велико, что на их долю приходится более 20% индекса S&P 500.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В аппаратном и программном обеспечении Apple есть чем восхищаться. Apple производит великолепное (хотя и дорогое) оборудование. За прошедшие годы ключевыми достижениями стали iPhone, iPad, iPod и MacBook Air. Компания разрабатывает собственное оборудование и программное обеспечение. Это дает им возможность создавать операционную систему и набор приложений, адаптированных и оптимизированных для их оборудования. Apple также управляет платформами распространения мультимедиа Apple Music и Apple TV.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Mac OS X - это собственная операционная система Apple для линейки компьютеров Macintosh. Ее интерфейс, известный как Aqua, тщательно отполирован и построен на основе производной BSD (Darwin). Apple разрабатывает целый ряд проприетарных приложений для своей системы. Это программное обеспечение недоступно для Linux, и нет никаких перспектив изменения этой позиции.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В 2020 году Apple начала переход на железо Apple, используя 64-битные процессоры Apple M1 на базе ARM на новых компьютерах Mac. Может быть, сейчас идеальное время, чтобы уйти от мира проприетарных решений Apple и перейти на сцену Linux с открытым исходным кодом.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Final Cut Pro - это коммерческое проприетарное приложение для редактирования видео, которое позволяет пользователям захватывать и передавать видео, редактировать, обрабатывать видео и конвертировать его в самые разные форматы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Каковы лучшие бесплатные альтернативы с открытым исходным кодом?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>1. Видеоредактор OpenShot</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.linuxlinks.com/openshot/">OpenShot Video Editor</a> разработан, чтобы быть простым в использовании, быстрым в освоении и удивительно мощным видеоредактором.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">OpenShot может читать и записывать большинство форматов видео и изображений. Он поставляется с мощным фреймворком анимации по ключевым кадрам, а также с неограниченным количеством ключевых кадров и возможностями анимации. Есть неограниченное количество дорожек/слоев, более 400 видеопереходов с предварительным просмотром в реальном времени, расширенная шкала времени, точная подгонка кадров, микширование и редактирование звука и многое другое.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjzLImlhkUS0lF1CRTwhDJqSJqSANFTBkL4_X-TDr7_Iex1gb6KqhHkozmXZGBstfs4nvtVHFxp0yIhd5mmlJAWcD1MoD0lYvZOrsaPiPjG5p72UqrM8vyS9l3UDeuJw04DkVxSBoRFsukQNxJ28GMBz6DbiQnnhCdnk8fLPfQsuYs5WMlHtUgp1KEv=s975" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="637" data-original-width="975" height="418" src="https://blogger.googleusercontent.com/img/a/AVvXsEjzLImlhkUS0lF1CRTwhDJqSJqSANFTBkL4_X-TDr7_Iex1gb6KqhHkozmXZGBstfs4nvtVHFxp0yIhd5mmlJAWcD1MoD0lYvZOrsaPiPjG5p72UqrM8vyS9l3UDeuJw04DkVxSBoRFsukQNxJ28GMBz6DbiQnnhCdnk8fLPfQsuYs5WMlHtUgp1KEv=w640-h418" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он не предлагает всех функциональных возможностей по сравнению с Final Cut Pro. Но для многих из вас он предлагает отличную альтернативу для редактирования видео. И он находится в стадии активной разработки с добавлением новых функций.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>2. Kdenlive</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.linuxlinks.com/Kdenlive/">Kdenlive</a> - еще один потрясающий видеоредактор с открытым исходным кодом.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он предлагает все необходимое, включая редактирование многодорожечного видео, поддерживает практически все аудио и видео форматы напрямую, предлагает множество эффектов и переходов и многое другое.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg8zkXtk1COVNh1a3sFwhZE9XeOTvM8KxudhVMH0wfhqdamacucFgDPsjFWSy2pe3o4mcIcJbNvS6MawC1zTocHcECd7WGLlhfXMP9o4kMFaYSOHtuz7zquxCFtCMjlvnpu4d8HxYoFGSVqX83EnEg4bJpo7wbfJXcdVuZxDrKWC9AQay9YDabM8F3L=s768" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="432" data-original-width="768" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEg8zkXtk1COVNh1a3sFwhZE9XeOTvM8KxudhVMH0wfhqdamacucFgDPsjFWSy2pe3o4mcIcJbNvS6MawC1zTocHcECd7WGLlhfXMP9o4kMFaYSOHtuz7zquxCFtCMjlvnpu4d8HxYoFGSVqX83EnEg4bJpo7wbfJXcdVuZxDrKWC9AQay9YDabM8F3L=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>3. Shotcut</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.linuxlinks.com/shotcut/">Shotcut</a> - еще один мощный кроссплатформенный видеоредактор. Как и Kdenlive, он основан на великолепных библиотеках FFmpeg и поэтому поддерживает сотни аудио- и видеоформатов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Нам нравится интерфейс программы и поддержка железа. Поддерживается аппаратное кодирование AMD, Intel и NVIDIA, обработка изображений на базе графического процессора OpenGL, поддерживается широкий спектр устройств захвата. Также имеется многоядерная параллельная обработка изображений.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgVJ6gKmVQ1lQMiZQ3liIk7LBd1e0lzkty_JaLEVgqwUuoM0poyIsLHozMZxvCaLrvhOz00fa2rfa6RrQ7rv_NzJcSfByX85JmSeOYEl00c1iZ4ufamnMcEQPjwjJ70Il3yS8Jg5i8XdaKS3lSRlPi-NTwzGmAmT1vouQOZRY0uNMORjqwF_pbVeaKq=s765" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="297" data-original-width="765" height="248" src="https://blogger.googleusercontent.com/img/a/AVvXsEgVJ6gKmVQ1lQMiZQ3liIk7LBd1e0lzkty_JaLEVgqwUuoM0poyIsLHozMZxvCaLrvhOz00fa2rfa6RrQ7rv_NzJcSfByX85JmSeOYEl00c1iZ4ufamnMcEQPjwjJ70Il3yS8Jg5i8XdaKS3lSRlPi-NTwzGmAmT1vouQOZRY0uNMORjqwF_pbVeaKq=w640-h248" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.linuxlinks.com/best-free-open-source-alternatives-apple-final-cut-pro/">Best Free and Open Source Alternatives to Apple Final Cut Pro</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-67585043208230260622022-02-08T12:29:00.000-08:002022-02-08T12:29:36.159-08:00s-tui: консольная утилита для мониторинга температуры, частоты, мощности и загрузки процессора в Linux<div style="text-align: justify;"><span style="font-family: verdana;">По умолчанию каждый администратор Linux использует lm_sensors для контроля температуры процессора.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">lm_sensors (Linux monitoring sensors) - это бесплатное приложение с открытым исходным кодом, которое предоставляет утилиты и драйверы для мониторинга температуры, напряжения и скорости вращения вентиляторов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это утилита командной строки, и если вы ищете альтернативные инструменты, я бы предложил вам посмотреть на s-tui.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это пользовательский интерфейс для Stress, который помогает администратору просматривать температуру процессора в цветах.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Что такое s-tui?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">s-tui - это консольный интерфейс для мониторинга вашего компьютера. s-tui позволяет графически контролировать температуру процессора, частоту, мощность и загрузку из терминала. Также он показывает падение производительности, вызванное перегревом, требует минимальных ресурсов и не требует X-сервера. Он был написан на Python и требует привилегий root для использования.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">s-tui - это автономное приложение, которое может работать «из коробки» и не нуждается в конфигурационных файлах для управления основными функциями. s-tui использует psutil для проверки информации о вашем оборудовании. Если ваше оборудование не поддерживается, вы можете не увидеть всю информацию.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Запуск s-tui от имени root дает доступ к максимальной частоте Turbo Boost, доступной для вашего процессора при нагрузке на все ядра. Он использует утилиту Stress в фоновом режиме для проверки того, что температура не превышает допустимый диапазон, загружая вашу системами определенными типами вычислительных нагрузок.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Запуск разогнанного ПК - это нормально, пока он стабилен и температура его компонентов не превышает допустимого диапазона. Существует несколько программ для оценки стабильности системы посредством стресс-тестирования системы и, соответственно, уровня разгона.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Установка s-tui в Linux</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он написан на Python, и установка с помощью pip является рекомендуемым способом установки s-tui в Linux. Убедитесь, что в вашей системе установлен пакет python-pip. Если нет, используйте следующую команду для его установки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для Debian/Ubuntu используйте команду Apt или Apt-Get.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo apt install python-pip stress</pre></div><div style="text-align: justify;">Для Archlinux используйте команду Pacman.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo pacman -S python-pip stress</pre></div><div style="text-align: justify;">Для Fedora используйте команду DNF.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo dnf install python-pip stress</pre></div><div style="text-align: justify;">Для CentOS/RHEL используйте команду YUM.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo yum install python-pip stress</pre></div><div style="text-align: justify;">Для openSUSE используйте команду Zypper.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo zypper install python-pip stress</pre></div><div style="text-align: justify;">Наконец, выполните приведенную ниже команду для установки s-tui:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для Python 2.x:</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo pip install s-tui</pre></div><div style="text-align: justify;">Для Python 3.x:</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo pip3 install s-tui</pre></div><div style="text-align: justify;"><b>Запуск s-tui</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как я уже говорил в начале статьи, для получения всей информации из вашей системы требуются права суперпользователя. Просто выполните следующую команду для запуска s-tui.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ sudo s-tui</pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjs2lUR-tAPVw8r4NUQh6MLbqq4ulEhaAmqqf5-hEH7gEO8Y7U0732TABDpifnAbY9wGROeAcCYeAaAk57CktFHQmgz85zSIzFLkoNAn8fno_FEuUHkKCqxM4asqoL8x-MoyTAcREKAaRasrIfYfAXE24AipMte1Oyi3FOR4wQINpjx3s_gsXknC4so=s2272" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1948" data-original-width="2272" height="442" src="https://blogger.googleusercontent.com/img/a/AVvXsEjs2lUR-tAPVw8r4NUQh6MLbqq4ulEhaAmqqf5-hEH7gEO8Y7U0732TABDpifnAbY9wGROeAcCYeAaAk57CktFHQmgz85zSIzFLkoNAn8fno_FEuUHkKCqxM4asqoL8x-MoyTAcREKAaRasrIfYfAXE24AipMte1Oyi3FOR4wQINpjx3s_gsXknC4so=w517-h442" width="517" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По умолчанию он включает аппаратный мониторинг и выбирает опцию «Stress» для проведения стресс-теста в вашей системе.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNAJNE5-QxKjcUYtDGLkcHrIFUmwwXwRFHjwGU-tDrtZuXCHjoIyt6mKaelYfrNPsljh2pNHq9zWhboXC0CBcOlgds-bzyA2ivAg2oUhvJRyf2zUNaO6lpO77-NgK8owRHOAWS9HzNIwzvVftjfF51hJGOjxEzBPxECvfSd80eIpSGu1_NzB2kmu7A=s2272" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1948" data-original-width="2272" height="468" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNAJNE5-QxKjcUYtDGLkcHrIFUmwwXwRFHjwGU-tDrtZuXCHjoIyt6mKaelYfrNPsljh2pNHq9zWhboXC0CBcOlgds-bzyA2ivAg2oUhvJRyf2zUNaO6lpO77-NgK8owRHOAWS9HzNIwzvVftjfF51hJGOjxEzBPxECvfSd80eIpSGu1_NzB2kmu7A=w546-h468" width="546" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы проверить другие параметры, зайдите на страницу справки.</div><div style="text-align: justify;"><pre style="background: rgb(238, 238, 238); box-sizing: inherit; color: #404040; font-family: "courier 10 pitch", Courier, monospace; font-size: 0.9375rem; line-height: 1.6; margin-bottom: 1.6em; max-width: 100%; overflow: auto; padding: 1.6em; text-align: start;">$ s-tui --help</pre></div><div style="text-align: justify;">Оригинал: s-tui: <a href="https://www.2daygeek.com/s-tui-stress-terminal-ui-monitor-linux-cpu-temperature-frequency/">A Terminal Tool To Monitor CPU Temperature, Frequency, Power And Utilization In Linux</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-91663761148430198612022-02-07T11:17:00.000-08:002022-02-07T11:17:47.045-08:00Команда ss для начинающих<div style="text-align: justify;"><span style="font-family: verdana;">Когда дело доходит до доступа к информации, связанной с сокетами, в командной строке Linux, первым инструментом, который приходит на ум, является netstat. Однако есть другая утилита, которая может сделать эту работу.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Она называется ss. В этом руководстве мы обсудим основы использования этой утилиты, используя несколько простых для понимания примеров. Все приведенные здесь примеры были протестированы на машине с Ubuntu 18.04 LTS.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Команда ss</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда ss в Linux позволяет вам исследовать сокеты. Ниже приводится ее синтаксис:</div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss [options] [ FILTER ]</pre></div><div style="text-align: justify;">И вот что говорится на странице руководства этой утилиты:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><span style="color: #666666;">ss используется для вывода статистики сокетов. Она позволяет отображать информацию, аналогичную netstat.</span></i></div><div style="text-align: justify;"><i><span style="color: #666666;">Она может отображать больше информации о TCP и его состоянии, чем другие утилиты.</span></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приведены примеры в стиле вопросов и ответов, которые должны дать вам лучшее представление о том, как работает команда ss.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q1. Как использовать команду SS?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В самом простом виде вы можете использовать команду ss, выполнив ее без параметров.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приведен вывод команды, созданной в моем случае:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiNufM_2tp1gJWkwSohlEfm8kWiDSdB-JnraC3lswtb97vlzp5criG2nUuxWoPamzbHQ-Jflf5MDFAuBh7rIWGA6ORAjfCOqhE9BLZEaGpvHBtvkPpklZ7anQUKb6p0Ue-k-0K9dBhyGur6XfJZAAnH6L1qX-uwoQnvwUP9hynHnhrMf9Q5l4LDDaLo=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="265" data-original-width="500" src="https://blogger.googleusercontent.com/img/a/AVvXsEiNufM_2tp1gJWkwSohlEfm8kWiDSdB-JnraC3lswtb97vlzp5criG2nUuxWoPamzbHQ-Jflf5MDFAuBh7rIWGA6ORAjfCOqhE9BLZEaGpvHBtvkPpklZ7anQUKb6p0Ue-k-0K9dBhyGur6XfJZAAnH6L1qX-uwoQnvwUP9hynHnhrMf9Q5l4LDDaLo=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вы можете заметить, что в выводе по умолчанию ss отображает сокеты с установленными соединениями.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q2. Как заставить ss не выводить строку заголовка?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это можно сделать с помощью параметра командной строки -H.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -H</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">На следующем снимке экрана показан этот параметр командной строки в действии:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg5ncs383qguadzceACb8oJ9H_4qEUdRTC5kdgBmsQmDDDDwjQRphEGIr-Ni9dQ6FyJMdZ0QpERXkZG3602FCUi4gDcRgK0wckkh8s-o7eEPMZWMbIeC7p-RBVIw4N58l5mI8Ii26ancxD3PpkqpIgjGuf3LNzUpQizTAFkh3wa2Ectuctr-RThr0KK=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="256" data-original-width="500" src="https://blogger.googleusercontent.com/img/a/AVvXsEg5ncs383qguadzceACb8oJ9H_4qEUdRTC5kdgBmsQmDDDDwjQRphEGIr-Ni9dQ6FyJMdZ0QpERXkZG3602FCUi4gDcRgK0wckkh8s-o7eEPMZWMbIeC7p-RBVIw4N58l5mI8Ii26ancxD3PpkqpIgjGuf3LNzUpQizTAFkh3wa2Ectuctr-RThr0KK=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вы можете видеть, что строка заголовка в этом случае отсутствует.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q3. Как заставить ss отображать как слушающие, так и не слушающие сокеты?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это можно сделать с помощью параметра командной строки -a.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -a</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Обратите внимание, что слушающие сокеты по умолчанию опущены, поэтому использование -a заставляет ss включать их в вывод. Однако если вы хотите, чтобы ss отображал только слушающие сокеты, используйте параметр командной строки -l.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -l</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q4. Как заставить ss показывать процессы с помощью сокетов?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы хотите, чтобы команда ss показывала информацию о процессе вместе с другой информацией, которую она уже генерирует в выходных данных, используйте параметр командной строки -p.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -p</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Следующий скриншот показывает вывод в моем случае:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjCSuRwDBY4kd8zUdEvGyBDnHQsRXV4jJ-x3LIZdhTeF1zxE5sCgKIFuTGVkB2uSVAl9kDTJD6HeyYeNik9DEta3OsifXPdBjnrycVFCeysiM0eRd6s8HtJkHOOpl8jCb83JP0qBviMqMZ7PquDGRKdeO5lkXVmSUjBHRhB-ixK9z5IlCHx3hCz35-A=s500" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="274" data-original-width="500" src="https://blogger.googleusercontent.com/img/a/AVvXsEjCSuRwDBY4kd8zUdEvGyBDnHQsRXV4jJ-x3LIZdhTeF1zxE5sCgKIFuTGVkB2uSVAl9kDTJD6HeyYeNik9DEta3OsifXPdBjnrycVFCeysiM0eRd6s8HtJkHOOpl8jCb83JP0qBviMqMZ7PquDGRKdeO5lkXVmSUjBHRhB-ixK9z5IlCHx3hCz35-A=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вы можете видеть, что информация о процессе также отображается в выходных данных.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q5. Как заставить ss выводить сводную информацию?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы не хотите видеть вывод, который команда ss производит по умолчанию, есть опция, с помощью которой вы можете попросить ss составить небольшую сводку по информации, которую она анализирует.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это резюме можно получить с помощью параметра командной строки -s:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -s</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Например, ниже приводится краткое резюме в моем случае:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">Total: 1334 (kernel 0)<br />TCP: 41 (estab 35, closed 3, orphaned 0, synrecv 0, timewait 3/0), ports 0<br /><br />Transport Total IP IPv6<br />* 0 - - <br />RAW 1 0 1 <br />UDP 7 5 2 <br />TCP 38 37 1 <br />INET 46 42 4 <br />FRAG 0 0 0</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q6. Как заставить ss отображать только сокеты IPv4 или IPv6?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это можно сделать с помощью параметров -4 и -6.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Например, чтобы ss отображала только сокеты IPv4, выполните следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -4</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Аналогично для IPv6 выполните следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre class="command" style="background-color: #f9f9f9; border-radius: 4px; border: 1px dashed rgb(47, 111, 171); box-sizing: border-box; font-family: "Courier New", Courier, mono; font-size: 16px; font-style: italic; line-height: 1.1em; margin-bottom: 10px; margin-top: 10px; overflow-wrap: break-word; overflow: auto; padding: 1em; text-align: start; white-space: pre-wrap; word-break: break-all;">ss -6</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Q7. Как заставить ss отображать только сокеты TCP или UDP?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Здесь вы можете использовать различные параметры командной строки: -t для TCP и -u для UDP.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ниже приводится полезная выдержка из справочной страницы команды ss.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><pre style="background-color: whitesmoke; border-color: rgb(204, 204, 204); border-radius: 4px; border-style: solid; border-width: 1px; box-sizing: border-box; color: #333333; font-family: Menlo, Monaco, Consolas, "courier new", monospace; font-size: 16px; line-height: 18.5667px; margin-bottom: 10px; margin-top: 0px; overflow-wrap: break-word; overflow: auto; padding: 9.5px; text-align: start; white-space: pre-wrap; word-break: break-all;">-t, --tcp<br /> Показывает сокеты TCP.<br /><br /> -u, --udp<br /> Показывает сокеты UDP.<br /><br /> -d, --dccp<br /> Показывает сокеты DCCP.<br /><br /> -w, --raw<br /> Показывает сокеты RAW.<br /><br /> -x, --unix<br /> Показывает сокеты Unix domain (алиас для -f unix).<br /> -S, --sctp<br /> Показывает сокеты SCTP.<br /><br /> --vsock<br /> Показывает сокеты vsock (алиас для -f vsock).</pre></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда ss - очень полезный инструмент, если ваша работа в Linux связана с сетью. Здесь мы обсудили только некоторые опции командной строки ss. Для получения более подробной информации перейдите на справочную страницу утилиты.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><div>Оригинал: <a href="https://www.howtoforge.com/linux-ss-command/">Linux ss Command Tutorial for Beginners (8 Examples)</a></div></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-74447042899115037962022-02-04T11:13:00.000-08:002022-02-04T11:13:17.878-08:00Стационарность и память на финансовых рынках<div style="text-align: justify;"><span style="font-family: verdana;">Стационарность и предсказуемость временных рядов, частным случаем которых является память временных рядов, являются фундаментальными понятиями для количественного инвестиционного анализа. Однако это часто неправильно понимают как практики, так и исследователи, о чем свидетельствует глава 5 недавней книги «<a href="https://www.amazon.com/Advances-Financial-Machine-Learning-Marcos/dp/1119482089">Advances in Financial Machine Learning</a>». Я имел удовольствие разъяснить эти заблуждения некоторым участниками конференции <a href="https://som.yale.edu/event/2018/10/the-rise-of-machine-learning-in-asset-management">The Rise Of Machine Learning in Asset Management</a> в Йельском университете после конференции, но я пришел к выводу, что проблема настолько распространена, что заслуживает публичного обсуждения.<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом посте я делаю несколько плохо задокументированных замечаний о нестационарности и памяти на финансовых рынках, некоторые из которых идут вразрез с ортодоксальной эконометрикой. Все аргументы подкреплены логикой, математикой, контрпримерами и/или экспериментами с кодом Python в конце.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Приведенные здесь аргументы можно разделить на практические и технические:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Технические выводы:</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Невозможно проверить, является ли временной ряд нестационарным, если в течение ограниченного временного интервала наблюдается единственный путь - независимо от того, как долго. Каждый статистический тест на стационарность делает дополнительное предположение о семействе диффузий, к которому принадлежит основной процесс. Таким образом, отклонение нулевой гипотезы может представлять либо эмпирическое свидетельство того, что предположение о диффузии неверно, либо то, что предположение о диффузии верно, но нулевая гипотеза (например, наличие единичного корня) неверна. Статистический тест сам по себе не позволяет сделать вывод о том, какой сценарий верен.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вопреки тому, что утверждается в «Advances in Financial Machine Learning», не существует «дилеммы стационарности и памяти» (одно не имеет ничего общего с другим), а память не подразумевает асимметрии или чрезмерного эксцесса.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Итерированное дифференцирование временного ряда по типу Бокса-Дженкинса не делает временной ряд более стационарным, оно делает временной ряд рядом без памяти; временной ряд может быть как без памяти, так и нестационарным.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Важно отметить, что нестационарные временные ряды без памяти могут легко обмануть тесты стационарности (единичный корень).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Понятия памяти и прогнозируемости временных рядов тесно связаны, и мы обсуждали последнее в нашей <a href="http://bit.ly/2Muld5o">Yellow Paper</a>. Я воспользуюсь этой возможностью, чтобы поделиться нашим подходом к количественной оценке памяти во временных рядах.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Практические выводы:</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">То, что рынки (в частности, финансовые временные ряды) нестационарны, имеет интуитивный смысл, но любая попытка доказать это статистически обречена на провал.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для количественного управления инвестициями необходима стационарность, но не стационарность финансовых временных рядов, «стационарность» или постоянство торгуемых моделей или альф в течение (достаточно длительного) времени (горизонта).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Стационарность</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Говоря простыми словами, стационарность - это свойство вещей, которые не меняются с течением времени.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><b>Менеджеры по количественным инвестициям нуждаются в стационарности</b></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В основе каждой попытки количественного управления инвестициями лежит предположение о том, что на рынках существуют модели, которые преобладали в прошлом, которые будут преобладать в будущем, и которые можно использовать для зарабатывания денег на финансовых рынках.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Успешный поиск таких паттернов, часто называемых альфами, и ожидание того, что они будут сохраняться с течением времени, обычно требуется до вкладывания капитала. Таким образом, стационарность - это желаемое допущение, присущее количественному управлению инвестициями.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b><i>Стационарность на финансовых рынках разрушительна</i></b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Однако альфы часто становятся жертвами собственного успеха. Чем лучше альфа, тем больше вероятность того, что конкуренты со временем скопируют ее, и, следовательно, тем больше вероятность того, что со временем она исчезнет. Следовательно, каждый прогнозный паттерн обязательно должен быть временным или переходным режимом. Как долго продлится этот режим, зависит от строгости, использованной в альфа, и секретности, связанной с ее использованием.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Эфемерность альфы хорошо задокументирована; см., например, последнюю книгу Игоря Тульчинского «<a href="https://www.amazon.com/Unrules-Machines-Quest-Master-Markets/dp/1119372100">The Unrules: Man, Machines and the Quest to Master Markets</a>», которую я настоятельно рекомендую.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Что касается широко распространенного мнения о том, что финансовые рынки в высшей степени нестационарны, то нестационарность часто понимается в математическом смысле и обычно относится к финансовым временным рядам.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b><i>Стационарность временных рядов не может быть опровергнута с помощью одной конечной выборки</i></b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В случае временных рядов (также известных как случайные процессы) стационарность имеет точное значение (как и ожидалось), по сути два значения.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Временной ряд называется строго стационарным, если все его свойства инвариантны при изменении начала отсчета времени или переводе времени. Временной ряд называется стационарным второго порядка или слабо стационарным, если его среднее значение и автоковариационные функции инвариантны при изменении начала отсчета времени или переводе времени.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Интуитивно стационарный временной ряд - это временной ряд, локальные свойства которого сохраняются с течением времени. Поэтому неудивительно, что это было ключевым предположением в эконометрике в течение последних нескольких десятилетий, настолько, что часто думают, что практикам следует сначала сделать временной ряд стационарным, прежде чем выполнять какое-либо моделирование, по крайней мере, в школе Бокса-Дженкинса.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это абсурдно по той простой причине, что стационарность (второго порядка) как свойство не может быть опровергнута с помощью единственного пути конечной выборки. Да, вы правильно прочитали! Читайте дальше, чтобы понять, почему.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Но прежде чем углубляться в этот почти философский аргумент, давайте рассмотрим конкретный пример.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjJrbVmiVuZDI_910yTIX1GGOxT2aEFPGGCHiOj7LHZAFx1IW8jN_rZozB24pUUf1gKM1gM_iXGGkJn2bMQabfojAEjwW3BguSW77QIkyqisyKAG01lFd8dxUivyY7iT4TzVnYxWY38a0QXx1Se4M1EVHUPk1AOrnRqI9K0DD2UNhF5mU_3R2WVzEaX=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="503" data-original-width="875" height="368" src="https://blogger.googleusercontent.com/img/a/AVvXsEjJrbVmiVuZDI_910yTIX1GGOxT2aEFPGGCHiOj7LHZAFx1IW8jN_rZozB24pUUf1gKM1gM_iXGGkJn2bMQabfojAEjwW3BguSW77QIkyqisyKAG01lFd8dxUivyY7iT4TzVnYxWY38a0QXx1Se4M1EVHUPk1AOrnRqI9K0DD2UNhF5mU_3R2WVzEaX=w640-h368" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Построение временного ряда на равномерной сетке 1000 раз между t = 0 и t = 1.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Рассмотрим график выше. Это график стационарного временного ряда? Если бы вы отвечали просто на основе этого графика, вы, вероятно, пришли бы к выводу, что это не так. Но я уверен, что вы чувствуете подвох, поэтому вы, вероятно, захотите провести так называемый «тест стационарности», возможно, один из наиболее широко используемых - расширенный тест Дики-Фуллера. Вот что вы получите, если сделаете это (исходный код в конце):</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">ADF Statistic: 4.264155</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">p-Value: 1.000000</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">Critical Values:</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 1%: -3.4370</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 5%: -2.8645</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 10%: -2.5683</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как видите, тест ADF не может отвергнуть нулевую гипотезу о том, что временной ряд представляет собой AR с единичным корнем, что (отчасти) подтвердит вашу первоначальную интуитивную догадку.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь, что, если бы я сказал вам, что приведенный выше график является результатом гауссовского процесса со средним значением 100 и функцией автоковариации</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjr9cCRUR_oOtJfpnCMZAG0814kFbEG_8pb9vEsE3DXxSf33Y7MBkYHSoBgyb94pVe4pPNKzE-dsDcNmcaltkCX1nbftG1aeBfH-rTrB8IzppbzV_pqqDSpLb9KuEBGoHe_nqJ8YJxhfVqbp_91xhWhLykLKqbL0HD3KBC3gk7w5CjxPyy5IyhXGU5M=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="118" data-original-width="875" height="54" src="https://blogger.googleusercontent.com/img/a/AVvXsEjr9cCRUR_oOtJfpnCMZAG0814kFbEG_8pb9vEsE3DXxSf33Y7MBkYHSoBgyb94pVe4pPNKzE-dsDcNmcaltkCX1nbftG1aeBfH-rTrB8IzppbzV_pqqDSpLb9KuEBGoHe_nqJ8YJxhfVqbp_91xhWhLykLKqbL0HD3KBC3gk7w5CjxPyy5IyhXGU5M=w400-h54" width="400" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">то я уверен, что вы согласитесь, что это действительно график (строго) стационарного временного ряда. В конце концов, и его среднее значение, и автоковариационная функция инвариантны при переводе во времени.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы все еще в замешательстве, вот тот же график за гораздо более длительный период времени:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEicbsMrtnFelSF4g3Sj1esBVueIcIQ-5rv_N_-p2qSzI-f4CFc3TICZ7Ko-7Naj8n4h0vZR2VZvuQsR70dt7atSmrVvOzGo8mE5VHlI-c4VyzMW3pMXhdsuHpOtEQQujuO1HyKso5ywgxPDn_Rh-oIvKsK5mmdMzH6HSXARvXesnpt9HgMnHBdozTrt=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="500" data-original-width="875" height="366" src="https://blogger.googleusercontent.com/img/a/AVvXsEicbsMrtnFelSF4g3Sj1esBVueIcIQ-5rv_N_-p2qSzI-f4CFc3TICZ7Ko-7Naj8n4h0vZR2VZvuQsR70dt7atSmrVvOzGo8mE5VHlI-c4VyzMW3pMXhdsuHpOtEQQujuO1HyKso5ywgxPDn_Rh-oIvKsK5mmdMzH6HSXARvXesnpt9HgMnHBdozTrt=w640-h366" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Тот же график, что и выше, но в уменьшенном масштабе.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Я уверен, вы, должно быть, думаете, что это больше похоже на то, что вы ожидаете от стационарного временного ряда (например, он визуально возвращается к среднему). Давайте подтвердим это с помощью нашего теста ADF:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">ADF Statistic: -4.2702</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">p-Value: 0.0005</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">Critical Values:</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 1%: -3.4440</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 5%: -2.8676</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 10%: -2.5700</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В самом деле, мы можем отвергнуть нулевую гипотезу о нестационарности временного ряда при p-значении 0,05%, что дает нам сильную уверенность.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Однако процесс не изменился между двумя экспериментами. На самом деле даже случайный путь один и тот же, и в обоих экспериментах достаточно точек (не менее тысячи в каждом). Так что не так?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Интуитивно понятно, что хотя первый эксперимент имел достаточно большой размер выборки, он не охватывал достаточно длинный временной интервал, чтобы характеризовать лежащий в основе процесс, и мы никак не могли знать об этом заранее!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вывод состоит в том, что просто невозможно проверить, является ли временной ряд стационарным, исходя из единственного пути, наблюдаемого в течение конечного временного интервала, без каких-либо дополнительных предположений.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Часто делаются два предположения, но они обычно упускаются из виду как практиками, так и исследователями, что приводит к неверным выводам: неявное предположение и явное предположение.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>1. Неявное предположение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Стационарность - это свойство случайного процесса, а не пути. Попытка проверить стационарность по единственному пути должна неявно полагаться на предположение, что рассматриваемый путь достаточно информативен о природе лежащего в основе процесса. Как мы видели выше, это может быть не так и, что более важно, невозможно исключить эту гипотезу. Поскольку путь не выглядит возвратом к среднему, это не означает, что лежащий в основе процесс не является стационарным. Возможно, вы не наблюдали достаточно данных, чтобы охарактеризовать весь процесс.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вдоль этой линии любой финансовый временной ряд, независимо от того, проходит он тест ADF или нет, всегда может быть расширен до временного ряда, который проходит тест ADF (подсказка: существуют стационарные случайные процессы, пространство путей которых универсально). Поскольку мы не знаем, что нас ждет в будущем, строго говоря, утверждение, что финансовые временные ряды нестационарны, является немного неправильным, по крайней мере, в той же степени, что и утверждение, что финансовые временные ряды являются стационарными.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В отсутствие доказательств стационарности временной ряд не следует считать нестационарным - мы просто не можем статистически отдавать предпочтение одному свойству над другим. Это работает аналогично любому логическому рассуждению о бинарном утверждении A: никакое свидетельство того, что A имеет место, никогда не является свидетельством того, что A не верно.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Предположение, что финансовые рынки нестационарны, может иметь больше практического смысла в качестве аксиомы, чем предположение о том, что рынки являются стационарными по структурным причинам. Например, было бы неплохо ожидать, что производительность труда, население Земли и мировой объем производства, все из которых связаны с фондовыми рынками, со временем увеличатся. Однако это не имело бы большего статистического смысла, и это рабочая гипотеза, которую мы просто не можем опровергнуть в свете имеющихся данных.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>2. Явное предположение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Каждый статистический тест на стационарность основан на предположении о классе диффузий, в котором должна лежать диффузия лежащего в основе процесса. Без этого мы просто не сможем построить статистику для использования в тесте.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Обычно используемые тесты (единичный корень) как правило предполагают, что истинная диффузия - это авторегрессионный процесс или процесс AR, и проверяют отсутствие единичного корня в качестве прокси для стационарности.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Подразумевается, что такие тесты не имеют в качестве нулевой гипотезы предположения, что основной процесс нестационарен, но вместо этого основной процесс является нестационарным процессом AR!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Следовательно, эмпирические данные, ведущие к отклонению нулевой гипотезы, могут указывать либо на то, что лежащий в основе процесс не является AR, либо на то, что он не является стационарным, либо на то и другое! Одних тестов на единичный корень недостаточно, чтобы исключить возможность того, что базовый процесс не может быть процессом AR.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">То же самое справедливо и для других тестов на стационарность, которые делают другие предположения о лежащей в основе диффузии. Без модели нет статистической проверки гипотез, и никакая проверка статистической гипотезы не может подтвердить допущение модели, на которой она основана.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><b>Ищите стационарные альфы, а не стационарные временные ряды</b></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Учитывая, что мы не можем проверить, является ли временной ряд стационарным, не делая предположений о его диффузии, мы сталкиваемся с двумя вариантами:</div><div style="text-align: justify;"><ul><li>Сделать предположение о диффузии и стационарности теста.</li><li>Изучить прогностическую модель с допущением стационарности или без него.</li></ul></div><div style="text-align: justify;">Первый подход наиболее часто используется в литературе по эконометрике из-за влияния метода Бокса-Дженкинса, тогда как последний больше соответствует духу машинного обучения, заключающемуся в гибком изучении распределения генерируемых данных на основе наблюдений.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Моделирование финансовых рынков сложно, очень сложно, поскольку рынки представляют собой сложные, почти хаотические системы с очень низким отношением сигнал/шум. Любая попытка правильно охарактеризовать динамику рынка - например, попытаться построить стационарные преобразования, как требование для построения альфа, является смелой, нелогичной и неэффективной.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Альфа - это функции рыночных характеристик, которые могут отчасти предвидеть движения рынка в абсолютном или относительном выражении. Чтобы доверять им, следует ожидать, что альфа будет сохраняться с течением времени (т.е. будет стационарной в широком смысле). Однако, является ли сам процесс, лежащий в основе, стационарным или нет (в математическом смысле), совершенно не имеет значения. Значение, объем, импульс - вот некоторые примеры хорошо задокументированных торговых идей, которые работали десятилетиями и не связаны со стационарностью рядов цены или доходности.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Но хватит о стационарности, давайте перейдем к природе памяти на рынках.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Память</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Интуитивно думают, что временной ряд имеет память, когда его прошлые значения связаны с его будущими значениями.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы проиллюстрировать распространенное заблуждение о памяти, давайте рассмотрим простой, но представительный пример. В «<a href="https://www.amazon.com/Advances-Financial-Machine-Learning-Marcos/dp/1119482089">Advances in Financial Machine Learning</a>» автор утверждает, что</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">«Большинство экономических анализов следует одной из двух парадигм:</div><div style="text-align: justify;"><ul><li>Бокс-Дженкинс: доходности стационарные, но без памяти.</li><li>Энгл-Грейнджер: Логарифмические цены имеют память, однако они нестационарны, а коинтеграция - это трюк, который заставляет регрессию работать с нестационарными временными рядами […] »</li></ul></div><div style="text-align: justify;">Чтобы получить лучшее из обоих парадигм, автор предлагает построить процесс взвешенного скользящего среднего.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEisPkr0beg0NbsgLFnY6ick17FfAqtlxNHlPvddi3nNoYit1fHO0YARHnA91XsJHsRqXWy125g75EfJpk0tCzCjxqsKBSP_82hlJWxvuT7f1a6hVEg_fJVXf0QLUEzfLAU6YghNfUNcUS9ux5BmlcpjLEo_oYKFNHIylmmO5Xl7VAxhZYOfZ5JoLedu=s306" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="127" data-original-width="306" height="85" src="https://blogger.googleusercontent.com/img/a/AVvXsEisPkr0beg0NbsgLFnY6ick17FfAqtlxNHlPvddi3nNoYit1fHO0YARHnA91XsJHsRqXWy125g75EfJpk0tCzCjxqsKBSP_82hlJWxvuT7f1a6hVEg_fJVXf0QLUEzfLAU6YghNfUNcUS9ux5BmlcpjLEo_oYKFNHIylmmO5Xl7VAxhZYOfZ5JoLedu=w204-h85" width="204" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">коэффициенты которого определяются на основе понятия дробного дифференцирования с фиксированным окном в качестве альтернативы логарифмической доходности (разность первого порядка по логарифмическим ценам). Автор рекомендует выбирать наименьшую степень дробного дифференцирования 0 <d <1, для которой временной ряд скользящего среднего проходит тест стационарности ADF (при заданном значении p).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В целом подход вызывает несколько вопросов:</div><div style="text-align: justify;"><ul><li>Действительно ли существует дилемма между стационарностью и памятью?</li><li>Как мы можем количественно измерить память во временных рядах, чтобы подтвердить, являются ли они рядами без памяти?</li></ul></div><div style="text-align: justify;">Если предположить, что мы сможем найти стационарное преобразование скользящего среднего с большим объемом памяти, как это поможет нам сгенерировать более качественные альфы?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Количественная оценка памяти</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Интуитивно легко увидеть, что процессы скользящего среднего обладают памятью по своей природе (последовательные наблюдения скользящего среднего обязательно должны быть связаны, поскольку они частично вычисляются с использованием тех же наблюдений входного временного ряда). Однако не каждый временной ряд, имеющий память, является скользящей средней. Чтобы определить, есть ли у стационарных временных рядов память, необходимо иметь структуру для количественной оценки памяти в любых временных рядах. Мы рассмотрели эту проблему в нашей Yellow Paper, и вот краткое изложение.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Качественный вопрос, которым руководствуется любой подход к измерению памяти во временных рядах, заключается в следующем. Сообщает ли нам прошлое о будущем? Иными словами, уменьшает ли знание всех прошлых значений до настоящего момента нашу неопределенность относительно следующего значения временного ряда?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Канонической мерой неопределенности случайной величины является ее энтропия, если она существует.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgRD1W6jWK8Ohszok7M5-cac2S4caWdBDB5vDOq24wcv1Gind8-Sf8TRK2_lEe3KizmWiWt6hjcHwQlPCxScnRnJM15rzKVCixJv_qLLy520q3alaBszXA6VsjNvM7zW1XfmHTsN1wFztdjZG_t_EDxQpgck2TqLBpuQEya55W21A2Oom46XxEjdN5R=s447" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="97" data-original-width="447" height="69" src="https://blogger.googleusercontent.com/img/a/AVvXsEgRD1W6jWK8Ohszok7M5-cac2S4caWdBDB5vDOq24wcv1Gind8-Sf8TRK2_lEe3KizmWiWt6hjcHwQlPCxScnRnJM15rzKVCixJv_qLLy520q3alaBszXA6VsjNvM7zW1XfmHTsN1wFztdjZG_t_EDxQpgck2TqLBpuQEya55W21A2Oom46XxEjdN5R=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Энтропия распределения вероятностей с функцией плотности p относительно базовой меры dμ.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Энтропия случайной величины - это энтропия ее распределения вероятностей.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Точно так же неопределенность, оставшаяся в случайной величине после наблюдения другой случайной величины, обычно измеряется условной энтропией.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgukJgQacYbRu8I7ZvhZknJZrI7Xaz8DaimCHBzV8eokXclvWjfW9P95yUig2CpirVN-qH5-K5cArOwwQVljjYb7knBkiibKGMjhYTaX9u1wmZsRnlYqbDz4-gLXm5ksN2G8wN-ySDkW3nxWLTATBl0X7bFgxq3bhSBNll4TeMzvILV7Wv9uC-9Ddj4=s344" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="69" data-original-width="344" height="64" src="https://blogger.googleusercontent.com/img/a/AVvXsEgukJgQacYbRu8I7ZvhZknJZrI7Xaz8DaimCHBzV8eokXclvWjfW9P95yUig2CpirVN-qH5-K5cArOwwQVljjYb7knBkiibKGMjhYTaX9u1wmZsRnlYqbDz4-gLXm5ksN2G8wN-ySDkW3nxWLTATBl0X7bFgxq3bhSBNll4TeMzvILV7Wv9uC-9Ddj4=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Условная энтропия y при x.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Таким образом, возможной мерой памяти во временном ряду является уменьшение неопределенности относительно будущего значения временного ряда, которое может быть достигнуто путем наблюдения за всеми прошлыми значениями в предельном случае бесконечного числа таких прошлых значений. Мы называем это мерой автоматической предсказуемости временного ряда.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjdycyY_x-c696tu7UkV-dCn-Cw3TX75_TRcDPIIPKZ1LiGntzGphsWfBOMT71nYommcd4vk69Q0-IdY9mNzsCTwJs2K_O9sHWxmMxI2GH4mqVYa8g50xhHbAX-s7okSWWZCWR141YIg_q1Al82GOFoPdfLIuUlXVntcY7kX-O3NZpmUot7hli8LRM6=s656" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="109" data-original-width="656" height="76" src="https://blogger.googleusercontent.com/img/a/AVvXsEjdycyY_x-c696tu7UkV-dCn-Cw3TX75_TRcDPIIPKZ1LiGntzGphsWfBOMT71nYommcd4vk69Q0-IdY9mNzsCTwJs2K_O9sHWxmMxI2GH4mqVYa8g50xhHbAX-s7okSWWZCWR141YIg_q1Al82GOFoPdfLIuUlXVntcY7kX-O3NZpmUot7hli8LRM6=w459-h76" width="459" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Мера памяти или авто-предсказуемости временного ряда.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Когда она существует, мера автопредсказуемости всегда неотрицательна, и равна нулю тогда и только тогда, когда все выборки временного ряда во времени являются взаимно независимыми (т.е. прошлое не связано с будущим, или временной ряд не имеет памяти).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В случае стационарных временных рядов PR ({X}) всегда существует и определяется разницей между энтропией любого наблюдения и скоростью энтропии временного ряда.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgPLlM3TR2gXUh7nh_0sXOj2JoDVCUPGKH_Zs-FGcZvV0pYHg8h6gaoqDU7H6IUCjx-dpYmjL9KFKIaJhDZSVQpGc-M8KDKBLwif-YvpQLu95K3unyXblmynHE8RJfhgcHa30DIJky_oAH_9aQ8tB4kibJLR0EKZpuzbAWcB907RrysiAJbJPtCTWPQ=s492" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="84" data-original-width="492" height="55" src="https://blogger.googleusercontent.com/img/a/AVvXsEgPLlM3TR2gXUh7nh_0sXOj2JoDVCUPGKH_Zs-FGcZvV0pYHg8h6gaoqDU7H6IUCjx-dpYmjL9KFKIaJhDZSVQpGc-M8KDKBLwif-YvpQLu95K3unyXblmynHE8RJfhgcHa30DIJky_oAH_9aQ8tB4kibJLR0EKZpuzbAWcB907RrysiAJbJPtCTWPQ=s320" width="320" /></a></div><div style="text-align: justify;"><i>Мера авто-предсказуемости стационарного временного ряда.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В нашей Yellow Paper мы предлагаем подход на основе максимальной энтропии для оценки PR ({X}). На следующем графике показано, сколько памяти в акциях, фьючерсах и валютах.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgExx_M77yE3i8koIa2t4c1ZR1wqFhq6LmYOeHfNlJm4Gzsbac51hTRK196DcJM0cYZZSlMfvtGQVC7OmRIDJLwOoN0lIF-XrQarVhpOufm4TispWV1VhLhdoNPZeNrhl56uI0FHKLmyTVC_lhP83OZ_MlXJHZFlyEPC0tWrnUyqVDMsj6Yh_SlOsP5=s1745" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="948" data-original-width="1745" height="348" src="https://blogger.googleusercontent.com/img/a/AVvXsEgExx_M77yE3i8koIa2t4c1ZR1wqFhq6LmYOeHfNlJm4Gzsbac51hTRK196DcJM0cYZZSlMfvtGQVC7OmRIDJLwOoN0lIF-XrQarVhpOufm4TispWV1VhLhdoNPZeNrhl56uI0FHKLmyTVC_lhP83OZ_MlXJHZFlyEPC0tWrnUyqVDMsj6Yh_SlOsP5=w640-h348" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Память в ежедневных доходностях по валютам, фьючерсам и акциям США.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><b>Память не имеет ничего общего со стационарностью</b></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Прямым следствием приведенного выше обсуждения является то, что временной ряд может быть как стационарным, так и иметь большой объем памяти. Одно не исключает другого и, по сути, одно просто не связано с другим.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Действительно, в случае стационарных гауссовских процессов можно показать, что мера автопредсказуемости имеет вид</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiCzi7TVTW18iul1fIte62pxUfEKX4RZTrwU6Pxvj-cjXcJp3Kz9vdOUQjVKn0iG4B8InacMY985QGze_7hy7JHI4CYjd4qvyXT7YYwV22yPtSq-JwSmT9nGs8mZYuQH2kVcdfVZtLJU7DKePkD9goY8tix0SYTk878VYxAuxWX4Em2hkN3uMU6MHT1=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="165" data-original-width="875" height="85" src="https://blogger.googleusercontent.com/img/a/AVvXsEiCzi7TVTW18iul1fIte62pxUfEKX4RZTrwU6Pxvj-cjXcJp3Kz9vdOUQjVKn0iG4B8InacMY985QGze_7hy7JHI4CYjd4qvyXT7YYwV22yPtSq-JwSmT9nGs8mZYuQH2kVcdfVZtLJU7DKePkD9goY8tix0SYTk878VYxAuxWX4Em2hkN3uMU6MHT1=w455-h85" width="455" /></a></div><div style="text-align: justify;"><i>Мера автопредсказуемости стационарного гауссовского временного ряда со спектром мощности g.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Стоит отметить, что PR({X}) = 0 тогда и только тогда, когда спектр мощности постоянен, то есть временной ряд представляет собой стационарный гауссовский белый шум, в противном случае PR({X})> 0. Стационарному белому шуму не хватает памяти, потому что он неподвижен, ему не хватает памяти, потому что это, ну […], белый шум!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чем более неравномерен спектр мощности, тем больше памяти во временном ряду. Чем ровнее функция автоковариации, тем круче спектр мощности и, следовательно, выше показатель автопредсказуемости, и тем больше памяти имеет временной ряд. Примером такой плоской автоковариационной функции является квадратно-экспоненциальная ковариационная функция</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhGXJoWaCpf32PpfEBW93Sq1Vej5B1IE_N_HFXi_kFfi4IZ8beF3KIi3ygv5pdQZMfuEU0FO7jWzfIao0Nojqr4_rNA_pdcMxoq-6BeXE9Ky55lEnbujtxNnNSZDNfJ57EmFyLfnt_SudKau473Y-7r4SHFXkwoCWdQwTIG_MZZo7abIrSpBZiUG_7J=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="211" data-original-width="875" height="77" src="https://blogger.googleusercontent.com/img/a/AVvXsEhGXJoWaCpf32PpfEBW93Sq1Vej5B1IE_N_HFXi_kFfi4IZ8beF3KIi3ygv5pdQZMfuEU0FO7jWzfIao0Nojqr4_rNA_pdcMxoq-6BeXE9Ky55lEnbujtxNnNSZDNfJ57EmFyLfnt_SudKau473Y-7r4SHFXkwoCWdQwTIG_MZZo7abIrSpBZiUG_7J=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">в пределе, когда входной параметр масштаба длины l стремится к бесконечности.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgGSsFKB4amjrzB8fR4-aHP57n_YyWug9_LFevfcHkvkwVF3jd2xWKKZJWByCXpQhU0Yoa70PAbB3D5toFKFAlr08-kbGtzuqxya8JYoV7NeGjeoPrunU3E4YkdXLizPda3XCmdZU0SZqKuKxgBJczhH4HKdz1uAV5que2GUG38w5Z8WObh1oQu5KwX=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="502" data-original-width="875" height="368" src="https://blogger.googleusercontent.com/img/a/AVvXsEgGSsFKB4amjrzB8fR4-aHP57n_YyWug9_LFevfcHkvkwVF3jd2xWKKZJWByCXpQhU0Yoa70PAbB3D5toFKFAlr08-kbGtzuqxya8JYoV7NeGjeoPrunU3E4YkdXLizPda3XCmdZU0SZqKuKxgBJczhH4HKdz1uAV5que2GUG38w5Z8WObh1oQu5KwX=w640-h368" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Независимый случайный результат извлекается из одного и того же случайного процесса, гауссовского процесса с нулевым средним и квадратно-экспоненциальной ковариационной функцией, с масштабом выходных и входных данных 1.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Короче говоря, нет дилеммы стационарности и памяти. Путаница в умах практиков возникает из-за неправильного понимания того, что происходит во время повторного взятия разности, как это поддерживается методологией Бокса-Дженкинса. Подробнее об этом в следующем разделе.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i><b>Память не имеет ничего общего с ассиметрией/эксцессом</b></i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Другое заблуждение относительно памяти (см., например, главу 5, стр. 83 вышеупомянутой книги) состоит в том, что есть «асимметрия и избыточный эксцесс, который приходит с памятью». Это тоже неверно. Как обсуждалось ранее, можно генерировать временные ряды, которые являются гауссовскими (следовательно, не искаженными и не лептокуртическими), стационарными и имеют произвольно длительную память.</div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>Повторяющиеся разности, стационарность и память</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Итерированное взятие разности не делает временной ряд более стационарным, оно делает временной ряд более беспамятным!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Взятие разности (дискретных) временных рядов в смысле оператора обратного сдвига работает очень похоже на дифференциацию кривых, изучаемых в средней школе.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чем больше мы продолжаем дифференцировать кривую, тем больше вероятность того, что кривая претерпит разрыв/резкое изменение (если, конечно, она не является бесконечно дифференцируемой).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Интуитивно, в том же духе, чем больше порядок разности временного ряда в смысле оператора обратного сдвига, тем большему количеству шоков (в стохастическом смысле) будет подвергаться временной ряд, и, следовательно, чем ближе будут его выборки к взаимной независимости, но не обязательно одинаково распределенными!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">После того, как временной ряд был дифференцирован достаточно раз, чтобы стать рядом без памяти (то есть иметь взаимно независимые выборки), это, по сути, случайное блуждание, хотя и не обязательно стационарное. Мы всегда можем построить нестационарный временной ряд, который, сколько бы раз он ни дифференцировался, никогда не станет стационарным. Вот пример:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhk3pv2uBSE2I4Jjr5_FrEKsQtTCLNQxWS8mxnm1gPZ0JSALBQtuY7g5T4u9EGmozL1w96KOmKvQ4W2C_8JvsomzE7IchHXP0IOksVMnLoHnQFu3bfYTFp_ZvIGIHlR43evaZ1q858qRlsn-YdQYhEI19aA28MC4u5Ivp3SFBpm84V0p9C4tsnwNkDL=s325" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="95" data-original-width="325" height="66" src="https://blogger.googleusercontent.com/img/a/AVvXsEhk3pv2uBSE2I4Jjr5_FrEKsQtTCLNQxWS8mxnm1gPZ0JSALBQtuY7g5T4u9EGmozL1w96KOmKvQ4W2C_8JvsomzE7IchHXP0IOksVMnLoHnQFu3bfYTFp_ZvIGIHlR43evaZ1q858qRlsn-YdQYhEI19aA28MC4u5Ivp3SFBpm84V0p9C4tsnwNkDL=w224-h66" width="224" /></a></div><div style="text-align: justify;">Пример временных рядов, которые нельзя сделать стационарными с помощью итеративного дифференцирования. {W} - стандартный винеровский процесс.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Его дифференцирование порядка 1 полностью без памяти, поскольку приращения винеровского процесса независимы.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi_u6IMnRXKmPdfhUl5QSv4xkd1p9vaDaCbt4kXrVuJN6qS4thHqkgNv5mQdK6sOQIddSHJDugqa0JIYdD_n2ZhBdGB_YrPMxhg_kKHLnStBT_fFSbQRZl3QuP7QdqshrSTNAvU78c9BHQf_J3nlnilLjDHQtlqFBU-3jpF41jXP0Sal2ikfYtZBb8g=s683" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="225" data-original-width="683" height="141" src="https://blogger.googleusercontent.com/img/a/AVvXsEi_u6IMnRXKmPdfhUl5QSv4xkd1p9vaDaCbt4kXrVuJN6qS4thHqkgNv5mQdK6sOQIddSHJDugqa0JIYdD_n2ZhBdGB_YrPMxhg_kKHLnStBT_fFSbQRZl3QuP7QdqshrSTNAvU78c9BHQf_J3nlnilLjDHQtlqFBU-3jpF41jXP0Sal2ikfYtZBb8g=w430-h141" width="430" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Его функция дисперсии g(t) изменяется во времени, поэтому {y} нестационарна.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Точно так же дифференцирование {y} порядка (d + 1) является как рядом без памяти, так и нестационарным для любого d> 0. В частности, последующие повторные дифференцирования читаются как</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhWPMY0j2eILCVrFG7JwZG0RR-PTxlLaor48MCK_P4X6JqmfVOFWiKETyiHj_sI8nhMCithNUFTOauonzDJ2GzzpQJqThPW8XwG4jeFoaLpYLUD2sXmKclELYUgJjOC-YUyWdG0dGYVzxOAMtZ8ozRbTwGyUxc-EVA6UriMHuVs3eusHzM-Q02O284T=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="109" data-original-width="875" height="71" src="https://blogger.googleusercontent.com/img/a/AVvXsEhWPMY0j2eILCVrFG7JwZG0RR-PTxlLaor48MCK_P4X6JqmfVOFWiKETyiHj_sI8nhMCithNUFTOauonzDJ2GzzpQJqThPW8XwG4jeFoaLpYLUD2sXmKclELYUgJjOC-YUyWdG0dGYVzxOAMtZ8ozRbTwGyUxc-EVA6UriMHuVs3eusHzM-Q02O284T=w571-h71" width="571" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">и их зависящие от времени функции дисперсии читаются как</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgET1WoNSkTDDQ-TRhRa9jyzL-39mVSLiA_MWXedyYr0pXdUkSgJHsRNN3y7zxP8nFI85wvkKtvUj6ePJYuN3GvVWiwkls8xUq86cDivtsQDYFZLcJNM86fOPeHJEtzBAaorrvvNLo2jgCKnCbUiEkW162Ej2Yeb-N8V5JrEupG8i3vxtGJCwa7M-hs=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="189" data-original-width="875" height="98" src="https://blogger.googleusercontent.com/img/a/AVvXsEgET1WoNSkTDDQ-TRhRa9jyzL-39mVSLiA_MWXedyYr0pXdUkSgJHsRNN3y7zxP8nFI85wvkKtvUj6ePJYuN3GvVWiwkls8xUq86cDivtsQDYFZLcJNM86fOPeHJEtzBAaorrvvNLo2jgCKnCbUiEkW162Ej2Yeb-N8V5JrEupG8i3vxtGJCwa7M-hs=w454-h98" width="454" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это выражение явно взрывается по t для каждого d и не сходится по d ни для какого t. Другими словами, последовательные дифференцирования не выравнивают функцию дисперсии и, следовательно, не делают этот временной ряд более стационарным!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b><i>Случайное блуждание, стационарное или нет, обычно проходит большинство тестов на единичный корень!</i></b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Путаница в умах практиков по поводу повторной дифференциации и стационарности проистекает из того факта, что большинство тестов на единичный корень показывают, что временной ряд без памяти является стационарным, хотя это не обязательно так.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Рассмотрим, например, тест ADF.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhy-IzAs7KiTvKGb7KSURE7ER_I8LaMxk3aF8mbq3kT6Rc8vZ6M6eKFSFuJbxuO6OyYi6mNUxWtvOqm2ipJyLZX9UluJsEao7-0OVTQrm_1iSrIUiemllUirK-t_-DjtqWovgO-gIznZWsxYr1USMS8OcghBrrkEvZDJx5uCa5FPBCnsfivHwFhsSqH=s732" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="83" data-original-width="732" height="63" src="https://blogger.googleusercontent.com/img/a/AVvXsEhy-IzAs7KiTvKGb7KSURE7ER_I8LaMxk3aF8mbq3kT6Rc8vZ6M6eKFSFuJbxuO6OyYi6mNUxWtvOqm2ipJyLZX9UluJsEao7-0OVTQrm_1iSrIUiemllUirK-t_-DjtqWovgO-gIznZWsxYr1USMS8OcghBrrkEvZDJx5uCa5FPBCnsfivHwFhsSqH=w560-h63" width="560" /></a></div><div style="text-align: justify;"><i>Модель регрессии, лежащая в основе расширенного теста Дики-Фуллера.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если временной ряд {y} не имеет памяти, но не является стационарным, аппроксимация обычным методом наименьших квадратов (OLS), лежащая в основе теста ADF, не может привести к идеальному соответствию. Как это отклонение будет объяснено OLS с достаточно большой выборкой? Поскольку временной ряд не имеет памяти, OLS обычно находит свидетельство того, что γ близко к 1, так что тест ADF должен отклонить нулевую гипотезу о том, что γ = 0, чтобы сделать вывод о том, что временной ряд не имеет единичного корня (т. е. стационарная АР). Изменяющаяся во времени дисперсия {y} обычно наблюдается с помощью члена стационарного шума {e}.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы проиллюстрировать этот момент, мы генерируем 1000 случайных чисес, равномерно распределенных случайным образом от 0 до 1 и используем эти числа как стандартные отклонения 1000 независимо сгенерированных гауссиан со средним нулевым значением. Результат представлен ниже.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhpC8C03BUGXEywklIP5wMFd48Zcg4L6skD4ydhBdpv0iIUZ5mvN9UmtkPg4Sen0lMxvJeoaK_lJZZlbVJvJnrSY5tEyk7hTHpPsPpdLhOyFc9VEzzPxE3kJPHOHR9OU8c9CMPPWYY7N-7kFD94n0XzBCqYGagN4axkL8svBvQSASwTOlVQMBYAiyVw=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="502" data-original-width="875" height="368" src="https://blogger.googleusercontent.com/img/a/AVvXsEhpC8C03BUGXEywklIP5wMFd48Zcg4L6skD4ydhBdpv0iIUZ5mvN9UmtkPg4Sen0lMxvJeoaK_lJZZlbVJvJnrSY5tEyk7hTHpPsPpdLhOyFc9VEzzPxE3kJPHOHR9OU8c9CMPPWYY7N-7kFD94n0XzBCqYGagN4axkL8svBvQSASwTOlVQMBYAiyVw=w640-h368" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Нестационарный временной ряд без памяти (слева) и его изменяющееся во времени стандартное отклонение (справа).</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Тестовый прогон ADF на этом образце явно отвергает нулевую гипотезу о том, что временной ряд является результатом AR с единичным корнем, как видно из статистики ниже.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">ADF Statistic: -34.0381</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">p-Value: 0.0000</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;">Critical Values:</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 1%: -3.4369</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 5%: -2.8644</span><br style="background-color: #f2f2f2; box-sizing: inherit; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;" /><span style="background-color: #f2f2f2; color: #292929; font-family: Menlo, Monaco, "Courier New", Courier, monospace; font-size: 16px; letter-spacing: -0.352px; text-align: start; white-space: pre-wrap;"> 10%: -2.5683</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">На этом этапе практики часто приходят к выводу, что временной ряд должен быть стационарным, что неверно.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как обсуждалось ранее, временной ряд, который не является нестационарным AR, не обязательно является стационарным; это либо вообще не временной ряд AR, либо это стационарный AR. Как правило, сам тест ADF не позволяет сделать вывод о том, какое из двух утверждений верно. Однако в этом примере мы знаем, что предположение, которое неверно, не является нестационарностью, это допущение AR.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключительные мысли</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Большое внимание было уделено влиянию ИИ на индустрию управления инвестициями в средствах массовой информации, в статьях, посвященных ажиотажу вокруг ИИ, предупреждающих о риске переобучения при тестировании на истории, обосновывающих, что соотношение сигнал/шум на финансовых рынках исключает революцию ИИ, или даже утверждающих, что ИИ существует в отрасли десятилетиями.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этих средствах массовой информации машинное обучение часто рассматривается как статичная область, экзогенная для финансового сообщества, набор общих методов, разработанных другими. Однако особенности отрасли управления активами требуют появления новых методологий машинного обучения, разработанных с учетом подхода, ориентированного на финансы с самого начала, и ставящих под сомнение давние догмы. Одним из самых больших препятствий на пути появления таких методов, возможно, является широко распространенное непонимание простых, но фундаментальных понятий, таких как стационарность и память, которые лежат в основе исследовательского процесса.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Приложение: код</b></div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><table class="highlight tab-size js-file-line-container js-code-nav-container js-tagsearch-file" data-paste-markdown-skip="" data-tab-size="8" data-tagsearch-lang="Python" data-tagsearch-path="medium_dont_trust_stat.py" style="border-collapse: collapse; border: 0px; color: #333333; font-family: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace; font-size: 12px; line-height: 1.4; margin: 0px; padding: 0px;"><tbody><tr><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC1" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding-bottom: 1px !important; padding-left: 10px !important; padding-right: 10px !important; padding-top: 4px; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c1" style="color: #005cc5;">%</span><span class="pl-s1">matplotlib</span> <span class="pl-s1">inline</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="2" id="file-medium_dont_trust_stat-py-L2" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC2" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">import</span> <span class="pl-s1">matplotlib</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="3" id="file-medium_dont_trust_stat-py-L3" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC3" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">matplotlib</span>.<span class="pl-s1">rcParams</span>.<span class="pl-en" style="color: #6f42c1;">update</span>({<span class="pl-s" style="color: #032f62;">'font.size'</span>: <span class="pl-c1" style="color: #005cc5;">22</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="4" id="file-medium_dont_trust_stat-py-L4" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC4" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">import</span> <span class="pl-s1">numpy</span> <span class="pl-k" style="color: #d73a49;">as</span> <span class="pl-s1">np</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="5" id="file-medium_dont_trust_stat-py-L5" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC5" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">import</span> <span class="pl-s1">pylab</span> <span class="pl-k" style="color: #d73a49;">as</span> <span class="pl-s1">plt</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="6" id="file-medium_dont_trust_stat-py-L6" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC6" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">from</span> <span class="pl-s1">scipy</span>.<span class="pl-s1">spatial</span>.<span class="pl-s1">distance</span> <span class="pl-k" style="color: #d73a49;">import</span> <span class="pl-s1">pdist</span>, <span class="pl-s1">squareform</span>, <span class="pl-s1">cdist</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="7" id="file-medium_dont_trust_stat-py-L7" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC7" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">from</span> <span class="pl-s1">statsmodels</span>.<span class="pl-s1">tsa</span>.<span class="pl-s1">stattools</span> <span class="pl-k" style="color: #d73a49;">import</span> <span class="pl-s1">adfuller</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="8" id="file-medium_dont_trust_stat-py-L8" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC8" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="9" id="file-medium_dont_trust_stat-py-L9" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC9" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">def</span> <span class="pl-en" style="color: #6f42c1;">cov_matrix</span>(<span class="pl-s1">ts</span>, <span class="pl-s1">hypers</span>):</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="10" id="file-medium_dont_trust_stat-py-L10" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC10" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-s" style="color: #032f62;">"""</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="11" id="file-medium_dont_trust_stat-py-L11" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC11" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s" style="color: #032f62;"> Auto-covariance matrix corresponding to the </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="12" id="file-medium_dont_trust_stat-py-L12" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC12" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s" style="color: #032f62;"> Squared-Exponential auto-covariance function.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="13" id="file-medium_dont_trust_stat-py-L13" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC13" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s" style="color: #032f62;"> """</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="14" id="file-medium_dont_trust_stat-py-L14" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC14" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-s1">cM</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">pdist</span>(<span class="pl-s1">ts</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="15" id="file-medium_dont_trust_stat-py-L15" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC15" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-s1">d</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">squareform</span>(<span class="pl-s1">cM</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="16" id="file-medium_dont_trust_stat-py-L16" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC16" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-v" style="color: #e36209;">C</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">hypers</span>[<span class="pl-c1" style="color: #005cc5;">0</span>]<span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">hypers</span>[<span class="pl-c1" style="color: #005cc5;">0</span>]<span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">exp</span>(<span class="pl-c1" style="color: #005cc5;">-</span><span class="pl-c1" style="color: #005cc5;">0.5</span><span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">d</span><span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">d</span><span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">hypers</span>[<span class="pl-c1" style="color: #005cc5;">1</span>]<span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">hypers</span>[<span class="pl-c1" style="color: #005cc5;">1</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="17" id="file-medium_dont_trust_stat-py-L17" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC17" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> </td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="18" id="file-medium_dont_trust_stat-py-L18" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC18" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-k" style="color: #d73a49;">return</span> <span class="pl-v" style="color: #e36209;">C</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="19" id="file-medium_dont_trust_stat-py-L19" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC19" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="20" id="file-medium_dont_trust_stat-py-L20" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC20" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># EXPERIMENT 1: Stationarity can't be tested from a single path.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="21" id="file-medium_dont_trust_stat-py-L21" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC21" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 1. Construct a path of a stationary Gaussian time series with mean 100</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="22" id="file-medium_dont_trust_stat-py-L22" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC22" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># and auto-covariance function </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="23" id="file-medium_dont_trust_stat-py-L23" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC23" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># \mathbb{C}\text{ov}(y_u, y_v) =
# 100 \exp\left(-\frac{1}{2} \left(\frac{u-v}{5}\right)^2\right)</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="24" id="file-medium_dont_trust_stat-py-L24" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC24" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># + \frac{1}{25} \mathbb{1}\left(u==v\right)</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="25" id="file-medium_dont_trust_stat-py-L25" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC25" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">np</span>.<span class="pl-s1">random</span>.<span class="pl-en" style="color: #6f42c1;">seed</span>(<span class="pl-c1" style="color: #005cc5;">0</span>) <span class="pl-c" style="color: #6a737d;"># Seed the random number generator for reproducibility</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="26" id="file-medium_dont_trust_stat-py-L26" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC26" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">hypers</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">array</span>([<span class="pl-c1" style="color: #005cc5;">10.0</span>, <span class="pl-c1" style="color: #005cc5;">1.</span><span class="pl-c1" style="color: #005cc5;">/</span><span class="pl-c1" style="color: #005cc5;">5.0</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="27" id="file-medium_dont_trust_stat-py-L27" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC27" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ts_1</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">list</span>(<span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">arange</span>(<span class="pl-c1" style="color: #005cc5;">0</span>, <span class="pl-c1" style="color: #005cc5;">5.</span>, <span class="pl-c1" style="color: #005cc5;">1.</span><span class="pl-c1" style="color: #005cc5;">/</span><span class="pl-c1" style="color: #005cc5;">200.</span>))</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="28" id="file-medium_dont_trust_stat-py-L28" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC28" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ts_2</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">list</span>(<span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">arange</span>(<span class="pl-c1" style="color: #005cc5;">5</span>, <span class="pl-c1" style="color: #005cc5;">500</span>, <span class="pl-c1" style="color: #005cc5;">1</span>))</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="29" id="file-medium_dont_trust_stat-py-L29" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC29" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ts</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">array</span>([<span class="pl-s1">ts_1</span> <span class="pl-c1" style="color: #005cc5;">+</span> <span class="pl-s1">ts_2</span>]).<span class="pl-v" style="color: #e36209;">T</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="30" id="file-medium_dont_trust_stat-py-L30" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC30" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">cov</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">cov_matrix</span>(<span class="pl-s1">ts</span>, <span class="pl-s1">hypers</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="31" id="file-medium_dont_trust_stat-py-L31" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC31" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">mean</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-c1" style="color: #005cc5;">100.0</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="32" id="file-medium_dont_trust_stat-py-L32" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC32" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ys</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">mean</span> <span class="pl-c1" style="color: #005cc5;">+</span> <span class="pl-s1">np</span>.<span class="pl-s1">random</span>.<span class="pl-en" style="color: #6f42c1;">multivariate_normal</span>(<span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">zeros</span>(<span class="pl-en" style="color: #6f42c1;">len</span>(<span class="pl-s1">ts</span>)), <span class="pl-s1">cov</span>) <span class="pl-c1" style="color: #005cc5;">+</span>
<span class="pl-c1" style="color: #005cc5;">0.2</span><span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">np</span>.<span class="pl-s1">random</span>.<span class="pl-en" style="color: #6f42c1;">randn</span>((<span class="pl-en" style="color: #6f42c1;">len</span>(<span class="pl-s1">ts</span>)))</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="33" id="file-medium_dont_trust_stat-py-L33" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC33" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ys_1</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">ys</span>[:<span class="pl-en" style="color: #6f42c1;">len</span>(<span class="pl-s1">ts_1</span>)]</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="34" id="file-medium_dont_trust_stat-py-L34" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC34" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ys_2</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">ys</span>[<span class="pl-en" style="color: #6f42c1;">len</span>(<span class="pl-s1">ts_1</span>):]</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="35" id="file-medium_dont_trust_stat-py-L35" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC35" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="36" id="file-medium_dont_trust_stat-py-L36" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC36" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 2. Plot the time series over the short time interval.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="37" id="file-medium_dont_trust_stat-py-L37" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC37" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">plot</span>(<span class="pl-s1">ts_1</span>, <span class="pl-s1">ys_1</span>, <span class="pl-s" style="color: #032f62;">'.b'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="38" id="file-medium_dont_trust_stat-py-L38" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC38" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">xlabel</span>(<span class="pl-s" style="color: #032f62;">r'''$t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="39" id="file-medium_dont_trust_stat-py-L39" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC39" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">ylabel</span>(<span class="pl-s" style="color: #032f62;">r'''$y_t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="40" id="file-medium_dont_trust_stat-py-L40" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC40" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">gcf</span>().<span class="pl-en" style="color: #6f42c1;">set_size_inches</span>(<span class="pl-c1" style="color: #005cc5;">18.5</span>, <span class="pl-c1" style="color: #005cc5;">10.5</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="41" id="file-medium_dont_trust_stat-py-L41" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC41" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">show</span>()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="42" id="file-medium_dont_trust_stat-py-L42" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC42" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="43" id="file-medium_dont_trust_stat-py-L43" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC43" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 3. Use the ADF test to test stationary based on the </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="44" id="file-medium_dont_trust_stat-py-L44" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC44" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># restricted path.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="45" id="file-medium_dont_trust_stat-py-L45" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC45" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">result</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">adfuller</span>(<span class="pl-s1">ys_1</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="46" id="file-medium_dont_trust_stat-py-L46" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC46" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'ADF Statistic: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">0</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="47" id="file-medium_dont_trust_stat-py-L47" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC47" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'p-Value: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">1</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="48" id="file-medium_dont_trust_stat-py-L48" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC48" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'Critical Values:'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="49" id="file-medium_dont_trust_stat-py-L49" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC49" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">for</span> <span class="pl-s1">key</span>, <span class="pl-s1">value</span> <span class="pl-c1" style="color: #005cc5;">in</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">4</span>].<span class="pl-en" style="color: #6f42c1;">items</span>():</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="50" id="file-medium_dont_trust_stat-py-L50" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC50" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'<span class="pl-cce">\t</span>%s: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> (<span class="pl-s1">key</span>, <span class="pl-s1">value</span>))</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="51" id="file-medium_dont_trust_stat-py-L51" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC51" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> </td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="52" id="file-medium_dont_trust_stat-py-L52" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC52" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> </td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="53" id="file-medium_dont_trust_stat-py-L53" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC53" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 4. Now, plot the time series over the full time interval.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="54" id="file-medium_dont_trust_stat-py-L54" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC54" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">plot</span>(<span class="pl-s1">ts_2</span>, <span class="pl-s1">ys_2</span>, <span class="pl-s" style="color: #032f62;">'--r'</span>, <span class="pl-s1">ts_1</span>, <span class="pl-s1">ys_1</span>, <span class="pl-s" style="color: #032f62;">'.b'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="55" id="file-medium_dont_trust_stat-py-L55" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC55" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">xlabel</span>(<span class="pl-s" style="color: #032f62;">r'''$t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="56" id="file-medium_dont_trust_stat-py-L56" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC56" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">ylabel</span>(<span class="pl-s" style="color: #032f62;">r'''$y_t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="57" id="file-medium_dont_trust_stat-py-L57" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC57" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">gcf</span>().<span class="pl-en" style="color: #6f42c1;">set_size_inches</span>(<span class="pl-c1" style="color: #005cc5;">18.5</span>, <span class="pl-c1" style="color: #005cc5;">10.5</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="58" id="file-medium_dont_trust_stat-py-L58" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC58" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">show</span>()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="59" id="file-medium_dont_trust_stat-py-L59" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC59" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="60" id="file-medium_dont_trust_stat-py-L60" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC60" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 5. Use the ADF test to test stationary based on the </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="61" id="file-medium_dont_trust_stat-py-L61" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC61" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># longer path.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="62" id="file-medium_dont_trust_stat-py-L62" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC62" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">result</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">adfuller</span>(<span class="pl-s1">ys_2</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="63" id="file-medium_dont_trust_stat-py-L63" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC63" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'ADF Statistic: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">0</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="64" id="file-medium_dont_trust_stat-py-L64" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC64" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'p-Value: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">1</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="65" id="file-medium_dont_trust_stat-py-L65" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC65" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'Critical Values:'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="66" id="file-medium_dont_trust_stat-py-L66" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC66" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">for</span> <span class="pl-s1">key</span>, <span class="pl-s1">value</span> <span class="pl-c1" style="color: #005cc5;">in</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">4</span>].<span class="pl-en" style="color: #6f42c1;">items</span>():</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="67" id="file-medium_dont_trust_stat-py-L67" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC67" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'<span class="pl-cce">\t</span>%s: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> (<span class="pl-s1">key</span>, <span class="pl-s1">value</span>))</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="68" id="file-medium_dont_trust_stat-py-L68" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC68" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> </td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="69" id="file-medium_dont_trust_stat-py-L69" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC69" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="70" id="file-medium_dont_trust_stat-py-L70" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC70" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># EXPERIMENT 2: Stationarity doesn't preclude memory.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="71" id="file-medium_dont_trust_stat-py-L71" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC71" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Generate 10 independent draws from a stationary </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="72" id="file-medium_dont_trust_stat-py-L72" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC72" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Gaussian process with Squared-Exponential covariance function </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="73" id="file-medium_dont_trust_stat-py-L73" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC73" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># with unit input and output scales.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="74" id="file-medium_dont_trust_stat-py-L74" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC74" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">hypers_1</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">array</span>([<span class="pl-c1" style="color: #005cc5;">1.</span>, <span class="pl-c1" style="color: #005cc5;">1.</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="75" id="file-medium_dont_trust_stat-py-L75" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC75" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">cov_1</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">cov_matrix</span>(<span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">array</span>([<span class="pl-s1">ts_1</span>]).<span class="pl-v" style="color: #e36209;">T</span>, <span class="pl-s1">hypers_1</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="76" id="file-medium_dont_trust_stat-py-L76" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC76" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">f</span>, <span class="pl-s1">ax1</span>, <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">subplots</span>(<span class="pl-c1" style="color: #005cc5;">1</span>, <span class="pl-s1">sharex</span><span class="pl-c1" style="color: #005cc5;">=</span><span class="pl-c1" style="color: #005cc5;">False</span>, <span class="pl-s1">sharey</span><span class="pl-c1" style="color: #005cc5;">=</span><span class="pl-c1" style="color: #005cc5;">False</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="77" id="file-medium_dont_trust_stat-py-L77" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC77" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">f</span>.<span class="pl-en" style="color: #6f42c1;">set_size_inches</span>(<span class="pl-c1" style="color: #005cc5;">18.5</span>, <span class="pl-c1" style="color: #005cc5;">10.5</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="78" id="file-medium_dont_trust_stat-py-L78" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC78" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="79" id="file-medium_dont_trust_stat-py-L79" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC79" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">for</span> <span class="pl-s1">i</span> <span class="pl-c1" style="color: #005cc5;">in</span> <span class="pl-en" style="color: #6f42c1;">range</span>(<span class="pl-c1" style="color: #005cc5;">10</span>):</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="80" id="file-medium_dont_trust_stat-py-L80" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC80" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-s1">ys_1</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">np</span>.<span class="pl-s1">random</span>.<span class="pl-en" style="color: #6f42c1;">multivariate_normal</span>(<span class="pl-s1">np</span>.<span class="pl-en" style="color: #6f42c1;">zeros</span>(<span class="pl-en" style="color: #6f42c1;">len</span>(<span class="pl-s1">ts_1</span>)), <span class="pl-s1">cov_1</span>) </td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="81" id="file-medium_dont_trust_stat-py-L81" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC81" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-s1">ax1</span>.<span class="pl-en" style="color: #6f42c1;">plot</span>(<span class="pl-s1">ts_1</span>, <span class="pl-s1">ys_1</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="82" id="file-medium_dont_trust_stat-py-L82" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC82" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax1</span>.<span class="pl-en" style="color: #6f42c1;">set_xlabel</span>(<span class="pl-s" style="color: #032f62;">r'''$t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="83" id="file-medium_dont_trust_stat-py-L83" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC83" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax1</span>.<span class="pl-en" style="color: #6f42c1;">set_ylabel</span>(<span class="pl-s" style="color: #032f62;">r'''$y_t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="84" id="file-medium_dont_trust_stat-py-L84" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC84" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">show</span>()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="85" id="file-medium_dont_trust_stat-py-L85" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC85" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="86" id="file-medium_dont_trust_stat-py-L86" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC86" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># EXPERIMENT 3: A memoryless process, stationary or not, </span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="87" id="file-medium_dont_trust_stat-py-L87" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC87" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># would typicallyy pass the ADF test.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="88" id="file-medium_dont_trust_stat-py-L88" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC88" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="89" id="file-medium_dont_trust_stat-py-L89" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC89" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 1: Generate a white noise with time-varying variances.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="90" id="file-medium_dont_trust_stat-py-L90" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC90" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">std</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">np</span>.<span class="pl-s1">random</span>.<span class="pl-en" style="color: #6f42c1;">rand</span>(<span class="pl-c1" style="color: #005cc5;">1000</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="91" id="file-medium_dont_trust_stat-py-L91" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC91" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ys</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">std</span><span class="pl-c1" style="color: #005cc5;">*</span><span class="pl-s1">np</span>.<span class="pl-s1">random</span>.<span class="pl-en" style="color: #6f42c1;">randn</span>(<span class="pl-c1" style="color: #005cc5;">1000</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="92" id="file-medium_dont_trust_stat-py-L92" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC92" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="93" id="file-medium_dont_trust_stat-py-L93" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC93" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 2: Plot both the noise and its time-varying standard deviations.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="94" id="file-medium_dont_trust_stat-py-L94" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC94" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">f</span>, (<span class="pl-s1">ax1</span>, <span class="pl-s1">ax2</span>) <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">subplots</span>(<span class="pl-c1" style="color: #005cc5;">1</span>, <span class="pl-c1" style="color: #005cc5;">2</span>, <span class="pl-s1">sharex</span><span class="pl-c1" style="color: #005cc5;">=</span><span class="pl-c1" style="color: #005cc5;">False</span>, <span class="pl-s1">sharey</span><span class="pl-c1" style="color: #005cc5;">=</span><span class="pl-c1" style="color: #005cc5;">False</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="95" id="file-medium_dont_trust_stat-py-L95" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC95" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">f</span>.<span class="pl-en" style="color: #6f42c1;">set_size_inches</span>(<span class="pl-c1" style="color: #005cc5;">18.5</span>, <span class="pl-c1" style="color: #005cc5;">10.5</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="96" id="file-medium_dont_trust_stat-py-L96" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC96" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax1</span>.<span class="pl-en" style="color: #6f42c1;">plot</span>(<span class="pl-s1">ys</span>, <span class="pl-s" style="color: #032f62;">'-b'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="97" id="file-medium_dont_trust_stat-py-L97" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC97" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax1</span>.<span class="pl-en" style="color: #6f42c1;">set_ylabel</span>(<span class="pl-s" style="color: #032f62;">r'''$y_t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="98" id="file-medium_dont_trust_stat-py-L98" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC98" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax1</span>.<span class="pl-en" style="color: #6f42c1;">set_xlabel</span>(<span class="pl-s" style="color: #032f62;">r'''$t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="99" id="file-medium_dont_trust_stat-py-L99" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC99" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax2</span>.<span class="pl-en" style="color: #6f42c1;">plot</span>(<span class="pl-s1">std</span>, <span class="pl-s" style="color: #032f62;">'-r'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="100" id="file-medium_dont_trust_stat-py-L100" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC100" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax2</span>.<span class="pl-en" style="color: #6f42c1;">set_xlabel</span>(<span class="pl-s" style="color: #032f62;">r'''$t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="101" id="file-medium_dont_trust_stat-py-L101" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC101" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">ax2</span>.<span class="pl-en" style="color: #6f42c1;">set_ylabel</span>(<span class="pl-s" style="color: #032f62;">r'''$\sigma_t$'''</span>, {<span class="pl-s" style="color: #032f62;">'fontsize'</span>: <span class="pl-c1" style="color: #005cc5;">20</span>})</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="102" id="file-medium_dont_trust_stat-py-L102" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC102" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">plt</span>.<span class="pl-en" style="color: #6f42c1;">show</span>()</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="103" id="file-medium_dont_trust_stat-py-L103" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC103" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;">
</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="104" id="file-medium_dont_trust_stat-py-L104" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC104" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-c" style="color: #6a737d;"># Step 3: Run the ADF test.</span></td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="105" id="file-medium_dont_trust_stat-py-L105" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC105" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-s1">result</span> <span class="pl-c1" style="color: #005cc5;">=</span> <span class="pl-en" style="color: #6f42c1;">adfuller</span>(<span class="pl-s1">ys</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="106" id="file-medium_dont_trust_stat-py-L106" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC106" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'ADF Statistic: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">0</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="107" id="file-medium_dont_trust_stat-py-L107" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC107" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'p-Value: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">1</span>])</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="108" id="file-medium_dont_trust_stat-py-L108" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC108" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'Critical Values:'</span>)</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="109" id="file-medium_dont_trust_stat-py-L109" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC109" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"><span class="pl-k" style="color: #d73a49;">for</span> <span class="pl-s1">key</span>, <span class="pl-s1">value</span> <span class="pl-c1" style="color: #005cc5;">in</span> <span class="pl-s1">result</span>[<span class="pl-c1" style="color: #005cc5;">4</span>].<span class="pl-en" style="color: #6f42c1;">items</span>():</td></tr><tr><td class="blob-num js-line-number js-code-nav-line-number" data-line-number="110" id="file-medium_dont_trust_stat-py-L110" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; color: var(--color-fg-subtle); cursor: pointer; line-height: 20px; min-width: inherit; padding: 1px 10px !important; text-align: right; user-select: none; vertical-align: top; white-space: nowrap; width: 19.8px;"></td><td class="blob-code blob-code-inner js-file-line" id="file-medium_dont_trust_stat-py-LC110" style="background-attachment: initial; background-clip: initial; background-image: initial; background-origin: initial; background-position: initial; background-repeat: initial; background-size: initial; border: 0px; color: var(--color-fg-default); line-height: 20px; overflow-wrap: normal; overflow: visible; padding: 1px 10px !important; position: relative; vertical-align: top; white-space: pre;"> <span class="pl-en" style="color: #6f42c1;">print</span>(<span class="pl-s" style="color: #032f62;">'<span class="pl-cce">\t</span>%s: %.4f'</span> <span class="pl-c1" style="color: #005cc5;">%</span> (<span class="pl-s1">key</span>, <span class="pl-s1">value</span>))</td></tr></tbody></table></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://medium.com/kxytechnologies/non-stationarity-and-memory-in-financial-markets-4b8d1200667c">Stationarity and Memory in Financial Markets</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-65724331508668701222022-02-03T12:02:00.000-08:002022-02-03T12:02:05.806-08:00Обзор дистрибутива EndeavourOS 21.4 [Atlantis]<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjQEAtNcbTJ1Nw-kIzO6nNUcm8oCX_rF93tIbsv2IAfJyi01SgjdaDhDPS6W1xMCW4j63l3-lY8LuROoySjzFtjrDD4hL1xGdDXKbvNU7YUs9eqyHLg7y66VQi7VQqI--dTQ9_UvNXjkWnvhqs342qidQGtcXs_2wxnpOKoLgYiALPM-tPUXHtYudvf=s1407" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="793" data-original-width="1407" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjQEAtNcbTJ1Nw-kIzO6nNUcm8oCX_rF93tIbsv2IAfJyi01SgjdaDhDPS6W1xMCW4j63l3-lY8LuROoySjzFtjrDD4hL1xGdDXKbvNU7YUs9eqyHLg7y66VQi7VQqI--dTQ9_UvNXjkWnvhqs342qidQGtcXs_2wxnpOKoLgYiALPM-tPUXHtYudvf=w640-h360" width="640" /></a></div><div style="text-align: justify;"><br /></div><span style="font-family: verdana;"><div style="text-align: justify;">EndeavourOS — это дистрибутив Linux на основе Arch, предназначенный для начинающих и опытных пользователей. Этот дистрибутив Linux довольно новый, но успел оставить след в сообществе. Хорошо сбалансированный и идеально разработанный дистрибутив станет началом вашего путешествия по миру Arch Linux. Одним из преимуществ EndeavourOS является графический установщик, способный устанавливать любые пакеты. Его рабочим столом по умолчанию является Xfce, однако он официально поддерживает KDE Plasma, GNOME, Cinnamon, MATE, Budgie и другие оконные менеджеры.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы изучали EndeavourOS в 2020 году, когда он все еще развивался как дистрибутив, и пришло время сделать обзор версии 2021 года с его новым стабильным выпуском, в котором есть несколько серьезных изменений.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Давайте смотреть.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Установка Arch — это просто</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Calamares — один из лучших установщиков с открытым исходным кодом. Неудивительно, что команда EndeavourOS выбрала именно его. Установщик настроен, чтобы предоставить вам все возможные варианты установки Arch Linux с этим дистрибутивом. Помимо обычных опций: местоположения, часового пояса, раскладки клавиатуры, вы можете выбрать, какие пакеты вы хотите, какое ядро, среду рабочего стола, драйверы NVIDIA, драйверы принтера и дополнительные приложения. Все это до начала установки системы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Одной из уникальных особенностей EndeavourOS является приветственное диалоговое окно, доступное в LIVE-среде. Оно дает вам хорошо организованный список задач, которые вы можете выполнить для настройки вашей системы. Вот скриншот диалога.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi86c38xON0QQgOd0JOZLyN1-amq4VMhRrcLwv209Zfnq-E5xCmRQ3OllVhqRPilrz2coe9aMRUSMmmq7YFNJF7cz2wtLMyvusg1SothvtH-bqPjlcqB4zRKg4_V-_mI3cKoX6g1gs99NE0ZDkXunXkIXSLmGm20IhLpMqcki710EXxzyxlYI8YmaSM=s529" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="372" data-original-width="529" src="https://blogger.googleusercontent.com/img/a/AVvXsEi86c38xON0QQgOd0JOZLyN1-amq4VMhRrcLwv209Zfnq-E5xCmRQ3OllVhqRPilrz2coe9aMRUSMmmq7YFNJF7cz2wtLMyvusg1SothvtH-bqPjlcqB4zRKg4_V-_mI3cKoX6g1gs99NE0ZDkXunXkIXSLmGm20IhLpMqcki710EXxzyxlYI8YmaSM=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Разве это не мило? Вы можете запустить установку прямо из этого диалога. Если вы не в курсе, все эти родные диалоги EndeavourOS являются внешним интерфейсом для нескольких внутренних команд pacman. Для новичка это как благословение: не знать много команд, но при этом выполнять работу.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Все основные рабочие столы официально поддерживаются в EndeavourOS.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjN2UNStC_QH25Bz6Aw1wJmo7rmdk06X6Q0ZaptUDdYLlDy-oPzZIHV4-j3OO_qS64dM-O7L2oCQzNSVDKhq4KaAMc5mzxFqI-fs-ejK-EB5gl_WpzfsAqQRixoDe458KnlHv9da4z58pQ_hBRwF5GyNEehH5ySmghfOSG7OGtPY8zz5fSt8eZDo8H9=s1072" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="496" data-original-width="1072" height="296" src="https://blogger.googleusercontent.com/img/a/AVvXsEjN2UNStC_QH25Bz6Aw1wJmo7rmdk06X6Q0ZaptUDdYLlDy-oPzZIHV4-j3OO_qS64dM-O7L2oCQzNSVDKhq4KaAMc5mzxFqI-fs-ejK-EB5gl_WpzfsAqQRixoDe458KnlHv9da4z58pQ_hBRwF5GyNEehH5ySmghfOSG7OGtPY8zz5fSt8eZDo8H9=w640-h296" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Онлайн и автономный режим установки в EndeavourOS 21.4 — Atlantis</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Перед установкой вы должны знать, что ISO-образ по умолчанию, который вы загружаете для установки, содержит только среду рабочего стола Xfce. Если вы хотите установить другие рабочие столы, такие как KDE Plasma или GNOME и т. д., вам необходимо использовать онлайн-метод установки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ну а что такое онлайн-метод, спросите вы?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Перед запуском Calamares можно выбрать автономный и онлайн-вариант. Онлайн-опция, очевидно, требует подключения к Интернету для получения дополнительных пакетов. Автономная установка не требует подключения к Интернету и устанавливает рабочий стол Xfce по умолчанию.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы не уверены, вы можете установить рабочий стол Xfce по умолчанию. Однако после установки вы все равно можете установить дополнительные рабочие столы, если хотите.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для моего теста этой версии установка прошла гладко как для автономной, так и для онлайн-установки. Для этого обзора я установил рабочий стол KDE Plasma с помощью онлайн-метода со списком пакетов по умолчанию. GRUB2 правильно установился в нужный раздел и обнаружил все дополнительные операционные системы на тестовой машине. Таким образом, это безопасно, и вы можете установить его, не опасаясь испортить свою систему.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhQY24dU97fDMIcrf3uLbTLHEDqab_zUp31XOHd5iShjsCN_Bl8lIEuSmsDYIUWtQxCOWl9TAWEQxYJ99sBmtYdnOxQNanydjfyqQmBJZfn38EmNAuLVXRC8rQWow9b28_RmXEBtJgwzn08NVhZ_GeCzF8HG87G6ZUh6K7G-uQGxVcJvre5w7F_3Im-=s645" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="397" data-original-width="645" height="394" src="https://blogger.googleusercontent.com/img/a/AVvXsEhQY24dU97fDMIcrf3uLbTLHEDqab_zUp31XOHd5iShjsCN_Bl8lIEuSmsDYIUWtQxCOWl9TAWEQxYJ99sBmtYdnOxQNanydjfyqQmBJZfn38EmNAuLVXRC8rQWow9b28_RmXEBtJgwzn08NVhZ_GeCzF8HG87G6ZUh6K7G-uQGxVcJvre5w7F_3Im-=w640-h394" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Итак, первое препятствие устранено. Перейдем к рабочему столу.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Первое впечатление - последнее впечатление</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Когда вы начнете использовать этот дистрибутив Linux, вы не почувствуете, что это Arch Linux. Хорошая вещь в EndeavourOS заключается в том, что он инкапсулирует сложность Arch Linux и дает вам все возможности через пользовательский интерфейс. И это выделяет его среди других дистрибутивов Linux на базе Arch.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Диалоговое окно приветствует вас при первой загрузке этого дистрибутива Linux. В этом диалоговом окне есть все необходимые сведения, чтобы вы могли сразу приступить к работе.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Итак, будучи новым пользователем — в системе Linux или Arch, вы чувствуете себя как дома. Не чувствуете себя потерянным и боитесь Arch Linux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Основные особенности EndeavourOS 21.4 Atlantis</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Arch основан на скользящих релизах, поэтому вы получаете все последние пакеты почти сразу после выпуска. Имея это в виду, в этом релизе представлены некоторые важные обновления во всех основных областях аппаратного и программного обеспечения. Вот краткий список основных пакетов:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><ul><li>передовое ядро Linux 5.15;</li><li>звуковая технология Pipewire включена по умолчанию;</li><li>в этом выпуске для пользователей NVIDIA Card реализован метод проверки работоспособности обновлений ядра, который ранее вызывал проблемы с загрузкой;</li><li>внутренний eos-update-notifier представляет новые параметры для настройки расписания;</li></ul><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEg3Si8_L2X6KGxfbDNbHxJW3sUUk3u8ytXWbspxJG5aX1yXNl2vQU5vkSV1k3dV68YI0NQJNAVrOLijxoRvFBP1NgPlUdBqkZmsbSbudzOfEKLfbozInIMU02ys2-PkX6EJPtU1g-OZaX4JBu7G4PgJkwtY3O4NGxSisDPUKNh36HVA1fnraZIA0GT-=s1002" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="291" data-original-width="1002" height="186" src="https://blogger.googleusercontent.com/img/a/AVvXsEg3Si8_L2X6KGxfbDNbHxJW3sUUk3u8ytXWbspxJG5aX1yXNl2vQU5vkSV1k3dV68YI0NQJNAVrOLijxoRvFBP1NgPlUdBqkZmsbSbudzOfEKLfbozInIMU02ys2-PkX6EJPtU1g-OZaX4JBu7G4PgJkwtY3O4NGxSisDPUKNh36HVA1fnraZIA0GT-=w640-h186" width="640" /></a></div><div><br /></div><ul><li>проприетарный драйвер Nvidia — настройка режима DRM включена по умолчанию, чтобы решить проблему загрузки с черным экраном для систем Optimus;</li><li>драйвер Nvidia по-прежнему устанавливается по умолчанию, если пользователь загружается с Nvidia Boot Option, теперь к нему будет добавлено nvidia-drm.modeset=1;</li><li>BTRFS теперь использует zstd для установки как на SSD, так и на HDD;</li><li>пробник ОС снова установлен по умолчанию для лучшего управления мультизагрузкой нескольких систем.</li></ul></div><div style="text-align: justify;">Официально поддерживаемые среды рабочего стола получают последнюю на сегодняшний день версию. Вот рабочие столы и соответствующие их версии, доступные для установки с этим выпуском EndeavourOS:</div><div style="text-align: justify;"><ul><li>KDE Plasma 5.23.4</li><li>Xfce 4.16</li><li>LXQt 1.0</li><li>MATE 1.26</li><li>Cinnamon 5.0</li><li>Budgie 10.5</li><li>GNOME 41</li></ul></div><div style="text-align: justify;">Как насчет производительности и стабильности EndeavourOS Atlantis?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Со временем, «прыгая по дистрибутивам» и тестируя множество систем Linux, я обнаружил, что Arch Linux всегда кажется быстрее, чем Fedora или Ubuntu. Потому что сама он так устроен. Итак, какой бы рабочий стол вы ни использовали с EndeavourOS (KDE Plasma, Xfce или другие) — все они обеспечивают более быструю работу рабочего стола. Я имею в виду, что если вы сравните его со стандартным Ubuntu LTS с GNOME, вы определенно почувствуете разницу. В этом выпуске среди основных десктопов представлены KDE Plasma 5.23 и Xfce 4.16.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Я тестировал этот релиз на виртуальной машине более 10 часов. Он потреблял около 2%-3% процессора. Потребление памяти составляет около ~870 МБ для рабочего стола KDE Plasma.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И ресурсы ЦП, и память потребляются диспетчером окон KDE kwin_x11 и оболочкой Plasma (plasmashell) в состоянии простоя. Если вы запускаете приложения, то загрузка будет увеличиваться еще больше.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj5qf0iX1y96dn2SuvsRyMWl-PD2Vn3J5rNBJ5NR3-Quem8Z1xvoMvuDFWYpVQudMLHQB9YnOIyTvzRrh947a7j-IVH6M9BgIZOiZZUsbRdymwFMfdHzTZMV95TmjkWIm8rfgEqxx2KgzyybdggtuVyXvhxnz4NgqDLEU4mnhBmeyPdn9D6ksbCjvCS=s1071" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="609" data-original-width="1071" height="364" src="https://blogger.googleusercontent.com/img/a/AVvXsEj5qf0iX1y96dn2SuvsRyMWl-PD2Vn3J5rNBJ5NR3-Quem8Z1xvoMvuDFWYpVQudMLHQB9YnOIyTvzRrh947a7j-IVH6M9BgIZOiZZUsbRdymwFMfdHzTZMV95TmjkWIm8rfgEqxx2KgzyybdggtuVyXvhxnz4NgqDLEU4mnhBmeyPdn9D6ksbCjvCS=w640-h364" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Производительность системы EndeavourOS Atlantis (KDE Plasma)</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Сколько нужно места на диске?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Базовая установка EndeavourOS с KDE Plasma 5.23 занимает около 6,5 ГБ дискового пространства. Это идеальный, сбалансированный дистрибутив. Обычно, по моему опыту, Ubuntu и elementary OS занимают больше места на диске для установки по умолчанию — из-за приложений на основе Snap и Flatpak.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Баги?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">При тестировании EndeavourOS Atlantis 21.4 с KDE Plasma edition я обнаружил только одну проблему. Значок «Discover» и иконка на нижней панели KDE Plasma, которая добавлена по умолчанию, повреждены.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Кроме этого, в основном весь рабочий стол стабилен, хорошо организован и сбалансирован. Вам не нужно настраивать много параметров после установки.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3NzGY8se18wwXb9Qco_JHOsXbF-xYDNvT960R5ZC5FdRu5fCaiZZLLH5liq-PZvNjewIRoZWw6QJDEv8NyxXhlfcliurh1f1FmZfWg_nEbJQp0ugpE_d_8g6huhReumwRoWETKivaPmT3uUnBI6yWBuHHIvGJXNwDk3xanjIv20MBoPbdBggTommd=s878" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="154" data-original-width="878" height="112" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3NzGY8se18wwXb9Qco_JHOsXbF-xYDNvT960R5ZC5FdRu5fCaiZZLLH5liq-PZvNjewIRoZWw6QJDEv8NyxXhlfcliurh1f1FmZfWg_nEbJQp0ugpE_d_8g6huhReumwRoWETKivaPmT3uUnBI6yWBuHHIvGJXNwDk3xanjIv20MBoPbdBggTommd=w640-h112" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Нужна помощь? Лучшая поддержка для новичков.</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">ИМХО, будучи небольшим дистрибутивом Linux, команда EndeavourOS обеспечивает отличную поддержку пользователей. У них есть специальный Telegram-канал, где вы можете найти решение любых проблем в режиме 24x7. Даже если это глупый вопрос от новичка, вы получите ответ от экспертов. Если вы не говорите по-английски, у вас есть варианты для каналов Telegram на разных языках. Помимо канала Telegram, у них есть официальные форумы, ветки на reddit, которыми вы можете воспользоваться в случае необходимости.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Скачивание EndeavourOS 21.4 Atlantis</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вы можете загрузить последнюю версию EndeavourOS 21.4 Atlantis с GitHub и других зеркал, используя следующую ссылку:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://endeavouros.com/latest-release/">Скачать EndeavourOS</a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Резюме</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Этим выпуском команда доказала, что EndeavourOS - это не один из тех дистрибутивов Linux, которые со временем закрываются. Этот дистрибутив Linux останется жить. У команды есть видение и дорожная карта, что, безусловно, является плюсом. Хорошо организованное и дружелюбное сообщество с преданными разработчиками делает его одним из лучших дистрибутивов на основе Arch Linux на сегодняшний день. Идеальный дистрибутив для начинающих. Тем не менее, это также идеальный дистрибутив на основе Arch для каждодневного использования. Если вы беспокоитесь о скользящих релизах и стабильности, не беспокойтесь. Встроенные проверки работоспособности перед обновлением ядра помогут избежать многих проблем.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И да, если вам действительно нужен сверхбыстрый рабочий стол на основе Arch, обязательно ознакомьтесь с версиями i3, Sway WM. Вы будете удивлены, насколько быстро они работают с Arch+EndeavourOS.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Подводя итог обзору EndeavourOS Atlantis 21.4, могу сказать, что это еще один замечательный выпуск от команды, и в будущем мы ожидаем больше таких стабильных релизов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.debugpoint.com/2021/12/endeavouros-review-21-4-atlantis/">EndeavourOS 21.4 Review [Atlantis] – Pure Arch Linux Experience for You</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-45663932423182041512022-02-02T11:26:00.000-08:002022-02-02T11:26:04.218-08:00Интуитивное понимание уравнений Навье-Стокса<div style="text-align: justify;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhi47fUe68XIlH5VuYKKP7Rv7w08OwLRtcMpCv49QTXIyq3HYjKQ9Et7kZ2Q1gYMT8WknOrps1paYdrX3mgJ0_8HSg8Z81oWIwXaY8HgbXgt3me4FK3BB7svb2GHj-qkeF-9LdxhI9TU8T1H9IK-eeLmnl47GUP-RKPh36csC2Kc-dRoW5ekjyIgpU-=s1280" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="695" data-original-width="1280" height="348" src="https://blogger.googleusercontent.com/img/a/AVvXsEhi47fUe68XIlH5VuYKKP7Rv7w08OwLRtcMpCv49QTXIyq3HYjKQ9Et7kZ2Q1gYMT8WknOrps1paYdrX3mgJ0_8HSg8Z81oWIwXaY8HgbXgt3me4FK3BB7svb2GHj-qkeF-9LdxhI9TU8T1H9IK-eeLmnl47GUP-RKPh36csC2Kc-dRoW5ekjyIgpU-=w640-h348" width="640" /></a></div><br /></div><div style="text-align: justify;"><span style="font-family: verdana;">Жидкости везде. От океанских течений и потока воды в трубах до воздуха вокруг крыльев самолета и крови в наших венах - жидкости играют первостепенную роль в нашем мире. Область физики, изучающая эти явления, называется механикой жидкости, или гидромеханикой, и ее жемчужиной, несомненно, являются уравнения Навье-Стокса. Но какова именно интуиция, лежащая в основе уравнений Навье-Стокса и почему они так важны?<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Введение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Грубо говоря, уравнения Навье-Стокса - это набор уравнений, которые могут описывать поток любой жидкости, о которой вы можете подумать.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Но прежде чем мы начнем распутывать эти уравнения, давайте напомним себе некоторые определения и концепции, которые помогут нам в дальнейшем.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Прежде всего, что такое жидкость?</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Жидкость - это вещество, не имеющее фиксированной формы и легко поддающееся внешнему давлению. Когда такое давление - или напряжение, как это часто формально называется, применяется к жидкости, она претерпевает непрерывное изменение формы, поскольку положение некоторых из ее частиц изменяется относительно остальных. Это необратимое изменение известно как поток.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом контексте мы определяем вязкость жидкости как меру сопротивления жидкости потоку. Например, такие жидкости, как мед и кетчуп, имеют более высокую вязкость, чем вода и масло, которые являются очень жидкими веществами и имеют тенденцию легко течь. Вязкость - ключевое свойство любой жидкости, которое почти всегда проявляется в физике, лежащей в основе, которую мы используем для их моделирования.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhe9yZ7fNcfAHp9QmOkfa8XS14IHIV51YGYvVeIlNGbwi6zzdqCg9KnZt3t_Cs8cfx9Dp0qJOVGu_om9ETt-PMG8cSyT7c21yIrczy4xhpdPTaKMJ001wErT67FgkmRcFMToYV3XX5GcGjC432AWfzPoLY6_RQyxKXZy8Cq8_MqVXzLT-IV81FZBJTN=s375" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="250" data-original-width="375" src="https://blogger.googleusercontent.com/img/a/AVvXsEhe9yZ7fNcfAHp9QmOkfa8XS14IHIV51YGYvVeIlNGbwi6zzdqCg9KnZt3t_Cs8cfx9Dp0qJOVGu_om9ETt-PMG8cSyT7c21yIrczy4xhpdPTaKMJ001wErT67FgkmRcFMToYV3XX5GcGjC432AWfzPoLY6_RQyxKXZy8Cq8_MqVXzLT-IV81FZBJTN=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>От низкой до высокой вязкости слева направо</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Есть два вида потоков, которые нас больше всего интересуют. Ламинарный и турбулентный поток.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Ламинарный поток - это «плавный» поток жидкости, тип потока, в котором движущиеся частицы остаются ограниченными в отдельных слоях. Эти слои плавно перемещаются мимо соседних слоев с небольшим перемешиванием или без него, как игральные карты.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh8x0J0BvdKInKrAZiiGYxa9vMc4ZuxHQoSv0Z85jnNxpOABciuyQk-rVlkifeWWT8tn0fIl2gQ-NLw3H48wB0MWnU80O5r8LnqUDG-oxta5JvcE5hCfBiOM3j9nk8HNdEvzMRMAnBi_qXlposPn6lFjcHxBNbvKd0JZFX14DF4kHjPZxbEkTJOad4x=s740" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="391" data-original-width="740" height="338" src="https://blogger.googleusercontent.com/img/a/AVvXsEh8x0J0BvdKInKrAZiiGYxa9vMc4ZuxHQoSv0Z85jnNxpOABciuyQk-rVlkifeWWT8tn0fIl2gQ-NLw3H48wB0MWnU80O5r8LnqUDG-oxta5JvcE5hCfBiOM3j9nk8HNdEvzMRMAnBi_qXlposPn6lFjcHxBNbvKd0JZFX14DF4kHjPZxbEkTJOad4x=w640-h338" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Ламинарное течение в трубе</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Турбулентный поток противоположен этому. Это тип потока, характеризующийся вихрями и множеством хаотических изменений давления и скорости жидкости в целом.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgT3xv8N6kdm98V4iK5SDapXHJjNp4fuQ1E9yHOshDwmMG-udQ1tODNDv3oVKTp4l6eiNujBgnx8zlqV-thLegI-QXs8L_OGanPe0v3nYeK9V6Qev749mTSiLbICUmDRFvYU0ItGK3Mr_HuU0Z0QN660VrIHCKP_0vtBI_U6cnRpvaZFGuqnKQftqO5=s620" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="328" data-original-width="620" height="338" src="https://blogger.googleusercontent.com/img/a/AVvXsEgT3xv8N6kdm98V4iK5SDapXHJjNp4fuQ1E9yHOshDwmMG-udQ1tODNDv3oVKTp4l6eiNujBgnx8zlqV-thLegI-QXs8L_OGanPe0v3nYeK9V6Qev749mTSiLbICUmDRFvYU0ItGK3Mr_HuU0Z0QN660VrIHCKP_0vtBI_U6cnRpvaZFGuqnKQftqO5=w640-h338" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Турбулентное течение в трубе</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для простоты мы сделаем два ключевых предположения в оставшейся части этой статьи. Жидкости, с которыми мы будем иметь дело, являются ньютоновскими, то есть их вязкость остается постоянной независимо от величины сдвига - давления, приложенного к ним, и несжимаемыми, то есть их плотность остается постоянной во время течения.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это почти все, что нам нужно знать. Теперь мы готовы погрузиться в элегантность уравнений Навье-Стокса!</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Уравнения Навье-Стокса</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Без лишних слов, вот два уравнения.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi6yjeDuDaFmE6VMEcxLbFWRZueIr5x-3YKUKMxixjrXTHmJyGE3Ccv2Mnnx7l97QMT6XWhbUeDdHmlCRQOV2nDIiEFuYUohdZ_MoAKzV-C-QtRBXZfy4REbfWGl_W2IbzY5komA4v7PldZBn0KlRhYsNhBF44Q8Fv0K81PT5Q0dH8rDEwyjqimQt9d=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="275" data-original-width="875" height="131" src="https://blogger.googleusercontent.com/img/a/AVvXsEi6yjeDuDaFmE6VMEcxLbFWRZueIr5x-3YKUKMxixjrXTHmJyGE3Ccv2Mnnx7l97QMT6XWhbUeDdHmlCRQOV2nDIiEFuYUohdZ_MoAKzV-C-QtRBXZfy4REbfWGl_W2IbzY5komA4v7PldZBn0KlRhYsNhBF44Q8Fv0K81PT5Q0dH8rDEwyjqimQt9d=w414-h131" width="414" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">где:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">u: вектор скорости жидкости</div><div style="text-align: justify;">p: давление жидкости</div><div style="text-align: justify;">ρ: плотность жидкости</div><div style="text-align: justify;">μ: вязкость жидкости</div><div style="text-align: justify;">∇²: оператор Лапласа (сумма трех пространственных производных второго порядка векторного поля, над которым он действует)</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как мы видим, оба уравнения относятся к u, вектору скорости жидкости. Проще говоря, векторное поле - это то, что мы получаем, когда назначаем каждую точку пространства вектору, стрелке с величиной и направлением. Векторные поля можно использовать для описания многих вещей, но в нашем примере каждый вектор представляет скорость жидкости в этой конкретной точке.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgZTIaJxRa1AEaVxq4oYDkW2QkJqmVWg8piTEy3TR_YBbiDaYcrmAU5nbQFZJk8-PotFuREBhiZifDPOX1-Tg2OwbqT1UOIbZYZC5oT_U4CM6J-l2sBJypQuH7DQgJ9Yvfe4ORFSm_3bUoHW9QzncxrLYPXRqWoInyKucymiGHeu6dzq6dWGIPhetSP=s405" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="322" data-original-width="405" src="https://blogger.googleusercontent.com/img/a/AVvXsEgZTIaJxRa1AEaVxq4oYDkW2QkJqmVWg8piTEy3TR_YBbiDaYcrmAU5nbQFZJk8-PotFuREBhiZifDPOX1-Tg2OwbqT1UOIbZYZC5oT_U4CM6J-l2sBJypQuH7DQgJ9Yvfe4ORFSm_3bUoHW9QzncxrLYPXRqWoInyKucymiGHeu6dzq6dWGIPhetSP=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Пример векторного поля</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы рассмотрим оба уравнения Навье-Стокса отдельно, начиная с меньшего.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Сохранение массы</b></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEi-_QLKwDhq0M5aOvcI83ljZcTYCvHI9lFEdx89kzW3vWe1gsCs77TslNebzvR06FAfnom1cKlj5VFQ0bztA2sS4-cb69wDt9eAK4ZBaWTK419GqE_2qiZSt9emXQD3eOEKxo_mCd8WiywDkoSjYGt4-bjLz5VUctmFfqB66AcJc-dGC0mYvwDXi0g8=s447" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="168" data-original-width="447" height="75" src="https://blogger.googleusercontent.com/img/a/AVvXsEi-_QLKwDhq0M5aOvcI83ljZcTYCvHI9lFEdx89kzW3vWe1gsCs77TslNebzvR06FAfnom1cKlj5VFQ0bztA2sS4-cb69wDt9eAK4ZBaWTK419GqE_2qiZSt9emXQD3eOEKxo_mCd8WiywDkoSjYGt4-bjLz5VUctmFfqB66AcJc-dGC0mYvwDXi0g8=w200-h75" width="200" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Первое из двух приведенных выше уравнений является математическим выражением сохранения массы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как мы знаем, дивергенция векторного поля в определенной точке является мерой того, насколько векторное поле имеет тенденцию «расширяться» или расходиться в этой точке. Точки с положительной дивергенцией можно рассматривать как «источники», поскольку кажется, что жидкость возникает из ничего. С другой стороны, точки с отрицательной дивергенцией, как правило, рассматриваются как «стоки», где жидкость, кажется, полностью исчезает в ничто.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgib1_utCikyRXsff42kd3sBuPDzlGt3wAH5Clr-0bUm7kCXb1RPlUZRAWm4TzxinzatbAjNVB4L-XSFJqpDOFC7kEnMdJ2JWOy9TV_ZvMyBGc3X9rz7XHd5ViT5p54cvijTlmWhcKqbJiz-lsgKQQ6CiDjScOy0bFfPdzLw6V5-NqNbbedb35UrdJg=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="432" data-original-width="875" height="316" src="https://blogger.googleusercontent.com/img/a/AVvXsEgib1_utCikyRXsff42kd3sBuPDzlGt3wAH5Clr-0bUm7kCXb1RPlUZRAWm4TzxinzatbAjNVB4L-XSFJqpDOFC7kEnMdJ2JWOy9TV_ZvMyBGc3X9rz7XHd5ViT5p54cvijTlmWhcKqbJiz-lsgKQQ6CiDjScOy0bFfPdzLw6V5-NqNbbedb35UrdJg=w640-h316" width="640" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Источники и стоки векторного поля</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вы поняли все это, первое из уравнений Навье-Стокса к настоящему времени должно быть довольно простым. Для реальной (несжимаемой) жидкости поле вектора скорости должно везде иметь нулевую дивергенцию. Если дивергенция не равна нулю, это означает, что в определенных точках жидкость либо сжимается, либо расширяется (создавая ненулевую производную от ее плотности по времени), что по предположению невозможно.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">И это все! Перейдем ко второму уравнению.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Сохранение импульса</b></div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjN0xCq2N27V_3fIgLfOT8x6jqW3-A99EcNuuY2D7l-EPSRfdu4g9JhhypFp5zRSWOsVkDyj0vJXcGx7PwUmnpCvsYm2Qnfi8Z5UFpR8trb_F_nxmxKe4zztmxMs5szSu0HMudsiyILg8KIkX7K81WssVr5zIZULai-whDrUxir74__hhToXUn9ERil=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="173" data-original-width="875" height="63" src="https://blogger.googleusercontent.com/img/a/AVvXsEjN0xCq2N27V_3fIgLfOT8x6jqW3-A99EcNuuY2D7l-EPSRfdu4g9JhhypFp5zRSWOsVkDyj0vJXcGx7PwUmnpCvsYm2Qnfi8Z5UFpR8trb_F_nxmxKe4zztmxMs5szSu0HMudsiyILg8KIkX7K81WssVr5zIZULai-whDrUxir74__hhToXUn9ERil=s320" width="320" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По общему признанию, второе уравнение при первом просмотре выглядит немного устрашающе. Давайте разберемся по порядку.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Прежде всего, это уравнение - не что иное, как применение второго закона Ньютона для жидкостей.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjkBSZ4L8oqmT7n4wCKSwcZZSMSWhFtjnf89iWvfDbjo26BVSb4p1aS8tMpPm0h50Ps1gMqe2dn_WA2BCiXzJ8jJaTQDRoo7ExmlqF10SbLo2FhJ3EUeobtx2S4TWE4Wg309_O1CEkRUTWrfvhirHHUs20s_epYiwuDtAbebNI_OD8oLAOcEVT20y11=s318" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="131" data-original-width="318" height="57" src="https://blogger.googleusercontent.com/img/a/AVvXsEjkBSZ4L8oqmT7n4wCKSwcZZSMSWhFtjnf89iWvfDbjo26BVSb4p1aS8tMpPm0h50Ps1gMqe2dn_WA2BCiXzJ8jJaTQDRoo7ExmlqF10SbLo2FhJ3EUeobtx2S4TWE4Wg309_O1CEkRUTWrfvhirHHUs20s_epYiwuDtAbebNI_OD8oLAOcEVT20y11=w140-h57" width="140" /></a></div><div style="text-align: justify;"><i>Второй закон Ньютона</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Левая сторона - масса, умноженная на ускорение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Левая часть уравнения Навье-Стокса может быть переписана следующим образом:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjv1h05RPw9E8U2D8-eCfJ9MoNRoe7dBPMA6w5LvmflTh2BL85NpBQYQtO7d--Jp_vHz-pBA7K4p9WkM5Qk3R_Vt4k8NoEGLocpmmaUnlfg4Ph4a24uIdSaoc6ppz9MtFRK9m66Nlu6j7ClzfGNFg44awXmuqNwD4sYYHpQjeCL_BpgOZ9ykOPfZQBh=s201" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="201" data-original-width="178" height="80" src="https://blogger.googleusercontent.com/img/a/AVvXsEjv1h05RPw9E8U2D8-eCfJ9MoNRoe7dBPMA6w5LvmflTh2BL85NpBQYQtO7d--Jp_vHz-pBA7K4p9WkM5Qk3R_Vt4k8NoEGLocpmmaUnlfg4Ph4a24uIdSaoc6ppz9MtFRK9m66Nlu6j7ClzfGNFg44awXmuqNwD4sYYHpQjeCL_BpgOZ9ykOPfZQBh=w70-h80" width="70" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь сравнение со вторым законом Ньютона становится более очевидным. Вместо массы, мы использовали плотность жидкости (они математически взаимозаменяемы, когда объем постоянный), и мы записали ускорение как производную от скорости. Чтобы быть более конкретным, это на самом деле называется материальной производной, которую можно записать следующим образом, используя правило цепи:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEgWp70NHx0fd32c-0RziiySetqhTHIx_4NTx6v8q3K51S-bEm51QV3gblEcqp0ZNwGc7g64BCDMfcgSXI0d4Cpn-RcQmUUhNs0_i1US0Okw8-e5xRkWkCXillQTAXmAW_8xEU-dBxb_4DCD1O663rpYMfY2nk51UYQH-12HjGhpnN9vxt7cGP5z-y97=s396" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="147" data-original-width="396" height="81" src="https://blogger.googleusercontent.com/img/a/AVvXsEgWp70NHx0fd32c-0RziiySetqhTHIx_4NTx6v8q3K51S-bEm51QV3gblEcqp0ZNwGc7g64BCDMfcgSXI0d4Cpn-RcQmUUhNs0_i1US0Okw8-e5xRkWkCXillQTAXmAW_8xEU-dBxb_4DCD1O663rpYMfY2nk51UYQH-12HjGhpnN9vxt7cGP5z-y97=w216-h81" width="216" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы не будем говорить о том, что представляет собой материальная производная, но вы легко можете найти множество ресурсов в Интернете.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Правая часть - сумма сил.</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Правая часть второго уравнения Навье-Стокса представляет собой алгебраическую сумму всех сил, действующих на жидкость. Мы не будем здесь формально выводить уравнение, поскольку оно не способствует нашему пониманию, хотя вы можете найти его в Интернете.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы можем различать внутренние и внешние силы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">∇p: первая внутренняя сила, которую мы принимаем во внимание, это давление. Этот термин представляет собой градиент давления, и он в основном представляет собой разницу давлений в пространстве, где находится жидкость. Точно так же, как когда мы всасываем воздух из соломинки, чтобы позволить соку достичь нашего рта, жидкости имеют тенденцию перемещаться из зон с более высоким давлением в зоны с более низким давлением. Эта тенденция заключена в этом термине - градиент давления.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">μ∇²u: вторая внутренняя сила, которую мы учитываем, это трение, связанное с вязкостью жидкости. Между молекулами жидкостей с высокой вязкостью трение больше, чем между молекулами с низкой. Этот термин позволяет нам выразить это понятие в компактной математической форме.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">ρf: Наконец, этот член учитывает все потенциальные внешние силы, которые могут действовать на жидкость. В большинстве случаев гравитация является единственной внешней силой в нашей системе, поэтому мы заменяем «f» на g, получая произведение ρg. В других случаях мы можем по-настоящему фантазировать и заменить ρf на силу Лоренца, комбинируя уравнения Навье-Стокса с уравнениями Максвелла.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Число Рейнольдса</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это число часто идет рука об руку с уравнениями Навье-Стокса. Число Рейнольдса, называемое Re, используется для определения того, является ли поток жидкости ламинарным или турбулентным.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Формула для числа Рейнольдса следующая:</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj-1xtrKBBJRSXEf2B7PGN55L-aOvUyqol51NaM8QJ7jrhr-9nebAIXWjnNaS5wQtTtJYPKN-BA5MpNP7Xa8l5ToILlaXrUgAwADIFlT3Gf_dCAzpWJSOidPcKQ34KyrsKTteFbn6KaHXxJNctb-LVGFRpIqXV_GKE36dm6S_wDk15yWdfH2D9NHynu=s875" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="492" data-original-width="875" height="225" src="https://blogger.googleusercontent.com/img/a/AVvXsEj-1xtrKBBJRSXEf2B7PGN55L-aOvUyqol51NaM8QJ7jrhr-9nebAIXWjnNaS5wQtTtJYPKN-BA5MpNP7Xa8l5ToILlaXrUgAwADIFlT3Gf_dCAzpWJSOidPcKQ34KyrsKTteFbn6KaHXxJNctb-LVGFRpIqXV_GKE36dm6S_wDk15yWdfH2D9NHynu=w400-h225" width="400" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><i>Число Рейнольдса в трубе</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Обратите внимание, что D называется характеристической длиной, и она будет зависеть от типа анализируемого потока. На изображении выше мы предположили, что поток происходит внутри трубы, и поэтому D равен диаметру этой трубы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Простыми словами, число Рейнольдса - это отношение сил инерции к силам вязкости. Если силы инерции - силы, которые заставляют жидкость двигаться, намного больше, чем силы вязкости - силы, противоположные потоку жидкости, тогда поток будет турбулентным. Если вместо этого преобладают вязкие силы, течение будет ламинарным. Но что именно означает «намного больше»?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Что ж, для чисел Рейнольдса в трубе меньше 2000 поток обычно будет ламинарным. Для Re больше 4000 поток будет турбулентным, в то время как для Re между 2000 и 4000 будет существовать своего рода переходный поток, гибрид между ламинарным и турбулентным потоками.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Миллион долларов ждет</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Инженеры и физики широко используют уравнения Навье-Стокса во многих реальных приложениях. Однако, чтобы использовать эти уравнения, они почти всегда делают определенные допущения и упрощения в зависимости от решаемой задачи.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Причина, по которой они это делают, заключается в том, что эти уравнения чрезвычайно трудно решить в их первоначальной форме без каких-либо приближений. Фактически, Институт математики Клэя назначил награду в миллион долларов тому, кто сумеет решить эту задачу. Проще говоря (вы можете увидеть официальную постановку проблемы здесь), вам нужно ответить на следующий вопрос, чтобы получить миллион долларов:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Можете ли вы определить, существует ли гладкое решение для жидкостей в трех измерениях в каждой точке пространства?</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключительные замечания</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Уравнения Навье-Стокса входят в число наиболее важных и широко применяемых уравнений во всей физике. Они помогают нам проектировать самолеты и автомобили, изучать кровоток, проектировать электростанции, анализировать загрязнение окружающей среды и многое другое. Однако из-за присущей им математической сложности их можно решить только с помощью приближений, в то время как теоретическое доказательство гладкого решения будет вознаграждено одним миллионом долларов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b><i>«Когда я встречусь с Богом, я задам ему два вопроса: Почему относительность? А почему турбулентность? Я действительно верю, что он ответит на первый вопрос».</i></b></div><div style="text-align: justify;"><b><i><br /></i></b></div><div style="text-align: justify;"><b><i>Вернер Гейзенберг на смертном одре</i></b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://medium.com/intuition/the-intuition-behind-the-navier-stokes-equations-cbeb2a2f87b8">The Intuition behind the Navier-Stokes Equations</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-61927070006073838532022-02-01T12:04:00.000-08:002022-02-01T12:04:19.649-08:00Введение в SELinux для начинающих<div style="text-align: justify;"><span style="font-family: verdana;">SELinux или Security Enhanced Linux - это усовершенствованный механизм контроля доступа, разработанный американским Агентством Национальной Безопасности (АНБ) для предотвращения злонамеренных вторжений и взлома. Он реализует MAC (Mandatory Access Control) поверх уже существующего DAC (Discretionary Access Control), то есть разрешения на чтение, запись, выполнение.<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он имеет три разных режима работы:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">1. <b>Enforcing</b>: запрещает доступ на основе правил политик.</div><div style="text-align: justify;">2. <b>Permissive</b>: регистрирует нарушения политик, но не запрещает доступ, который был бы запрещен в режиме Enforcing.</div><div style="text-align: justify;">3. <b>Disabled</b>: полностью отключает Selinux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Конфигурационный файл по умолчанию для изменения этих режимов: /etc/selinux/config.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Изменение режимов Selinux</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы узнать текущий режим, выполните:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ getenforce</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы изменить режим на permissive, выполните следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ setenforce 0</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">или для смены режима permissive на enforcing, выполните:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ setenforce 1</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если вам нужно полностью отключить selinux, это можно сделать только из конфигурационного файла:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ vi /etc/selinux/config</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Измените поле SELINUX следующим образом:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">SELINUX=disabled</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Настройка Selinux</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Каждый файл или процесс помечен контекстом SELinux, который содержит дополнительную информацию, такую как пользователь SELinux, роль, тип и т. д. Если вы впервые включаете Selinux, то сначала нам нужно исправить контекст и метки. Этот процесс исправления меток и контекста известен как «Перемаркировка» (Relabeling). Чтобы начать перемаркировку, сначала перейдите в конфигурационный файл и измените режим на permissive.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ vi /etc/selinux/config<br />SELINUX=permissive</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как только установлен режим «permissive», мы создадим пустой скрытый файл с именем «autorelabel» в каталоге /.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ touch /.autorelabel</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь перезагрузите компьютер</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ init 6</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Примечание: мы используем режим ‘permissive’ для перемаркировки, поскольку использование режима enforcing во время проведения «перемаркировки» может привести к сбою системы.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Не беспокойтесь, если во время загрузки система застрянет в каком-то файле, перемаркировка займет некоторое время. После завершения перемаркировки и загрузки вашей системы вы можете перейти к конфигурационному файлу и установить режим «enforcing», а также выполнить команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ setenforce 1</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вы успешно включили SELinux на своем компьютере.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Мониторинг логов</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Возможно, у вас возникли ошибки во время перемаркировки или могут возникать ошибки при работе системы. Чтобы проверить, работает ли ваш Selinux должным образом и не блокирует ли он доступ к какому-либо порту, приложению и т. д., мы должны отслеживать журналы. Файл журнала для Selinux - /var/log/audit/audit.log, но вам не нужно читать все, чтобы проверить ошибки. Мы можем использовать утилиту «audit2why» для проверки ошибок в журналах, выполнив:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ audit2why < /var/log/audit/audit.log</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы получим ошибки в качестве вывода. Если все в порядке, вывода не будет.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Настройка политик Selinux</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Политика Selinux - это набор правил, которыми руководствуется механизм безопасности Selinux. Политика определяет набор правил для конкретной среды. Здесь мы научимся изменять политики, чтобы разрешить доступ к нашим запрещенным сервисам.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>1. Booleans</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Booleans позволяет нам вносить изменения в часть политики во время выполнения без необходимости знания написания политики. Это позволяет вносить изменения без необходимости перезагрузки или перекомпиляции политики SELinux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Пример:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Допустим, мы хотим предоставить общий доступ к домашнему каталогу нашего пользователя по FTP на чтение и запись, и мы уже поделились им, но, пытаясь получить к ним доступ, мы его не видим. Это связано с тем, что политика SElinux запрещает FTP-серверу читать и писать в домашнем каталоге пользователя. Нам нужно изменить политику, чтобы ftp мог обращаться к домашним каталогам, для этого мы посмотрим, есть ли какие-либо логические значения, доступные для выполнения этого, с помощью команды:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ semanage boolean –l</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Она выдаст список всех доступных логических значений с их текущим состоянием (включено или выключено) и описанием. Вы можете уточнить поиск, добавив «grep», чтобы найти результаты, связанные только с ftp</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ semanage boolean –l | grep ftp</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Среди прочих вы увидите следующий Boolean:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>ftp_home_dir -> off Allow ftp to read & write file in user home directory</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это правило позволяет ftp читать и писать в домашнюю директорию пользователя.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оно выключено, поэтому мы включим этот Boolean с помощью команды setsebool:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ setsebool ftp_home_dir on</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь наш демон ftp сможет получить доступ к домашнему каталогу пользователя.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Примечание: вы также можете получить список доступных логических значений, запустив команду «getsebool -a», но она не будет отображать описание Boolean.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>2. Маркировка и контекст</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это наиболее распространенный способ реализации Selinuxpolicy на нашем сервере. Каждый файл, папка, процесс, порт помечены контекстом SELinux:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">- для файлов/папок, метки хранятся как расширенные атрибуты в файловой системе и могут быть просмотрены с помощью команды:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ ls –Z /etc/httpd</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">- для процессов и портов маркировкой управляет ядро, и мы можем увидеть эти метки с помощью команд:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ ps –auxZ | grephttpd (for process)<br />$ netstat –anpZ | grephttpd (for port)</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Пример.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Теперь давайте рассмотрим пример, чтобы понять метки и контекст в деталях. Допустим, у нас есть веб-сервер, который в качестве каталога документов использует /home/dan/html/, а не /var/www/html/, SElinux сочтет это нарушением политики, и вы не сможете просматривать вашу веб-страницу. Это происходит потому, что мы не установили контекст безопасности, связанный с HTML-файлами. Чтобы проверить контекст безопасности по умолчанию для HTML-файла, используйте следующую команду:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ ls –lz /var/www/html</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>-rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Здесь мы получили httpd_sys_content_t в качестве контекста для html-файлов. Нам нужно установить этот контекст безопасности для нашего текущего каталога, который имеет текущий контекст:</div><div style="text-align: justify;"><b><br /></b></div><div style="text-align: justify;"><b>-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Другая команда для проверки контекста безопасности файла/каталога:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ semanage fcontext -l | grep '/var/www'</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Мы также будем использовать «semanage» для изменения контекста, как только мы найдем правильный контекст безопасности. Чтобы изменить контекст /home/ dan/html, выполните следующие команды:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ semanage fcontext -a -t httpd_sys_content_t '/home/dan/html(/.*)?'<br />$ semanage fcontext -l | grep '/home/dan/html'<br />/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0<br />$ restorecon -Rv /home/dan/html</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как только контекст был изменен с помощью «semange», restorecon загрузит контекст по умолчанию для файлов и каталогов. Наш веб-сервер теперь сможет читать файлы из папки /home/dan/html, поскольку контекст безопасности для этой папки был изменен на «httpd_sys_content_t».</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>3. Создание локальных политик</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Может возникнуть ситуация, когда вышеуказанные методы бесполезны, и вы получаете ошибки (avc/denials) в audit.log. Когда возникает такая проблема, нам нужно создать локальную политику для ее разрешения. Вы можете просмотреть все ошибки с помощью audit2why, как было указано выше.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как только мы увидели ошибки, мы можем создать локальную политику для их устранения. Когда, например, мы получаем ошибку, связанную с httpd (apache) или smbd (samba), мы создадим для нее политику:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy (for apache)<br />$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy (for samba)</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Здесь http_policy & smb_policy - это названия локальных политик, которые мы создали. Теперь нам нужно только загрузить эти созданные локальные политики в текущую политику SElinux, это может быть сделано с помощью следующих команд:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="-webkit-font-smoothing: antialiased; background-color: #33363b; border: 0px; color: #fbfafa; font-family: Poppins, "Nunito Sans", Montserrat, sans-serif; font-size: 17px; font-stretch: inherit; font-variant-east-asian: inherit; font-variant-numeric: inherit; font-weight: 600; letter-spacing: 0.3px; line-height: inherit; margin: 0px; padding: 0px; text-align: start; text-rendering: optimizelegibility; text-size-adjust: 100%; vertical-align: baseline;">$ semodule –I http_policy.pp<br />$ semodule –I smb_policy.pp</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Наши локальные политики были загружены, и мы не должны теперь видеть никаких ошибок в audit.log.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://linuxtechlab.com/beginners-guide-to-selinux/">Beginner’s guide to SELinux</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-36263563002865371482022-01-31T11:41:00.000-08:002022-01-31T11:41:19.082-08:00Пять графических утилит для сканирования в Linux<div style="text-align: justify;"><span style="font-family: verdana;">Судя по информации, которую я собрал на форумах, работать со сканерами в Linux не очень приятно. Но так быть не должно, потому что на самом деле есть эффективные опции для сканера, которые вы можете легко настроить на своем компьютере.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Именно по этой причине мы представляем вам наш список 5 утилит для сканирования в Linux. Все они бесплатные и с открытым исходным кодом.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>1. XSane</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="http://www.fifi.org/doc/xsane/html/sane-xsane-doc.html">XSane</a> - это приложение, которое позволяет управлять сканерами с помощью библиотеки SANE (Scanner Access Now Easy). Это самая многофункциональная утилита для сканирования в этом списке, так что вы можете просто остановиться здесь.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Он даже может работать со сканерами, которые были разработаны для систем Mac и Windows, благодаря тому, что она сама не поддерживает сканеры, но работает с любым сканером, поддерживаемым библиотекой SANE. Вы можете использовать ее для сканирования файлов, создания фотокопий, создания факсов и в качестве плагина GIMP.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>2. Skanlite</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://www.kde.org/applications/graphics/skanlite/">Skanlite</a> - это легкая утилита для сканирования, которую с любовью используют в сообществе KDE.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Его функции включают в себя сохранение изображений в форматах JPG, PNG, PPM, XPM, XBM и BMP, автосохранение, предварительную настройку качества сканирования, и возможность сохранения частей отсканированных документов в виде отдельных файлов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>3. Gscan2pdf</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="http://gscan2pdf.sourceforge.net/">Gscan2pdf</a> - это приложение с графическим интерфейсом, которое позволяет сканировать документы и сохранять их в файлах PDF и DjVu.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оно совместимо практически со всеми дистрибутивами Linux и предлагает несколько функций редактирования, таких как извлечение встроенных изображений в PDF, вращение, повышение резкости изображений, выбор страниц для сканирования, выбор стороны для сканирования, цветовой режим, разрешение и т. д.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Gscan2pdf также поддерживает OCR (оптическое распознавание символов) и множество функций, которые доступны из терминала, если вам нужна дополнительная функциональность.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>4. Simple Scan</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://launchpad.net/simple-scan">Simple Scan</a> - это легковесная утилита для сканирования со множеством функций редактирования. Она позволяет сканировать документы одним нажатием кнопки, поворачивать и/или обрезать изображение и сохранять его в формате JPG, PNG или PDF.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По умолчанию она использует разрешение 300 точек на дюйм для фотографий и 150 точек на дюйм для текста - настройки, которые вы можете изменить в меню настроек.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Simple Scan - это приложение для сканирования по умолчанию во многих дистрибутивах Linux, включая рабочий стол GNOME, поэтому вы оно может быть уже установлено у вас.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>5. GIMP с Quitelnsane</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как вы правильно поняли, <a href="https://www.gimp.org/">GIMP</a> способен работать с вашим сканирующим устройством, все, что вам нужно сделать, это установить Quitelnsane.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><a href="https://sourceforge.net/projects/quiteinsane/">Quitelnsane</a> - это графический интерфейс для SANE (Scanner Access Now Easy), и вы можете использовать его с GIMP для сканирования документов и их простого редактирования перед сохранением в предпочитаемом формате.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Существуют также альтернативы, такие как VueScan и TurboPrint Control, но они не являются ни бесплатными, ни открытыми. Существуют ли инструменты сканирования, достойные этого списка, которые мы пропустили? Не стесняйтесь писать свои мысли в разделе комментариев ниже.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://www.fossmint.com/linux-scanner-tools/">5 Scanning Tools for Linux Desktop</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-58073166891554319052022-01-28T09:40:00.000-08:002022-01-28T09:40:35.830-08:004 способа отключить доступ к аккаунту Root в Linux<div style="text-align: justify;"><span style="font-family: verdana;">Учетная запись root является главной учетной записью в Linux и других Unix-подобных операционных системах. Эта учетная запись имеет доступ ко всем командам и файлам в системе с полными разрешениями на чтение, запись и выполнение. Она используется для выполнения любых системных задач: создания/обновления/получения доступа/удаления учетных записей других пользователей, установки/удаления/обновления программных пакетов и многого другого.<span><a name='more'></a></span></span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Поскольку пользователь root обладает абсолютными полномочиями, любые выполняемые им действия являются критическими для системы. В связи с этим любые ошибки пользователя root могут иметь огромное влияние на нормальную работу системы. Кроме того, эта учетная запись может также подвергаться взлому, либо пользователь может использовать ее ненадлежащим образом, случайно, злонамеренно, либо в результате незнания политик.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Поэтому рекомендуется отключить доступ к аккаунту на вашем сервере Linux, вместо этого создайте административную учетную запись, которая должна быть настроена для получения привилегий пользователя root с помощью команды sudo для выполнения критических задач на сервере.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этой статье мы расскажем о четырех способах отключения входа в учетную запись root в Linux.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Внимание: Прежде чем заблокировать доступ к учетной записи root, убедитесь, что вы создали административную учетную запись, способную использовать команду sudo для получения привилегий пользователя root, с помощью команды useradd, и задайте для этой учетной записи надежный пароль. Флаг -m означает создание домашнего каталога пользователя, а -c позволяет указать комментарий:</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;"># useradd -m -c "Admin User" admin
# passwd admin</pre></div><div style="text-align: justify;">Затем добавьте этого пользователя в соответствующую группу системных администраторов с помощью команды usermod, где ключ -a означает добавление учетной записи пользователя, а -G указывает группу, в которую нужно добавить пользователя (wheel или sudo в зависимости от вашего дистрибутива Linux):</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;"># usermod -aG wheel admin #CentOS/RHEL
# usermod -aG sudo admin #Debian/Ubuntu </pre></div><div style="text-align: justify;">Создав пользователя с правами администратора, переключитесь на эту учетную запись, чтобы заблокировать доступ с правами root.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;"># su admin</pre></div><div style="text-align: justify;"><b>1. Изменение командной оболочки пользователя root</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Самый простой способ отключить вход в систему для пользователя root - это изменить его оболочку с /bin/bash (или любой другой оболочки, разрешающей вход пользователя) на /sbin/nologin в файле /etc/passwd, который вы можете открыть для редактирования, используя любой из ваших любимых текстовых редакторов, как показано ниже.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo vim /etc/passwd</pre></div><div style="text-align: justify;">Замените строку:</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">root:x:0:0:root:/root:/bin/bash
на
root:x:0:0:root:/root:<span style="border: 0px; font-weight: 600; margin: 0px; padding: 0px;">/sbin/nologin</span></pre></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhGi61MNDN-lzgYlX_Muz1X42-73bs0nrR5cZAuivCVWfGn4hvnuhFM7-GwL0GRVY51payIGd1pyecvcYyaRH3PZI_7hCn5ucXAYOc7zp1AxY1KChIjgLdh5Y0OjeYfN-S6qFCXUZR5dB2SDCVPdgY1MgxiQIhNSqhlWpcW4DExHKJGbPT8bqNAjyLC=s512" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="135" data-original-width="512" src="https://blogger.googleusercontent.com/img/a/AVvXsEhGi61MNDN-lzgYlX_Muz1X42-73bs0nrR5cZAuivCVWfGn4hvnuhFM7-GwL0GRVY51payIGd1pyecvcYyaRH3PZI_7hCn5ucXAYOc7zp1AxY1KChIjgLdh5Y0OjeYfN-S6qFCXUZR5dB2SDCVPdgY1MgxiQIhNSqhlWpcW4DExHKJGbPT8bqNAjyLC=s16000" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Сохраните файл и закройте его.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">С этого момента, когда пользователь root входит в систему, он/она получит сообщение «This account is currently not available». Это сообщение по умолчанию, но вы можете изменить его и задать собственное сообщение в файле /etc/nologin.txt.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Этот метод эффективен только для программ, которым требуется оболочка для входа пользователя, в противном случае клиенты sudo, ftp и email могут получить доступ к учетной записи root.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>2. Отключение авторизации root с устройства консоли (TTY)</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Во втором методе используется модуль PAM с именем pam_securetty, который разрешает root-доступ, только если пользователь входит в «защищенный» TTY, как определено в листинге в /etc/securetty.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Приведенный выше файл позволяет вам указать, на каких устройствах TTY разрешен вход в систему пользователю root, очистка этого файла предотвращает вход в систему root на всех устройствах, подключенных к системе.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы создать пустой файл, выполните:</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo mv /etc/securetty /etc/securetty.orig
$ sudo touch /etc/securetty
$ sudo chmod 600 /etc/securetty</pre></div><div style="text-align: justify;">Этот метод имеет некоторые ограничения, он затрагивает только такие программы, как вход в систему, менеджеры дисплеев (например, gdm, kdm и xdm) и другие сетевые службы, которые запускают TTY. Такие программы, как su, sudo, ssh и другие связанные утилиты openssh будут иметь доступ к учетной записи root.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>3. Отключение доступа к Root по SSH</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Самый распространенный способ доступа к удаленным серверам или VPS - через SSH, и для блокировки входа пользователя root под ним необходимо отредактировать файл /etc /ssh /sshd_config.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo vim /etc/ssh/sshd_config</pre></div><div style="text-align: justify;">Затем раскомментируйте (если это закомментировано) директиву PermitRootLogin и установите для нее значение no, как показано на скриншоте.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEj3VrJGSjUxthaCTg50k39Cd-Cmn4vDjEnYzFoutUvoDdw65f7Ns8Fx-BW2fvWG7rwZyi0v4LrpH83aBTZl0iwPj-Hw18IjjI3eRcSWAnV4VOGKN4c80dKK5j3O-E2CMlj2zxvz8FY0uulmJDTY_ruqtwlGVdSpTbwJTgSlU0fEVKSHNsDKKyFX4Eq1=s502" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="173" data-original-width="502" src="https://blogger.googleusercontent.com/img/a/AVvXsEj3VrJGSjUxthaCTg50k39Cd-Cmn4vDjEnYzFoutUvoDdw65f7Ns8Fx-BW2fvWG7rwZyi0v4LrpH83aBTZl0iwPj-Hw18IjjI3eRcSWAnV4VOGKN4c80dKK5j3O-E2CMlj2zxvz8FY0uulmJDTY_ruqtwlGVdSpTbwJTgSlU0fEVKSHNsDKKyFX4Eq1=s16000" /></a></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как только вы закончите, сохраните и закройте файл. Затем перезапустите службу sshd, чтобы применить последние изменения в конфигурации.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo systemctl restart sshd
OR
$ sudo service sshd restart </pre></div><div style="text-align: justify;">Как вы, возможно, уже знаете, этот метод влияет только на набор инструментов openssh, такие программы, как ssh, scp, sftp, будут заблокированы от доступа к учетной записи root.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>4. Ограничение доступа root к службам с помощью PAM</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Pluggable Authentication Modules (сокращенно PAM) - это централизованный, подключаемый, модульный и гибкий метод аутентификации в системах Linux. PAM через модуль /lib/security/pam_listfile.so обеспечивает большую гибкость в ограничении привилегий определенных учетных записей.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вышеупомянутый модуль может использоваться для ссылки на список пользователей, которым не разрешено входить через некоторые целевые сервисы, такие как login, ssh и любые программы, поддерживающие PAM.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">В этом случае мы хотим отключить доступ пользователя root к системе, ограничив доступ к службам входа и sshd. Сначала откройте и отредактируйте файл для целевой службы в каталоге /etc/pam.d/, как показано ниже.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo vim /etc/pam.d/login
OR
sudo vim /etc/pam.d/sshd</pre></div><div style="text-align: justify;">Затем добавьте приведенную ниже конфигурацию в один из этих файлов (или в оба).</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">auth required pam_listfile.so \
onerr=succeed item=user sense=deny file=/etc/ssh/deniedusers</pre></div><div style="text-align: justify;">Когда вы закончите, сохраните и закройте каждый файл. Затем создайте простой файл /etc/ssh/deniedusers, который должен содержать по одному элементу в строке и не должен читаться всеми.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Добавьте в него имя root, затем сохраните и закройте его.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo vim /etc/ssh/deniedusers</pre></div><div style="text-align: justify;">Также установите необходимые разрешения на это.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ sudo chmod 600 /etc/ssh/deniedusers</pre></div><div style="text-align: justify;">Этот метод влияет только на те программы и службы, которые поддерживают PAM. Вы можете заблокировать root-доступ к системе через ftp и почтовые клиенты и многое другое.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для получения дополнительной информации обратитесь к соответствующим справочным страницам.</div><div style="text-align: justify;"><pre style="background: rgb(33, 37, 41); border-radius: 5px; border: 10px solid rgb(242, 240, 240); color: white; font-family: monospace, monospace; font-size: 17px; line-height: 1.625; margin-bottom: 30px; margin-top: 30px; max-width: 100%; overflow-wrap: break-word; overflow: auto hidden; padding: 10px 10px 10px 18px; text-align: start;">$ man pam_securetty
$ man sshd_config
$ man pam</pre></div><div style="text-align: justify;">Оригинал: <a href="https://www.tecmint.com/disable-root-login-in-linux/">4 Ways to Disable Root Account in Linux</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-9993565620081685282022-01-27T11:15:00.000-08:002022-01-27T11:15:50.369-08:00Команда Pgrep в Linux<div style="text-align: justify;"><span style="font-family: verdana;">В этой статье рассматриваются основы использования команды pgrep.</span></div><span style="font-family: verdana;"><div style="text-align: justify;"><br /></div><div style="text-align: justify;">pgrep - это утилита командной строки, которая позволяет вам находить идентификаторы процессов запущенной программы на основе заданных критериев. Это может быть полное или частичное имя процесса, пользователь, выполняющий процесс, или другие атрибуты.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда pgrep является частью пакета procps (или procps-ng), который предустановлен почти во всех дистрибутивах Linux.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Использование команды pgrep</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Синтаксис команды pgrep следующий:</div><div style="text-align: justify;"><pre class="chroma" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-sh" data-lang="sh" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">pgrep <span class="o" style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #666666; min-width: 0px;">[</span>OPTIONS<span class="o" style="--tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #666666; min-width: 0px;">]</span> <PATTERN></code></pre></div><div style="text-align: justify;">Соответствующий паттерн <PATTERN> указывается с использованием расширенных регулярных выражений.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">При вызове без каких-либо параметров pgrep отображает PID всех запущенных программ, соответствующих заданному имени. Например, чтобы найти PID SSH-сервера, вы должны выполнить:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep ssh</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если есть запущенные процессы с именами, соответствующими «ssh», их PID будут отображаться на экране. Если совпадений не найдено, вывод пустой.</div><div style="text-align: justify;"><pre style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-output" data-lang="output" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">1039
2257
6850
31279</code></pre></div><div style="text-align: justify;">Команда возвращает 0, если хотя бы один запущенный процесс совпадает с запрошенным именем. В противном случае код выхода равен 1. Это может быть полезно при использовании в скриптах оболочки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">pgrep выводит каждый совпавший идентификатор процесса с новой строки. Параметр -d позволяет указать другой разделитель. Например, если вы хотите использовать пробел в качестве разделителя, введите:</div><div style="text-align: justify;"><pre class="terminal" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;"><code class="terminal-line" prefix="$" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; display: block; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">pgrep ssh -d' '</code><button class="code-copy button main small" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; appearance: button; background-image: none; border-color: rgb(229, 231, 235); border-radius: 0.25rem; border-style: solid; border-width: 0px; color: white; cursor: pointer; font-family: inherit; font-size: 0.75rem; letter-spacing: 0.05em; line-height: 1rem; margin: 0px; opacity: 0; padding: 0.25rem 0.5rem; pointer-events: none; position: absolute; right: 0.5rem; top: 0.5rem; transition: opacity 0.5s ease 0s;" type="button">Copy</button></pre><pre style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-output" data-lang="output" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">1039 2257 6850 31279</code></pre></div><div style="text-align: justify;">Параметр -l указывает pgrep показывать имя процесса вместе с его идентификатором:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep ssh -l</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">pgrep использует регулярные выражения для выполнения операции поиска и выводит список всех процессов, которые содержат ssh в своих именах:</div><div style="text-align: justify;"><pre style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-output" data-lang="output" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">1039 sshd
2257 ssh-agent
6850 ssh
31279 ssh-agent</code></pre></div><div style="text-align: justify;">Если вы хотите сопоставить только те процессы, имена которых точно соответствуют шаблону поиска, вы должны использовать:</div><div style="text-align: justify;"><pre class="terminal" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;"><code class="terminal-line" prefix="$" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; display: block; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">pgrep '^ssh$' -l</code><button class="code-copy button main small" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; appearance: button; background-image: none; border-color: rgb(229, 231, 235); border-radius: 0.25rem; border-style: solid; border-width: 0px; color: white; cursor: pointer; font-family: inherit; font-size: 0.75rem; letter-spacing: 0.05em; line-height: 1rem; margin: 0px; opacity: 0; padding: 0.25rem 0.5rem; pointer-events: none; position: absolute; right: 0.5rem; top: 0.5rem; transition: opacity 0.5s ease 0s;" type="button">Copy</button></pre><pre style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 0.75rem; line-height: 1rem; margin-bottom: 1rem; margin-top: 1rem; min-width: 0px; overflow: auto; padding: 1rem; position: relative; text-align: start;" tabindex="0"><code class="language-output" data-lang="output" style="--tw-bg-opacity: 1; --tw-ring-color: rgb(59 130 246/0.5); --tw-ring-offset-color: #fff; --tw-ring-offset-shadow: 0 0 #0000; --tw-ring-offset-width: 0px; --tw-ring-shadow: 0 0 #0000; --tw-rotate: 0; --tw-scale-x: 1; --tw-scale-y: 1; --tw-scroll-snap-strictness: proximity; --tw-shadow-colored: 0 0 #0000; --tw-shadow: 0 0 #0000; --tw-skew-x: 0; --tw-skew-y: 0; --tw-translate-x: 0; --tw-translate-y: 0; border: 0px solid rgb(229, 231, 235); box-sizing: border-box; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 1rem; line-height: 1.5rem; min-width: 0px; padding: 0px; word-break: break-word;">6850 ssh</code></pre></div><div style="text-align: justify;"><i>Символ каретки (^) соответствует началу строки, а доллар $ - концу.</i></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">По умолчанию pgrep сопоставляется только с именем процесса. Если используется опция -f, команда сопоставляется с полными списками аргументов.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -f ssh</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Используйте параметр -u, чтобы указать pgrep отображать процессы, выполняемые данным пользователем:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -u root</span></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;"><br /></span></div><div style="text-align: justify;">Чтобы указать нескольких пользователей, разделите их имена запятыми:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -u root,mark</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Вы также можете комбинировать параметры и шаблоны поиска. Например, чтобы напечатать все процессы и их имена, которые выполняются под пользователем «mark» и содержат «gnome» в своих именах, вы должны ввести:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -l -u mark gnome</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы отображать только самые старые или самые новые запущенные процессы, используйте параметр -n (для самых новых) или -o (для самых старых).</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Например, чтобы найти самый новый процесс, запущенный пользователем «mark», вы должны ввести:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -lnu mark</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Как видно из приведенного выше примера, вы также можете комбинировать параметры без пробела между ними и с одним тире.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Чтобы отменить соответствие, то есть показать только процессы, не соответствующие заданным критериям, используйте параметр -v. Следующая команда выведет все процессы, которые не выполняются пользователем «mark»:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -v -u mark</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Параметр -c указывает pgrep выводить только количество подходящих процессов. Например, чтобы найти процессы, которые выполняются под пользователем «mark», введите:</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><span style="background-color: #f3f4f6; color: #1f2937; font-family: "Roboto Mono", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; font-size: 16px; text-align: start; white-space: pre;">pgrep -c -u mark</span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Команда pgrep используется для определения PID запущенной программы на основе различных критериев.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Для получения дополнительной информации о команде pgrep посетите <a href="http://man7.org/linux/man-pages/man1/pgrep.1.html">страницу руководства pgrep</a> или введите man pgrep в терминале.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://linuxize.com/post/pgrep-command-in-linux/">Pgrep Command in Linux</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0tag:blogger.com,1999:blog-5899477667926811092.post-46114309787041511382022-01-26T10:54:00.000-08:002022-01-26T10:54:04.778-08:00Обзор дистрибутива Fedora 35<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjRfbw8gyDVOQRfF4ouAHJR51VQA53u66HF0qa1kKeaOZIyiPetSwv_MaF7RM2KF99Afpd_34nNmzvDFm1rMArgt8hE9HSEauAY1U2WK7OqkpFDBjk0JF8zHGujjFxsyxnck9Szd8Xecs2e1BsZLUKQSDTCk-c0zUBvetPxHxXkONqrRDt5ffbtM4NL=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1200" data-original-width="1920" height="400" src="https://blogger.googleusercontent.com/img/a/AVvXsEjRfbw8gyDVOQRfF4ouAHJR51VQA53u66HF0qa1kKeaOZIyiPetSwv_MaF7RM2KF99Afpd_34nNmzvDFm1rMArgt8hE9HSEauAY1U2WK7OqkpFDBjk0JF8zHGujjFxsyxnck9Szd8Xecs2e1BsZLUKQSDTCk-c0zUBvetPxHxXkONqrRDt5ffbtM4NL=w640-h400" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><span style="font-family: verdana;"><div style="text-align: justify;">Fedora 35 была выпущена 2 ноября 2021 года, немного позже ожидаемого релиза в конце октября. Я уважаю их задержку, команда Fedora не хотела выпускать продукт с ошибками, или у них все еще были некоторые ключевые проблемы, которые требовалось решить. Тем не менее Fedora 35 уже здесь. По некоторым сведениям, Fedora — это дистрибутив Linux, целью которого является создание «новаторской, бесплатной платформы с открытым исходным кодом для оборудования, облаков и контейнеров, которая позволяет разработчикам программного обеспечения и членам сообщества создавать индивидуальные решения для своих пользователей» (цитата с сайта getfedora.org.) Многие пользователи Linux знают Fedora как общедоступную версию Red Hat Enterprise Linux, корпоративную версию Fedora, известную прежде всего тем, что она работает на серверах, и компанией, предоставляющей поддержку.<span><a name='more'></a></span></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Установка</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Процесс установки Fedora 35 был простым. Я всегда шифрую свои диски с помощью шифрования LUKS, и процесс установки предложил мне простой способ сделать это. Кроме того, как пользователь, который меняет дистрибутивы примерно 2-3 раза в год, я храню все свои игры Steam на одном жестком диске, а дистрибутивы устанавливаю на другой (home и root на одном диске, обычно на одном разделе). GNOME Disks (после установки) позволяет настроить автоматическое монтирование жесткого диска, на котором хранятся все мои игры; этот диск также зашифрован, и когда я настраиваю автоматическое монтирование через GNOME Disks, приложение сохраняет ключ шифрования на зашифрованном диске LUKS, на котором я установил Fedora. Очень удобно.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEhNOgiDMpRKUBdlbhlzesA6TMu3DOIK2-8VWfAYQu8KLJrlRsyknq7HAX8xSMNZvL4gTfmONbdCR04Vef5p6pkD7-NVtxBhUM1nyAcVcmf5hmcPWSxr8BkPAeSeYy0-VUpaAcXtRaQK2ZI4nhO7Z424jei_QGdrgPNnpTlfivxsNMN-jmJSmHBd0FpU=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEhNOgiDMpRKUBdlbhlzesA6TMu3DOIK2-8VWfAYQu8KLJrlRsyknq7HAX8xSMNZvL4gTfmONbdCR04Vef5p6pkD7-NVtxBhUM1nyAcVcmf5hmcPWSxr8BkPAeSeYy0-VUpaAcXtRaQK2ZI4nhO7Z424jei_QGdrgPNnpTlfivxsNMN-jmJSmHBd0FpU=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Первые впечатления</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">С точки зрения непрофессионала и человека, установившего десятки дистрибутивов за последние пять лет, установка была простой и отличной, но, похоже, чего-то не хватало. При первой загрузке я понимаю, чего не хватало - я не настроил профиль пользователя во время установки, что странно. Но это работает. Это почти как если бы вы устанавливали операционную систему для машины, и тот, кто получит машину, может сделать все остальное; ощущение похоже на установку OEM.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEh160u_qGIifZHJUPOmMVpL6mT9PkT7gu6wrwRvJaULWgJY2Nx5sMblUA--wvs_oEbVvhC6QbhDbdKJweGXeW7gM3WaZa_No4JXxh2zZjzlbxXFGPV3V_pzjpjFzrF_dKtyTULPiLMBUtV8QOPI70HXvbemxpS2RcYjsgxmORkRYPPZDv_1C2NVh_9c=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEh160u_qGIifZHJUPOmMVpL6mT9PkT7gu6wrwRvJaULWgJY2Nx5sMblUA--wvs_oEbVvhC6QbhDbdKJweGXeW7gM3WaZa_No4JXxh2zZjzlbxXFGPV3V_pzjpjFzrF_dKtyTULPiLMBUtV8QOPI70HXvbemxpS2RcYjsgxmORkRYPPZDv_1C2NVh_9c=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">При первой загрузке пользователю предоставляется экран приветствия. Сначала он отображает параметры конфиденциальности, что позволяет отключить службы определения местоположения и автоматические отчеты о проблемах. Как защитник конфиденциальности, я ценю и уважаю эти возможности. Затем экран приветствия позволяет включать сторонние репозитории. Это уловка.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Это уловка, потому что, если вы читали введение, Fedora — это платформа с открытым исходным кодом. То, что они сделали с помощью этого простого переключателя, очень важно: они предоставили пользователю возможность включать сторонние репозитории. Пользователь может решить, хочет ли он использовать проприетарное программное обеспечение для поддержки своего железа, а большинству из нас требуется проприетарное программное обеспечение, будь то от NVIDIA, Intel, Microsoft и т. д. Fedora, спасибо за расширение возможностей пользователя с помощью этой простой опции. Следующий раздел под названием «About» позволяет пользователю настроить профиль и пароль, оценивая надежность пароля в диапазоне от слабого до сильного. Обычно этот процесс выполняется при установке, но мне нравится, что команда разработчиков Fedora пошла своим путем.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Повседневное использование</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Рабочий стол GNOME 41 по умолчанию прекрасен. Хотя, безусловно, есть несколько фанатиков Fedora, вы не найдете много фанатиков в сообществе Fedora (сообщество кажется очень добрым и профессиональным). Эта корреляция также применима к пользователям среды рабочего стола GNOME. GNOME 41 красив, требует минимальной настройки (например, включение темной темы), и я предпочитаю все остальные настройки по умолчанию прямо из коробки. Чего мне не хватает в Fedora (что было доступно в Arch Linux AUR), так это плагина NetworkManager GNOME WireGuard, который позволял настраивать соединения WireGuard через графический интерфейс. Я не возражаю против использования командной строки, но как обозревателю мне нравится видеть более удобные для пользователя интерпретации приложений командной строки.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjF0SjYHQH4Hf32bbAZBG_ZmmqZzda7EzDpyDY0cWFcmG8_xebKvAAjSoPZgF3zdEkpEUCbZC6iEoOBzltqU-9VsqPe8fQ7tep-qld36wgl1-ZNQaOfwTEGw__b8AuVCLammYxhZp4KTda0KPyJIkR1AabWo4uDnIJ0K8qYe2XncsBPUE0kaa-iAh4B=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEjF0SjYHQH4Hf32bbAZBG_ZmmqZzda7EzDpyDY0cWFcmG8_xebKvAAjSoPZgF3zdEkpEUCbZC6iEoOBzltqU-9VsqPe8fQ7tep-qld36wgl1-ZNQaOfwTEGw__b8AuVCLammYxhZp4KTda0KPyJIkR1AabWo4uDnIJ0K8qYe2XncsBPUE0kaa-iAh4B=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Установка драйверов NVIDIA на ноутбуки Optimus (с двумя видеокартами) за последние два-три года стала намного проще. С NVIDIA Prime Offloading большинству дистрибутивов требуются только относительно новые драйверы NVIDIA и новые драйверы X.Org. У меня были лишь незначительные проблемы с использованием карты NVIDIA на ноутбуке с Fedora — мне нужно было установить пакет kernel-devel через диспетчер пакетов dnf, чтобы заставить NVIDIA работать. Оглядываясь назад, я хотел бы установить драйверы NVIDIA через графический интерфейс GNOME Software, но я использовал командную строку, прежде чем подумал об использовании графического интерфейса.</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEghAYRW9abdjoehW_nAzCJmcOEZ-aw3aXmY_umwQQvV3hqjm9ktvEi6HCyZSRxqCqPTMMVd3wSdclAVU5F3WZBH4Zkb1Px-rlmgxKstsKUnkU1lnMTI542RJsryQayEyCXj18yqqf8BAvllIYYZjnUd9qpddBQP9bCsvbtPjTIWJm_vJ-hm82IionmW=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEghAYRW9abdjoehW_nAzCJmcOEZ-aw3aXmY_umwQQvV3hqjm9ktvEi6HCyZSRxqCqPTMMVd3wSdclAVU5F3WZBH4Zkb1Px-rlmgxKstsKUnkU1lnMTI542RJsryQayEyCXj18yqqf8BAvllIYYZjnUd9qpddBQP9bCsvbtPjTIWJm_vJ-hm82IionmW=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Время от экрана расшифровки LUKS до GNOME Display Manager составляло примерно 20 секунд, что неплохо для времени загрузки. Учтите также, что я использую твердотельный жесткий диск для моего основного установочного носителя, что значительно сокращает время загрузки.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">GNOME 41 отлично отполирован. Кажется, что все работает из коробки. В то время как в других дистрибутивах мне нужно было бы настроить множество параметров и драйверов, чтобы все работало правильно, Fedora просто работает. Это распространяется на все аспекты операционной системы. Заставка при загрузке проста и красива. Установка обновлений чистая, и перезагрузка при установке хорошо реализована. Fedora знает, как взять под контроль операционную систему и сделать это правильно. Мне нравится, как dnf (менеджер пакетов) обрабатывает обновления и устанавливает программы. Мои игры в Steam работали, как и ожидалось. Я мог легко редактировать фотографии, используя программы для редактирования фотографий по своему выбору. Firefox отлично работал с потоковым мультимедиа. Работа выхода HDMI была идеальной. Да, могут быть более настраиваемые дистрибутивы, но Fedora кажется одним из, если не самым профессиональным дистрибутивом, который я использовал (ранее я не был пользователем Fedora).</div><div style="text-align: justify;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/a/AVvXsEiRvtCqhpZFlm08nU_OZ4arlOiJYsAlUED_CgwEveExdqrXguOVXFpYtkWvc7X5PLNhZVOGrzQsPQz7V8J2J75WpD2MzUN4ZNhfuJLN9lkzF_fA8YLluBFVnb5lP5cTuS0k8iWStvQADxmWfnBbeD7dHmh2Savlh5zczBAEcwUagMy3bVwYDH-Z-a4N=s1920" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1080" data-original-width="1920" height="360" src="https://blogger.googleusercontent.com/img/a/AVvXsEiRvtCqhpZFlm08nU_OZ4arlOiJYsAlUED_CgwEveExdqrXguOVXFpYtkWvc7X5PLNhZVOGrzQsPQz7V8J2J75WpD2MzUN4ZNhfuJLN9lkzF_fA8YLluBFVnb5lP5cTuS0k8iWStvQADxmWfnBbeD7dHmh2Savlh5zczBAEcwUagMy3bVwYDH-Z-a4N=w640-h360" width="640" /></a></div><br /><div style="text-align: justify;"><br /></div><div style="text-align: justify;"><b>Заключение</b></div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Fedora выпустила отполированную, красивую и чистую новую версию с релизом Fedora 35. Возможно, это не главное, изменяющее жизнь, переосмысление Linux, но это надежное обновление, привносящее новые функции и хорошо продуманное. Не все дистрибутивы Linux готовы к использованию из коробки, но, к счастью, у нас есть Fedora 35. Я могу быть хроническим любителем замены дистрибутивов, но я останусь с Fedora в обозримом будущем. Я настоятельно рекомендую Fedora 35 новым пользователям Linux, профессионалам и опытным пользователям.</div><div style="text-align: justify;"><br /></div><div style="text-align: justify;">Оригинал: <a href="https://distrowatch.com/weekly.php?issue=20211122#fedora">Review: Fedora 35</a></div></span>alexnovhttp://www.blogger.com/profile/02904197147860806298noreply@blogger.com0