23 сент. 2013 г.

Результаты голосования Государственной Думы по реформе РАН (три чтения)

Как вы уже знаете, несмотря на массовые протесты ученых на прошлой неделе, Государственная Дума удивительно быстро "оформила" реформу РАН всего лишь за один день, 18 сентября. Подробнее о некоторых перипетиях закона, можно посмотреть в небольшой заметке Ъ.
Нас же, как обычно интересует, каким образом голосовали народные избранники. Сам законопроект по реформе РАН имеет №305828-6 и имеет  следующее официальное название: "О Российской академии наук, реорганизации государственных академий наук и внесении изменений в отдельные законодательные акты Российской Федерации (в части уточнения правового положения, полномочий и функций Российской академии наук, реорганизации государственных академий наук)".
Формальную процедуру прохождения законопроекта можно посмотреть на его странице в АСОЗД:
  1. Законопроект был официально зарегестрирован и направлен Председателю ГД 28.06.2013
  2. В начале июля (03.07 и 05.07) законопроект прошел первое и второе чтение соответственно.
  3. После летних каникул, 17.09 был вернут во второе чтение. 
  4. 18.09.2013 законопроект по реформе РАН был принят во втором и в третьем чтении практически одновременно. 
Я уже писал о результатах первых двух чтений, теперь, к сожалению, можно обновить эти результаты.
Как видно на графике,  стабильно против законопроекта выступала только КПРФ. Правда во втором втором чтении они почему-то сначала не голосовали, а в третьем чтении проголосовали против (хотя оба голосовании прошли с интервалом всего лишь в 20 минут). Причем в третьем чтении возникли три коммуниста-ренегата (Бифов А.Ж., Кочиев Р.А., Тайсаев К.К.), которые неожиданно проголосовали "за". В чем был смысл такого хитрого маневра?
Единая Россия (ЕР) и ЛДПР практически полным составом поддержали законопроект. Справедливая Россия голосовала "против" в первом чтении, но потом передумала. Причем среди справороссов тоже возникли метания - во втором чтении вся фракция поддержала законопроект (10 не голосовало), а в третьем чтении - откуда-то возникло 17 противников, которые 20 минут назад были "за".
Поэтому не только суть законопроекта вызывает вопросы, но и собственно говоря, странным метаниям депутатов тоже сложно дать логичные объяснения.
Как обычно, данные по голосованию доступны в табличной форме - найдите своего любимого депутата.

11 сент. 2013 г.

Интерактивная карта результатов выборов мэра г. Москвы (8 сентября 2013 года) по отдельным УИКам

Как вы знаете, 8 сентября состоялись выбора мэра г. Москвы.  Уже довольно много материалов в Сети посвящено статистическому и географическому анализу этих выборов на основе официальных данных Мосгоризбиркома.

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

26 авг. 2013 г.

Про пенсионную систему и пенсионную реформу - ч.2. Выбор НПФ или УК.

Первая часть, посвященная общим вопросам пенсионной реформы - здесь.

Итак, вы определились и решили сохранить размер социальных отчислений на накопительную часть пенсии в пределах 6%. Что делать дальше? Предполагаем, что вы являетесь "молчуном", то есть еще не писали никаких заявлений и не переводили свои пенсионные накопления.

На укрупненном уровне выбор состоит из трех основных альтернатив:
  1. Остаться в ВЭБе (официально это именуется ГУК - государственная управляющая компания), там где ваши пенсионные накопления находятся сейчас. 
  2. Передать свои накопления управляющей компании (УК). Управление накопительным счетом остается в ПРФ. 
  3. Передать свои накопления негосударственному пенсионному фонду (НПФ). Управление накопительным пенсионным счетом также передается в НПФ.  


10 авг. 2013 г.

Как построить график с двумя осями Y и другие хитрости построения графиков в Excel

Некоторое время назад с удивлением обнаружил, что довольно много посетителей с поисковых систем попадают сюда с запросами типа "построить график с двумя осями y excel". А там речь идет про R :)

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

8 авг. 2013 г.

Про пенсионную реформу и пенсионные накопления. Что делать?

Update. Вторая часть про выбор НПФ/УК - здесь 


Многие слышали про то, что то с пенсионной системой происходят какие-то изменения. Некоторые, наверняка, слышали пенсионный калькулятор Минтруда. Кое-кто, возможно, даже попробовал с ним поиграться вбить свои параметры своей зарплаты и возраста – и огорчиться или обрадоваться полученным результатам. В отличие от прошлых пенсионных реформ - 2002 и 2010 годов, которые проходили где-то «там», далеко, и не требовали от нас никаких сознательных действий,  сейчас – не так. Необходимо сделать осознанный выбор и, возможно, предпринять некоторые действия. 
Это статья – попытка разобраться самому (и рассказать интересующимся) о том, что происходит с пенсионной системой сейчас и какие действия мне кажется разумным предпринять. Я, разумеется, никому не навязываю своего мнения, не даю никаких инвестиционных рекомендаций и могу просто ошибаться. Для простоты я также буду описывать пенсионные параметры для тех, кто младше 1967 г.р. (то есть, кто младше 46 лет) и соответственно участвует в обязательной системе пенсионных накоплений.


Про социальные взносы и суть пенсионной системы 

Сначала некоторый простой ликбез и размышления о том, как и за счет чего формируется пенсия вообще и как осуществляются социальные отчисления в рамках действующей в России системы. Даже у людей моего возраста достаточно смутные представления о том, что такое нынешняя пенсионная система и как она работает. В общем смысле, пенсия – это отложенные сбережения на тот период, когда человек становится нетрудоспособным по тем или иным причинам (возраст, нетрудоспособность или просто нежелание работать). Поэтому пенсия  - это не только то, что можно ожидать от государства. Покупка дополнительной недвижимости, к примеру, в расчете на последующую сдачу ее в аренду и получение дохода от этого – тоже возможная форма пенсионного обеспечения.
Общая цель состоит в том, чтобы сделать сбережения в «тучные» годы, чтобы использовать их когда возникнет необходимость. Государство может вообще не устанавливать обязательной пенсионной системы и тогда забота каждого отдельного человека – обеспечить свое существование на старости. Можно покупать недвижимость, копить деньги на депозите или рассчитывать на поддержку детей – дело личное. Но почти всегда государства устанавливают обязательную пенсионную систему, которая заставляет делать такие сбережения и гарантирует получение хотя бы минимальной пенсии - зачастую люди не делают или не могут самостоятельно сделать необходимых накоплений.
В России тоже действует обязательная пенсионная система, которая состоит из двух частей – работников, осуществляющих социальные взносы со своей заработной платы (точнее говоря, это делают работодатели за своих работников) и пенсионеров, получающих пенсии.
Любой работодатель, работающий «по белому», обязан совершать осуществлять социальные отчисления на своих работников. Общая ставка отчислений составляет (по состоянию на 2013 год)  30% в пределах первых 568 тыс. рублей в год и 10% – свыше этой суммы. То есть, если работник получает меньше 568/12 = 47,33 тыс. рублей/месяц, то социальные отчисления составляют 30%. Если больше этой суммы, тогда происходит деление на первые 568 тыс. и то, что свыше этой суммы.
Куда идут эти 30%? Как видно из таблицы – это три государственных внебюджетных фонда. В данном случае нас интересуют только часть, связанная с Пенсионным фондом Российской Федерации (ПФР). 

База для начисления страховых взносов
Тариф страхового взноса, процентов
Итого
Пенсионный фонд
Фонд социального страхования
Федеральный фонд обязательного медицинского страхования
В пределах 568 000 рублей в год
22
2.9
5.1
30
Свыше 568 000 рублей в год
10
0
0
10

Чтобы нагляднее понять регрессивный характер социальных отчислений, посмотрим на простую диаграмму, которая показывает связь заработной платы и отчислений в ПРФ, которые осуществляет работодатель.
К примеру, при средней  заработной плате в 100 тыс. рублей ежемесячно (1,2 млн рублей/год), работодатель перечислит в ПРФ за целый год 188.2 тыс. (125  = 568 * 22%, 63.2 = (1200-568)*10%). В данном случае имеется в виду «грязная» заработная плата, то есть включающая НДФЛ в размере 13%. Регрессивный характер отчислений приводит к тому, что максимальная возможная пенсия в принципе ограничена "верхней" планкой социальных взносов ( подробнее об этом - ниже). 





Возникает следующий логичный вопрос. Куда идут те 22%, отчисляемые в ПФР?
22% делятся на три части – солидарная, страховая и накопительная. Все равно звучит не очень понятно? По простому смысл этого разделения такой:
  1.  Солидарная часть  (6%) – это часть, которая напрямую идет на выплаты нынешним пенсионерам.  Считается, что выплата солидарной части взносов обеспечивает получение базовой части пенсии в будущем.
  2. Страховая часть (10%) – так же идет на текущие выплаты ПФР пенсионерам, но от нее зависит размер собственной пенсии в будущем. Действующая сейчас пенсионная система «гарантирует» выплату страховой части взносов будущему пенсионеру с учетом индексации.
  3.  Накопительная часть (6%) – это та часть, которая учитывается на личном пенсионном счете человека и о состоянии которого ежегодно приходят «письма счастья». По достижении пенсионного возраста накопленная сумма выплачивается пенсионеру в составе его пенсии. 

О тех 10%, которые платятся свыше 568 тыс. рублей, можно не беспокоиться. Эти средства идут в солидарную часть, то есть на текущие выплаты пенсионерам и по сути представляют форму налогообложения высоких доходов. На будущую пенсию они не влияют.  

Как определяется пенсия сейчас? 

Три части социальных взносов определяют три части будущей пенсии:
Пенсия  = Б + СЧ (страховая часть) + НЧ (накопительная часть).
  1.  Б. Солидарная часть обеспечивает базовую часть пенсии, который с 01.04.2013 составляет 3610 рублей 31 копейка в месяц (именно так, 31 копейка!). По сути, это минимальный размер пенсии, который не зависит ни от стажа, ни от размеров социальных взносов. Он гарантирован любому пенсионеру.
  2. СЧ = ПК/Т, где ПК – это сумма учтенного расчетного пенсионного капитала. Т – предполагаемое время выплаты пенсий (в 2013 году – 228 месяцев или 19 лет). ПК = ПK1 + СВ + ПК2, где ПК1 – расчетный капитал на стаж до 2002 года, ПК2 – сумма страховых частей социальных отчислений после 2002 года, СВ – сумма валоризации (дополнительная оценка стажа до 1991 года). Понятно, что для людей моего возраста имеет значение только компонента ПК2. ПК индексируется до выхода на пенсию – сейчас индексация происходит на темпы роста заработной платы в стране с учетом на рост собственных доходов ПФР.
  3.  НЧ = ПН/Т. ПН – сумма пенсионных накоплений, учтенная на индивидуальном счете, Т – те же 228 месяцев, как и в страховой части. По умолчанию (средства «молчунов») пенсионные накоплению управляются ВЭБом, будущий пенсионер может перевести свои средства в негосударственный пенсионной фонд (НПФ) или поручить управление ими управляющей компании (УК).

Как это не может показаться странным, но нынешняя пенсионная система достаточно щедра. Она гарантирует выплату базовой части пенсии и возвращение будущему пенсионеру страховой и накопительной части его социальных взносов.
Однако ограничение «сверху» на размер социальных взносов приводит к тому, что максимальный размер пенсии в принципе ограничивается определенной суммой. Простой расчет показывает, что в рамках действующей системы невозможно получить пенсию (без учета различных льгот и надбавок), превышающую 20 тыс. руб/месяц в текущих ценах (при 40 годах отчислений по максимальной текущей планке). 
Другая форма щедрости –  сейчас для получения трудовой пенсии по старости достаточно лишь 5 лет трудового стража. В определенной степени это приводит к несправедливости – размер пенсии между человеком с 40 летним и 5 летним стажем может отличаться не слишком сильно, при этом в среднем они будут получать пенсию в течение 19 лет. 
Новая пенсионная реформа – уже третья по счету (2002, 2010 и 2013) – призвана уменьшить эти «щедроты» и создать стимулы для работников с тем, чтобы они осуществляли отчисления и продолжали работать и после достижения ими пенсионного возраста, если есть такая возможность.  

Что изменится в пенсионной системе?

Основных изменений два:
  1. Вводится система пенсионных коэффициентов с 2015 года (это еще не утверждено, а существует в форме законопроектов)
  2. Изменяется соотношение между страховой и накопительной частью «по умолчанию» с 2014 года (а это уже точно утверждено!). 
Рассмотрим предлагаемую систему пенсионных коэффициентов. Нынешняя система гарантирует возвращению пенсионеру его страховых взносов (с учетом индексации), и это является обязательством для государства. Система пенсионных коэффициентов де факто обеспечит «гибкость» с точки зрения обязательств для государства – гарантируется не выплата конкретных рублей страховых взносов, а зависимость будущей пенсии от некоторых условных коэффициентов. Стоимость коэффициента будет меняться ежегодно и очевидным образом будет зависеть от финансового положения ПФР и устойчивости госбюджета. В нынешнем законопроекта (ФЗ "О страховых пенсиях") не прописан точный порядок расчета этого коэффициента!
Сергей Журавлев весьма метко, на мой взгляд, сравнил систему пенсионных коэффициентов с системой трудодней в советских колхозах. С точки зрения государства появляется возможность изменять сумму своих обязательств при необходимости. С точки зрения будущего пенсионера – появляется неопределенность относительно того, какая же все-таки будет пенсия через ...дцать лет в рублях. По этим причинам не стоит воспринимать буквально те цифры, которые вы видите в пенсионном калькуляторе Минтруда – они отражают не обязательства государственной пенсионной системы выплатить вам как будущему пенсионеру  пенсию в размере X рублей, а некоторый возможный (скорее сильно оптимистичный вариант) развития событий. 

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



  1. 2% накопительной части. Если гражданин был «молчуном», то есть не предпринимал никаких шагов по управлению своими пенсионными накоплениями и не предпримет никаких шагов до конца 2013 года (обсуждается продление до конца 2014 года), то его распределение автоматически изменится в пользу страховой части. Общая ставка (22%) не поменяется, но страховая часть вырастет с 10% до 14%, а накопительная часть уменьшится соответственно с 6% до 2%. То есть перераспределение коснется 4%, которые находятся в пределах 568 тыс. рублей, или 22 720 рублей ежегодно. Еще раз, если непонятно: государство переводит 22,7 тыс. рублей в год (эта сумма будет расти по мере пересмотра максимальной планки отчислений) с вашего индивидуального счета в общий пенсионный "котел". 
  2. 6% накопительной части. Если гражданин уже перевел свои накопления в один из НПФов (или УК) или напишет подобное заявление до конца 2013 года, то все сохраняется в структуре 2013 года. Есть опция написать заявление на 6% и сохранить свои средства в ВЭБе, если не хочется связываться с частными управляющими.  


2% (0%) или 6%?

Встает вопрос – что лучше в данной ситуации – сохранить накопительную часть в пределах 6% или снизить ее до 2% за счет увеличения страховой части? Апдейт. Сейчас речь идет не о 2%, а 0% -  в сентябре Правительство решило отменить вообще накопительную часть пенсии для "молчунов". Это только "усугубляет" итоговые выводы о вере в государственные щедроты. 

На мой взгляд, этот выбор сводится к вопросу о вере в государство и его способность поддерживать пенсионную «щедрость», которая наблюдалась в последние годы. С 2002 года средняя пенсия повысилась примерно в 8 раз "в номинале", что соответствует росту средней заработной платы. Цены выросли за тот же период только в 3 раза. Страховая часть пенсии индексировалась медленнее ( примерно в 5 раз по моим расчтеам), но все равно сильно быстрее, чем накопленная инфляция или доходность пенсионных накоплений в ВЭБе (и видимо, доходностей НПФ). Поэтому если просто экстраполировать тенденции последних 10 лет, надо оставаться с государством. Но насколько разумна такая экстраполяция?


Условно говоря, государство говорит нам: «Давайте сейчас платите сейчас больше в страховую часть, и я – государство – обещаю, что когда вы выйдете на пенсию, ваша пенсия будет больше. Мы сможем повышать пенсии быстрее, чем та доходность, которую смогут обеспечить управляющие вашими пенсионными накоплениями». Если вы верите в это, тогда можно смело выбирать пониженные 2% отчисления на накопительную часть и особо ни о чем не думать.

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

Во вторых, существует объективные сомнения в том, что государственная пенсионная система способна поддерживать те же темпы повышения пенсий, какие наблюдались в последние 10 лет.
Как видно, по бюджету ПФР текущие поступления от социальных взносов ("собственные поступления") обеспечивают лишь половину расходов (выплат пенсий нынешним пенсионерам). Остальное покрывается за счет федерального бюджета. Повышение размеров социальных отчислений позволило увеличить собственные доходы ПФР, но все равно существует большой дисбаланс между текущими поступлениями и выплатами. Возможности федерального бюджета также небезграничны - в 2013 году около 23% государственных расходов пришлось на трансфер в ПФР. А ведь еще есть еще армия, чиновники, Сочи и другие важные задачи.

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



Еще один аспект - как принималось решение об изменении структуры отчислений. Изначально концепция Минтруда/ПФР предполагала полную отмену накопительную часть пенсии. Лишь под давлением отрасли негосударственных фондов, явно не заинтересованной в таком исходе, и экономических ведомств, удалось найти вот такой вот странный компромисс. Вроде бы всем сестрами по серьгам. Доверия такой процесс принятия решений не прибавляет.

Поэтому, на мой взгляд, целесообразно "не класть все яица в одну корзину" - в государственную страховую часть с неясным порядком индексации, а иметь еще и накопительную компоненту. Конечно, есть ненулевая вероятность, что через 20-30 лет цены на нефть достигнут $1000 за "бочку". Тогда и вышеупомянутая демография, и финансовые трудности ПФР не будут иметь никакого значения. Но думаю, что в рамках такого сценария золотой дождь прольется на всех, независимо от текущего выбора - 2% или 6% (доходность инвестиций в этом сценарии так же будет явно выше уровня инфляции). С другой стороны, если наступит ж.. придет беда, то ничто не помешает родному государству экспроприировать пенсионные накопления, будь они хоть в НПФе по 6%, хоть в ВЭБе по 2%.  Свежий опыт Аргентины может послужить хорошим примером - не стоит обольщаться.

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

По этим причинам я лично выберу накопительную часть в пределах 6%. Следующий вопрос: кому можно передать право управления этими 6%. Это выбор из трех групп: 1) оставаться в ВЭБе 2) выбрать УК 3) выбрать НПФ. Я напишу об этом подробнее - в следующей статье. update - вторая статья написана и доступна здесь.

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

Резюме

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




14 июл. 2013 г.

Результаты голосования в Думе о реформе РАН - первое и второе чтения

update. результаты по все чтениям доступны здесь

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

Как видно, первое чтение (3 июля) было принято большинством всего лишь в 234 голоса (при необходимом минимуме в 226 голосов). "За" проголосовала почти вся Единая Россия(два ренегата - это депутаты Романов и Говорухин). "Против" были весь состав КПРФ и почти вся СР (ренегаты "за"- депутаты Харлов  и Митрофанов). ЛДПР дружно не голосовала.
Ко второму чтению, которое состоялось уже (!) через два дня (5 июля) уровень поддержки заметно вырос: ЛДПР и Справедливая Россия теперь полным составом голосуют "за". КПРФ вместо "против" не голосует (академик Жорес Алферов кстати тоже не голосовал, а не выступил "против" во втором чтении). Это к вопросу о принципиальности народных избранников.

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

Вот пофамильные результаты - найдите своего любимого депутата!

15 июн. 2013 г.

Результаты голосования Думы по "анти-пиратскому закону" - первое чтение

Вы, возможно, слышали о новой громкой инициативе народных избранников - так называемый "анти-пиратский закон". Официальное название - "О внесении изменений в законодательные акты Российской Федерации по вопросам защиты интеллектуальных прав в информационно-телекоммуникационных сетях".
Сейчас этот законопроект просто с космической скоростью движется в Государственной Думе. 6 июня три депутата ГД  - оперная певица Максакова-Игенбергс М.П. (ЕР), режиссер Бортко В.В. (КПРФ), актриса Драпеко Е.Г. (СР) - официально представили законопроект. И уже 14 июня, то есть через 8 дней, законопроект прошел первое чтение. Я не буду касаться сути законопроекта, она отлично изложена в последней заметке Ъ.
Посмотрим на результаты голосования по партиям:
О внесении изменений в законодательные акты Российской Федерации по вопросам защиты интеллектуальных прав в информационно-телекоммуникационных сетях"
Добавьте подпись
Ниже можно посмотреть пофамильные результаты и найти своего любимого депутата.


Как видно, законопроект был принят 257 голосами "за" (237 от ЕР, 1 голос от КПРФ и 19 голосов от СР). Причем довольного много депутатов(189 человек всего) не голосовало. Я, честно говоря, до сих пор не очень понимаю эту логику. Кворум составляет 226 депутатов. Поэтому если ЕР голосует дисциплинированно (а так происходит почти всегда), то "не голосовать" смысла нет, кворум будет все равно. "Утопить" законопроект не-голосованием при текущем количественном соотношении депутатов невозможно.

Довольно странным мне показалось, что единственный голос в поддержку законопроекта от КПРФ принадлежит не режиссеру Бортко, который выступил инициатором (как можно было бы ожидать), а некоему депутату Ющенко А.А. Режиссер Бортко почему-то не стал голосовать за свой же законопроект (!). Депутат Драпеко вместе с еще 18 избранниками от СР  проголосовала "за". Три решительных голоса "против" - это депутаты Иванов С.В. (ЛДПР), Пономарев И.В. (СР) и Гудков Д.Г. (СР). Вообще с партийной дисциплиной у эсеров явно не складывается.

Судя по взятым темпам, принято решение принять законопроект до летних каникул. Сейчас наступает наиболее важный этап - второе чтение, на котором возможно, удастся будет придать  ему хоть более или менее разумное представление. Досудебное блокирование целых доменов - это явно что-то из области маразма. И напоследок следующая цитата из пояснительной записки к законопроекту: "Важнейшей новеллой ГПК РФ является введение института предварительных обеспечительных мер защиты интеллектуальных прав в информационно-телекоммуникационных сетях, в том числе в сети «Интернет» (Статья 144'ГПК РФ)." Новеллой!

13 июн. 2013 г.

Расписание подмосковных электричек на диаграмме Маре (Marey's Trains) c помощью d3.js

Начнем сразу с итогового результата, который выглядит вот так:
Для удобства лучше открыть его в полном окне. 




Как читать эту диаграмму (если не очень понятно): 
  • по оси X - время (в данном случае - с 4.30 утра до 12.00). по оси Y - идут станции Ленинградского направления (от Москвы Ленинградской до Твери). Расстояние между названиями по оси соответствует реальному расстоянию между станциями в километрах. Поэтому некоторые станции почти "налезают" друг на друга  расстояние между ними совсем небольшое (по крайней мере, по тем данным, которые у меня есть). 
  • каждая линия представляет собой поезд, каждая точка на линии - станцию. 
  • по умолчанию выбраны оба направления, но можно выбрать отдельно - "в Москву"/"в область". 
  • при наведении мышкой на станцию появляется маленькое окошко, которое показывает название станции и время прибытия. 
  • чем круче линия, тем быстрее идет данный поезд. 
  • Цветом обозначены типы электричек: черный - ежедневно, рыжий - по выходным, фиолетовый - выходные /кроме субботы/кроме воскресенья, красный - электричка отменилась. 
  • Информация по расписанию взята с tutu.ru и соответствует 13 июня 2013 года, со всеми изменениями в расписании. 

Немного об истории вопроса 

Такое представление расписания поездов первым представил в своей книге 1885 года (128 лет назад!) La méthode graphique французский ученый Этьен-Жюль Маре. Таким образом в книге было изображено расписание  поездов между Парижем и Лионом. 
Тем, кто занимается графической визуализацией, это представление во многом известно благодаря культовой книге Эдварда Тафте (Edward Tafte) - "The Visual Display of Quantiative Information". Именно диаграмма Маре вынесена на обложку книги, и Тафте по ходу несколько раз возвращается к этой диаграмме. Такое представление соответствует "принципам графического совершенства" (principles of graphical excellence) от Тафте - хорошая визуальная презентация данных является сочетанием сути вопроса, статистики и дизайна. Сложные идеи представлены ясно, точно и эффективно. Читатель получает максимальное количество идей в минимальный период времени и с минимальным количеством "чернила" на единицу пространства.  
Разумеется, с помощью современных технологий подобной репрезентации можно придать интерактивность и дополнительное удобство представления. 
 К примеру, вот пример расписания пригородных поездов Сан-Франциско в стиле Маре, созданный дизайнером Nicholas Rougeux. Недавно я увидел аналогичный пример, созданный в d3 автором этой удивительной библиотеки (Mike Bostock) и решил сделать аналогичную визуализацию для наших данных в качестве урока по изучению d3, создания визуализации в стиле Тафте, а также потому, что мне кажется, что используемые представления расписания электричек как на самих станциях, так и в Интернете, можно значительно улучшить. 

Исходные данные
Разумеется, сначала необходимо получить исходные данные - расписание движения пригородных поездов в удобном для машинной обработки виде. Как ни удивительно, но официальный перевозчик - ОАО «Центральная пригородная пассажирская компания» - не предоставляет общественности подобной информацииии. Раздел "Он-лайн табло" на официальном сайте находится в "стадии наполнения". 
Почему-то компания, имеющая почти $1 млрд ежегодной выручки и более $100 млн чистой прибыли, не нашла возможности сообщать пассажирам о расписании движения. Правительство г. Москвы также не имеет подобной информации.  Широко разрекламированный "Портал открытых данных" содержит информацию о стоимости проезда, но не расписании движения пригородных поездов. 
Разумеется, все кто ездил на электричках, знают альтернативные источники информации :) Это конечно, Яндекс и tutu.ru. Обращает кстати внимание, что оба сервиса используют довольно скудное текстовое представление расписания. 
Я написал небольшой скрипт в R, который собирает данные с tutu.tu, хотя концептуально это не очень правильно - перевозчик, либо местные власти должны предоставлять подобную информацию в удобном виде.   
В нашем случае для Ленинградского направления, но разумеется, можно собрать информацию по и другим направлениям/вокзалам. Причем информацию по расстояниями между станциями пришлось "парсить" тоже с tutu.ru, так как я не смог найти какой-либо официальной информации по этому поводу. 
Итоговый файл представляет собой матрицу, в котором по столбцам идут остановки, а по строкам - отдельные поезда. В названии столбцам закодированы расстояния между станциями и зоны оплаты. Выглядит это вот так: 





Соответственно мы видим, что на Ленинградском направлении в день проходит 165 поездов (по обоим направлениям), которые останавливаются на 45 различных станциях. Матрица состоит из почти трех тысяч значений, поэтому необходимо специальные средства представления этой информации в графическом виде. 

Построение диаграммы в стиле Маре
Как уже говорилось, я использовал графическую библиотеку Data-Driven Documents (или d3), которая представляет собой нечто среднее между библиотеками готовых графиков и самостоятельным рисованием диаграмм в графическом редакторе вроде Inkscape. 
Это мой второй опыт самостоятельного рисования в d3 (первый - карты хороплет для РФ). Поэтому я основывался на готовом примере Майка, но несколько видоизменил его для своих данных и дополнил дополнительными интерактивными элементами. 
Вариант с этими "плюшечками" занимает около 300 строк кода, но вполне возможно, потому что я использовал не самые оптимальные конструкции. 


Основная "рабочая" функция преобразует матрицу поезда-станции и преобразует ее в JS-объект. На основе этого объекта собственно и строится вся графическая составляющая. 
function type(d, i) {

  // Extract the stations from the "stop|*" columns.
  if (!i) for (var k in d) {
    if (/^stop\|/.test(k)) {
      var p = k.split("|");
      stations.push({
        key: k,
        name: p[1],
        distance: +p[2],
        zone: +p[3]
      });
    }
  }

  return {
    number: d.number,
    type: d.type,
    direction: d.direction,
    stops: stations
        .map(function(s) { return {station: s, time: parseTime(d[s.key])}; })
        .filter(function(s) { return s.time != null; })
  };

Информационное окно

В дополнении примеру Майка я добавил еще всплывающее окошко, которое появляется при наведении мышкой на любую круг - станцию. Делается это с помощью простого event-listener, реагирующего на mouseover.

train.selectAll("circle")
      .data(function(d) { return d.stops; })
    .enter().append("circle")
      .attr("transform", function(d) { return "translate(" + x(d.time) + "," + y(d.station.distance) + ")"; })
      .attr("r", 3)
       .on("mouseover", function(d) { 
                  var xPosition = x(d.time)+margin.left + margin.right;
                  var yPosition = y(d.station.distance);

      d3.select("#tooltip")
            .style("left", xPosition + "px")
            .style("top", yPosition + "px")           
            .select("#stations")
            .text(d.station.name);
      d3.select("#tooltip")
            .select("#time")
            .text(formatTime(d.time));
      d3.select("#tooltip").classed("hidden", false);
      
            })
       
                .on("mouseout",  function() {
                    d3.select("#tooltip").classed("hidden", true);
                          });



Соответственно объект tooltip то появляется и наполняется информационным содержанием (название станции и время прибытия поезда на эту станцию), то исчезает. 


Выбор направления

В исходном примере Майка отображается только одно направление, я же хотел, чтобы была возможность посмотреть оба направления одновременно, а также по отдельности. Это делается с помощью отдельной формы и функции, которая реагирует на изменение этой формы. 
d3.selectAll("input[name=f_direction]")
  .on("change", function(){
    cur_direction = this.id;
      if (this.id == 'moscow'){
        d3.selectAll(".moscow").classed("hidden", false);
        d3.selectAll(".oblast").classed("hidden", true);
           }
      if (this.id == 'oblast'){
        d3.selectAll(".moscow").classed("hidden", true);
        d3.selectAll(".oblast").classed("hidden", false);
           }
  })


Соответственно все объекта класса "oblast" или "moscow" показываются, либо скрываются от зрителя. Переменная cur_direction нужна для того, чтобы правильно реагировать на выбор для недели, когда направление уже выбрано. 


Выбор дня недели

Исходные данные имеют для каждого поезда его тип: ежедневно, по выходным, по рабочим, кроме суббот, кроме воскресений, отменен. Но пользователя на самом деле интересует какие поезда идут в конкретный день, поэтому я решил целесообразнее предоставить выбор для недели и в зависимости от этого рисовать нужные поезда. Соответственно, поезд, который ходит в режим "кроме воскресений" не будет отображаться в при выборе воскресенья. При выборе субботы или воскресенья также не будут показываться электрички, которые ходят по рабочим дням. 
Реализация этой логики сделана топорным if :) Отмененные электрички (красным цветом) должны отображаться при любом раскладе
d3.selectAll("input[name=type_train]")
  .on("change", function(){

      if (this.id == 'working'){
        d3.selectAll(".daily"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".working"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".weekend"+"."+cur_direction).classed("hidden", true);
        d3.selectAll(".ex_saturday"+"."+cur_direction).classed("hidden", true);
        d3.selectAll(".ex_sunday"+"."+cur_direction).classed("hidden", true);
      }
      if (this.id == 'saturday'){
        d3.selectAll(".daily"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".working"+"."+cur_direction).classed("hidden", true);
        d3.selectAll(".weekend"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".ex_saturday"+"."+cur_direction).classed("hidden", true);
        d3.selectAll(".ex_sunday"+"."+cur_direction).classed("hidden", false);
      }  

      if (this.id == 'sunday'){
        d3.selectAll(".daily"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".working"+"."+cur_direction).classed("hidden", true);
        d3.selectAll(".weekend"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".ex_saturday"+"."+cur_direction).classed("hidden", false);
        d3.selectAll(".ex_sunday"+"."+cur_direction).classed("hidden", true);
      }      
  })



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

12 июн. 2013 г.

Закон об оскорблении чувств верующих - результаты голосований по чтениям

Если вы не в курсе, Государственная Дума вчера окончательно приняла закон об оскорблении чувств верующих. Мы уже рассматривали результаты голосования в первом чтении, которое состоялось 9 апреля 2013 года. Теперь можно посмотреть на результаты всех чтений сразу:


Обращает внимание, что вторых чтений было два - 21 мая 2013 и вчера - 10 июня 2013 года. Вчера было принято решение вернуть законопроект во второе чтение - видимо для того, чтобы принять новые поправки. Процедура работы ГД не позволяет осуществлять содержательную правку законопроекта на этапе третьего чтения, поэтому технически его надо вернуть во второе чтение, внести правки и снова проголосовать. Вообще второе чтение - как правило, наиболее важный этап в судьбе любого законопроекта. Насколько я понял, основное нововведение - дополнить часть с наказанием по ст 148 УК РФ следующим пунктом: "после слов «лишением свободы на тот же срок» дополнить словами «с лишением права занимать определенные должности или заниматься определенной деятельностью на срок до двух лет».


Что значит конкретно - "определенные должности" и "определенная деятельность" - я не понял.

Теперь о результатах. Как видно, результаты практически не изменились от чтения к чтению. ЕР и ЛДПР поддерживают законопроект. КПРФ и большая часть СР не голосуют, что можно трактовать как оппозицию закону.

В третьем итоговом чтении только два депутата голосовали "против". Вот имена этих героев - Гудков Д.Г. (СР) и Журавлев С.В. (ЛДПР). Среди депутатов Единой России не голосовало четыре человека (Ткачев А. Н., Долгих В.И., Кривоносов С.В., Кузин С.П) - то ли их не было, то ли выражали таким образом свое несогласие.

6 мая 2013 г.

статья для Слона - "Скелеты в шкафу – отчетность «Сургутнефтегаза» по МСФО"

Отсюда

В последний рабочий день перед майскими праздниками самая закрытая российская нефтяная компания – «Сургутнефтегаз» – опубликовала отчетность по МСФО за последние два года. И это уже событие. В последний раз отчетность по международным стандартам (GAAP) компания представляла 11 лет назад. Тогда выяснилось, что она владела 17,6 млрд собственных акций (около 41% от общего числа), что, конечно, вызвало фурор на рынке.  С тех пор, чтобы избегать ненужной руководству публичности, «Сургутнефтегаз» ограничивался публикацией бухгалтерских форм по российским стандартам и отчетами эмитента, хотя его депозитарные расписки торгуются и в Лондоне, и в Нью-Йорке. 


24 апр. 2013 г.

Статья для Слона - «Роснефть» угрожает «Газпрому»? Пожалуй

Отсюда


Руководство «Роснефти» во главе с Игорем Сечином провело вчера в Лондоне День инвестора. Иностранным инвесторам презентовали консолидированные показатели компании с учетом покупки ТНК BP. Выручка объединенной компании в 2012 году составила $160 млрд, EBITDA – $33,4 млрд, а чистая прибыль – $16,7 млрд. C учетом того, что Роснефть и ТНК BP по отдельности уже представили финансовые результаты за прошлый год, эта новость выглядит не слишком интересно. 

16 апр. 2013 г.

Статья для Слона - Нефть Urals меньше $100: есть ли повод для паники

Отсюда.
 Цены на наше все – нефть Urals – опустились в начале текущей недели ниже $100 за баррель. В последний раз такой уровень наблюдался в июне прошлого года, в самый разгар долгового кризиса еврозоны. Мировые цены на золото за один только вчерашний день – 15 апреля – обрушились почти на 10%. В последний раз подобные скачки происходили в критические дни осени 2008 года. Российский фондовый рынок с начала апреля снизился более чем на 5%. Новый виток финансового Армагеддона? Наступает очередная пора запасаться гречкой и спичками? 

Результаты голосования в Государственной Думе в 2012 году - продолжение

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

Сначала необходимо было получить данные. Я собрал по-депутатные результаты голосования голосования по тем 888 законопроектам, которые обсуждались раньше, с помощью АИС Законопроект и набора заранее написанных скриптов.
По этим законопроектам в прошлом году 2389 голосования в ГД. Таким образом, наш исходный набор данных должен иметь  следующую размерность 2389 голосований * 450 депутатов = 1 075 050, то есть свыше 1 млн точек. Фактически их оказалось несколько меньше. Как я понял, это связано с тем, что из-за ротации депутатов по тем или иным причинам (смерть, отказ от мандата и проч) реальное количество голосующих депутатов не всегда равно 450.

Я выложил все используемые данные в Google Drive для желающих позаниматься собственным анализом. Там же есть и описание формата всех строк. Внимание -  итоговый файл с результатами голосования по отдельным депутатам занимает более 50 мегабайт. 

Теперь посмотрим на сами данные. Вот, к примеру, агрегированная сумма голосов в зависимости от результата. Как видно, чаще всего депутаты голосовали "за", либо вообще не голосовали. Количество голосований "против" не превышает 25 тыс. (то есть менее 2,5% от общего количества поданных). Воздерживаться в Думе вообще не принято - таких голосов за прошый год нашлось только 712 (менее 0,01%).
Этот график не учитывает то, что количество депутатов от разных партий сильно отличается, поэтому разбивка по партиям дана просто в иллюстративных целях.
 График. Количество голосований Государственной Думы в 2012 году 
Конечно, же можно смотреть и на отдельных депутатов - так как депутатов много, то подобные результаты сложно визуализировать на одном графике. Если разбить их по партиям получается следующая картина (на графиках приведено процентное соотношение результатов 2389 голосований, которые мы анализируем).

Единая Россия
На графике хорошо видна высокая степень единодушия-единороссов. "За" они, похоже, голосуют крайне дисциплинированным образом. Голосовать против не принято - для крупнейшей фракции проще согласованно не голосовать и таким образом срывать кворум.

КПРФ
Среди коммунистов есть заметный разброс по голосам "за", также хорошо заметно, что иногда (в 5% случаях примерно) коммунисты голосую "против".

ЛДПР
ЛДПР, как ожидалось, похожа ЕР. Разброс по голосам "за" между депутатами небольшой, так же не принято голосовать "против".

Справедливая Россия 
Среди справедливороссов наиболее выражен разброс между теми, как разные депутаты голосуют - как по голосам "за", так и по голосам "против". Ряд депутатов в самом низу графика (Митрофанов, Гасанов, Музыкаев) почему-то не голосовали почти в 75% голосований.

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

Для того, чтобы постараться как-то "обозреть" имеющиеся данные я использовал традиционную статистическую технику, которая использует для подобных целей - mulidimensional scaling (MDS). Я не буду описывать ее суть - в сети и в учебниках есть куча отличных описаний. Вкратце ее смысл сводится к набору техник для того, чтобы визуализировать различия в сложных наборах данных.
В нашем случае мы хотим визуализировать насколько отличаются голосования разных депутатов друг от друга. Сначала мы трансформируем качественные отметки ("за", "против", "воздержался", "не голосовал"). Я пробовал разные варианты, в данном случае использует такой вариант:

  • "за" = 1 
  • "возд" = 0
  • "не голосовал" = -1 
  • "против"  = -1 

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

Здесь по строкам, которые начинаются с 99.. находятся депутаты, а по строкам отдельные голосования. То есть первый элемент этой матрица говорит о том, что депутат под номером 99100015 (по vote.duma.gov.ru легко посмотреть, что это Апарина Алевтина Викторовна из КПРФ) проголосовала "за" по голосованию №75668. Вот ссылка на само голосование (как видно, номер голосования соответствует url), депутат Апарина действительно поддержала этот законопроект.
После этого мы рассчитываем матрицу расстояний между совокупными голосованиями разных с помощью функции dist() в R. А с помощью функции cmdscale() осуществляем классический MDS на матрице расстояний.
Что же мы получили в итоге. Вот результат визуального представления полученных результатов, сгруппированных по партиям:

Результат MDS-кластеризации голосований в Государственной думе РФ в 2012 году


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

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

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

Я не ожидал подобных результатов, но депутаты из ЛДПР и КПРФ образуют единый кластер, причем достаточно единообразный. У меня нет содержательных интерпретаций этого результата - буду рад услышать любые предположения. Видимо, его еще нужно проверить на других методах кластерного анализа. Странная желтая (то есть ЛДПР) точка наверху -   это тоже статистический артефакт в виде депутата Катасонова, который появился в Думе только в конце 2012 года.
Тот же график только с фамилиями - на кластерах они сливаются, но по выделяющимся точкам легко определить фамилию:

Вот исходный код для MDS-кластеризации:

# Многомерное шкалирование для анализа результатов голосования в ГД РФ за 2012 года 
require(reshape2)
require(ggplot2)
# Функция, траснформирующая количественные коды голосования в факторы 
SimplifyVotes <- function(result){
  res.q <- vector(length = length(result))
  res.q <- ifelse(result == 'за', 1, res.q)
  res.q <- ifelse(result == 'возд', 0, res.q)
  res.q <- ifelse(result == 'не голосовал', -1, res.q)
  res.q <- ifelse(result == 'против', -1, res.q)
  return(res.q)
}
 
#загрузить данные 
all.votes <- read.csv(file='data4export/votes2012.csv')
laws.2012 <- read.csv(file='data4export/laws2012.csv')
depDuma <- read.csv(file = 'data/DeputatDuma.csv', stringsAsFactors = FALSE)
 
all.votes$res.q <- SimplifyVotes(all.votes$result)
v.unique <- unique.data.frame(all.votes) #почему то есть повторения в исходных данных - убираем их
 
rollcall <- dcast(data = v.unique[, c('id', 'url','res.q')], id ~ url, fun.aggregate= sum)
row.names(rollcall) <- rollcall$id #присвоить названия столбцам 
rollcall <- rollcall[, -1] #убрать из матрицы коды депутатов 
rollcall <- as.matrix(rollcall) 
 
rollcall.dist <- dist(rollcall %*% t(rollcall)) #рассчитать матрицу расстояний 
rollcall.mds <- as.data.frame(cmdscale(rollcall.dist,k=2)) # провести кластеризацию 
 
names(rollcall.mds) <- c('x', 'y')
rollcall.mds$id <- row.names(rollcall)
sname <- strsplit(as.character(depDuma$name), ' ') # добавить к матрице фамилии депутатов 
depDuma$sname <- sapply(sname, function(x){ paste0(x[[1]], ' ', substr(x[[2]],1,1),'.', substr(x[[3]],1,1),'.')})
rollcall.mds <- merge(rollcall.mds, depDuma, by = 'id') 
# построить график с помощью ggplot2 
 
p <- ggplot(data = subset(rollcall.mds), aes(x=x, y=y, group = party))+scale_size(range=c(2,2))
p+geom_jitter(aes(color = party))+ief.theme+
  scale_colour_manual(name = '', values = c('ЕР' = '#4d6b8d', 'КПРФ' = '#bf0d0d', 
                                            'ЛДПР' = '#fad000', 'СР' = '#e6871d' ))+
 
Created by Pretty R at inside-R.org


Полные коды доступны в репозитарии на  github - правда в черновом пока виде.