17 авг. 2012 г.
11 авг. 2012 г.
Про оценку естественного уровня безработицы (NAIRU) в России (часть 1)
Немного истории
В 1958 году новозеландский
экономист Олбан Ульям Филлипс опубликовал в британском журнале Economica статью.
Ее несколько старомодное название раскрывает основную идею автора –
«The Relation Between Unemployment and the Rate of Change of Money Wage Rates
in the United Kingdom, 1861–1957” (Phillips 1958). Именно эта статья дала имя так
называемой «кривой Филлипса». Филлипс на длинных рядах для Великобритании
показал отрицательную взаимозависимость между уровнем безработицы и ростом
заработной платы в экономике (обратим внимание, что изначально речь идет не о
потребительской инфляции). Вот как выглядит один из графиков статьи 1958 года:
С тех пор прошло много времени и
много исследований по этому поводу. Экономисты пришли к единодушному мнению о
том, что «кривая Филлипса» может выполняться лишь в краткосрочном периоде, а в
долгосрочном плане «кривая» является вертикальной линией, которая соответствует
так называемому «естественному уровню безработицы». Естественный уровень
определяется как равновесный уровень
безработицы, то есть такой уровень, в котором совокупный предложение труда
соответствует совокупному спросу на труд. При естественном уровне все, кто хочет
работать при существующем уровне оплаты труда, нашли работу, и соответственно,
нет вынужденной безработицы. Существует некий «естественный» уровень
безработицы, так как часть экономически активного населения постоянно находится
в процессе смены работы.
Понятие
«естественного уровня безработицы» (natural rate of unemployment) тесным образом примыкает к показателю NAIRU (Non-Accelerating Inflation Rate of Unemployment), что можно перевести как «не ускоряющий инфляцию
уровень безработицы». Зачастую оба термина используют
как синонимы или как имеющие одно и то же значение. Тем не менее, между ними
есть определенное смысловое отличие. Термин NAIRU,
связанный с работами Милтона Фридмена, акцентирует именно на инфляции, в то
время как «естественный уровень безработицы» имеет более общее значение и
связан с прочими долгосрочными равновесными параметрами состояния экономики.
Почему же оценкам «кривой
Филлипса», ествественного уровня безработицы уделяется столько их внимания? В
общем случае их важность связана с тем, что они позволяют связать «реальные»
показатели, такие как уровень безработицы с номинальными показателями, такими
как уровень инфляции. Отсюда могут следовать выводы с точки зрения
денежно-кредитной политики центрального банка, который имеет возможность влиять
лишь на номинальные показатели, но хотел бы воздействовать именно на «реальные
показатели».
Это небольшой экскурс в историю,
но наша задача носит вполне прикладной характер – попробовать оценить
естественный уровень безработицы для российской экономики (я использую NAIRU и
«естественный уровень» как взаимозаменяемые).
Посмотрим на данные
Проблему с оценкой уровня NAIRU для России иллюстрирует обычный
график распределения между уровнем инфляции и логарифмом инфляции (логарифм
берется для того, чтобы «сжать» ось значений из-за большого разброса данных по
инфляции):
Примечание: период с
января 1994 года по июнь 2012 года, всего 222 точки.
Инфляция – динамика ИПЦ за
последние 12 месяцев.
Ничего похожего на классическую «кривую Филипса» не видно. Отрицательная связь между показателями наблюдалась лишь в короткий период 1995-1997 гг., когда за счет введения фиксированного курса рубля и прекращения эмиссионного финансирования бюджетного дефицита удалось снизить инфляцию. А безработица на фоне продолжающейся трансформации экономики продолжала расти. Отсюда получается отрицательная связь между инфляцией и безработицей.
В виде графиков, совмещенных по
разным осям:
Источник: расчеты по
данным ФСГС.
Как видно, из приведенных графиков, напрямую отрицательная связь между уровнем инфляцией и уровнем безработицы не прослеживается. Скорее, они двигаются в одном и том же направлении. Оба показатели выросли в период кризиса 1998 года и за тем вместе снижались следующие 10 лет. Разумеется, исходя из этого, вовсе не следует, что такой связи нет: и на инфляции, и на безработицу оказывает воздействие множество прочих факторов, не представленных на графике.
В первую очередь, попробуем
разобраться, что оказывало воздействие на динамику уровня безработицы. Не
претендуя на хорошее понимание этого вопроса, сошлюсь на мнение крупнейшего
российского специалиста – Ростислава Исааковича Капелюшникова (Капелюшников 2009). В этой работе приводится
убедительные доводы о том, что российские предприятия использовали
«нестандартные формы» адаптации к изменению экономической ситуации – задержки
заработной платы, вынужденные отпуска, переводы работников на неполное рабочее
время. В результате, уровень безработицы менялся не так сильно, как мог бы
изменяться исходя из экономической ситуации и большей мобильности рынка труда. Капелюшников приводит аргументы в пользу
неэффективности подобной политики, но, к сожалению, не приводит эмпирических свидетельств,
каким образом изменилась модель рынка труда в последние годы.
Список использованных источников
Phillips, A.W., 1958. The Relation Between Unemployment and the Rate of
Change of Money Wage Rates in the United Kingdom, 1861–19571. Economica,
25(100), pp.283-299. Available at:
http://dx.doi.org/10.1111/j.1468-0335.1958.tb00003.x.
Капелюшников, Р.,
2009. Конец российской модели рынка труда?
статья для Слона

![]() | Освоение Штокмана стоит $30 млрд – слишком много для норвежцев
Но «Газпром» вряд ли будет испытывать сложности с тем, чтобы найти замену вышедшей их проекта Statoil • Марсель Салихов
Подробнее на Slon.ru |
Про пенсионные накопления и эффективность их инвестирования
Если кто не в курсе, родное
государство рассматривает
возможность накопительную часть пенсии. То есть ту часть социальных отчислений в
размере 6%, про которые каждому работающему моложе 1967 года приходят ежегодные «письма счастья». Дело еще пока нерешенное. За полную отмену
накопительной пенсии выступают Минтруда и Минсоцразвития, против – Минфин,
практически все эксперты, Эльвира
Набиуллина и много еще кого. Более подробно про все перипетии пенсионной
реформы можно почитать в статьях у Антона
Табаха.
Я тоже считаю, что отмена
накопительной части пенсии – глупая и неправильная идея. Она не решит проблема
несбалансированности Пенсионного фонда, который получает в форме взносов 2,6
трлн рублей, а выплачивает пенсий на 5,4 трлн рублей. Разница покрывается за
счет трансферта из федерального бюджета. Но все пенсионные накопления сейчас не
превышают 2 трлн рублей. Получается, что полная конфискация накопленных за 10
лет накоплений не решит дисбаланс Пенсионного фонда даже за 1 год! Это
неправильно еще по множеству причин, но дело не в этом. На фоне всеобщего внимания я решил посмотреть,
как же инвестируются пенсионные накопления и на сколько эффективно. Все
исходные данные для анализа взяты
с сайта ПФР.
Для понимания: пенсионные
накопления можно инвестировать либо через управляющую компаний (УК), либо через
негосударственный пенсионный фонд (НПФ). Но НПФ потом заключает договора с УК и
фактически УК инвестируют средства, поэтому эффективность инвестиций нужно
оценивать на уровне УК. Средства «молчунов» (вариант по дефолту) инвестируются
через т.н. государственную управляющую компанию (ГУК) – Внешэкономбанк. ВЭБ
контролирует сейчас около 75% пенсионных накоплений.
Посмотрим, к примеру, на результаты
прошлого - 2011 года - по управляющим компаниям.
Максимальная доходность из
60 УК составила всего лишь 6,6%! ВЭБ со своими вложениями в госооблигации идет
третьем месте с результатом 4,2%. 27 УК показали отрицательную доходность по
итогам 2011 года. Понятно, что в 2011 году рынок акций был в минусе на 15%, и
это сильно влияет на результаты инвестирования. Но с точки зрения обычного
гражданина смотрящего на результаты подобной "работы" и имеющего
возможность в принципе положить сбережения на гарантированный государством банковский
депозит по 6-8-10%, такие результаты обескураживают.
Посмотрим на результаты в более длительной перспективе - на накопленную доходность с 2004 по 2011 год.
За этот период лишь одна управляющая компания - УК "Открытие" - смогла обогнать инфляцию за этот период. Консервативный ВЭБ с накопленной доходностью в 40% - в середине списка. То есть почти половина УК, имеющих инвестировать в широкий круг инструментов, показала результаты хуже ВЭБа. В особых "лузерах" - УК "Ямал", который за 9 лет потерял почти 30%, доверенных ему средств.
Другой важный
вопрос - стоимость подобного инвестирования в форме так называемого
"коэффициента расходов инвестиционного портфеля". Она включает в себя
как непосредственные расходы УК, так и ее вознаграждение за результаты.
Посмотрим на результаты в более длительной перспективе - на накопленную доходность с 2004 по 2011 год.
За этот период лишь одна управляющая компания - УК "Открытие" - смогла обогнать инфляцию за этот период. Консервативный ВЭБ с накопленной доходностью в 40% - в середине списка. То есть почти половина УК, имеющих инвестировать в широкий круг инструментов, показала результаты хуже ВЭБа. В особых "лузерах" - УК "Ямал", который за 9 лет потерял почти 30%, доверенных ему средств.
Как видно по графику, в
среднем "расходная" часть составляла около 0,5% (пересечение линии
тренда с осью Х). Дополнительно УК берут около 10-15% от полученной ими
доходности. Причем стоимость расходов довольно сильно отличается от УК к УК,
что связано в первую очередь, с количеством активов в управлении. Так у ВЭБа
коэффициентов расходов является минимальным среди всех УК - в пределах 0,1%.
Вот таблица с численными
результатами достигнутой номинальной доходности по УК, если кто интересуются вопросом пенсионных накоплений:
29 июн. 2012 г.
Национальный состав субъектов РФ по переписи 2010 года
Источник данных: доклад "Об итогах данных Всероссийской переписи населения 2010 года", единственный полный источник о том, сколько людей разных национальностей проживает в том или ином регионе.
Некоторые собственные выводы из данных:
Я перестроил структуру исходных данных, чтобы удобнее было их анализировать. Планирую еще сравнить с национальным составом по переписи 2002 года и последней советской переписи 1989 года.
Некоторые собственные выводы из данных:
- около 81% населения РФ - русские. Самый "русский" регион - Вологодская область (97.3% населения - русские). Наименее "русские" регионы - Дагестан, Чечня, Ингушетия. Доля русского населения в этих регионах не превышает нескольких процентов.
- Вторая по численности национальность в России - татары (5.5 млн. человек). Но в Татарстане живет только 2 млн из них. Остальные татары проживают в других регионах.
- В Башкирии башкиры составляют лишь около 30% населения, русских там 36%, а татар - 25%. Это, наверно, наименее "национальная" из национальных республик в смысле доли коренного населения.
- Чеченцы - шестая по численность национальность в стране (1.5 млн человек), из них около 200 тыс. живет за пределами Чечни и соседних республик.
Я перестроил структуру исходных данных, чтобы удобнее было их анализировать. Планирую еще сравнить с национальным составом по переписи 2002 года и последней советской переписи 1989 года.
10 июн. 2012 г.
8 июн. 2012 г.
Популярность facebook в разных странах в начале 2012 года
изучая построение Google Charts, построил карту, которая показывает количество пользователей facebook в % от общего населения страны.
Больше всего фейсбук популярен в Исландии - 67,6% населения страны пользуется этой социальной сетью!
7 июн. 2012 г.
Кто в G-20 всех слабее?
Многие люди, которые не слишком хорошо знакомы с экономической статистикой, часто неправильно интерпретируют цифры по ВВП, которые сообщаются в СМИ. Один из примеров, который может ввести в заблуждение. В газете/интернете пишут, что "ВВП за 1 квартал 2012 году страны Х вырос на 2%". Эти 2% могут означать довольно разные вещи. К примеру, это может означать "к предыдущему периоду, сезонно сглаженные данные" или "к соответствующему периоду прошлого года, не сглаженные данные" или что-то другое. В результате, цифры за тот же период страны Y напрямую не сопоставимы с тем, что нам известно по стране Х. Сначала их нужно привести к общему виду с тем, чтобы сравнивать друг с другом.
Другой вопрос, который часто обсуждает в интернетах - сравнение того, на сколько разные страны пострадали в результате кризиса и насколько они восстановились или восстанавливаются в терминах реального ВВП. Достигнут ли предкризисный максимум или нет? Как Россия смотрится на фоне других странах, к примеру, из G-20? Чтобы ответить на эти вопросы, нужно довольно корректно собрать и обработать исходные данные. Что я сделал.
Исходные данные: квартальный ВВП стран G-20 за период со 2 квартала 2008 года по 4 квартал 2011 года. Индекс - базисный, предполагается, что во 2 квартале 2008 года был достигнутый предкризисный максимум, принятый за 0. Соответственно, значение 10 в 4 квартале 2011 года будет означать, что уровень ВВП на выше 10% уровня, который был во втором квартале 2008 года.
Источник информации: база данных МВФ International Financial Statistics (IFS) К сожалению, эта база данных недоступна бесплатно, за исключением небольшого набора показателей. Я использовал показатели "Gross Domestic Product, Real" на квартальном уровне. В принципе, можно собрать данные по квартальному ВВП и с национальных статичестических комитетов, но это довольно муторно. Надо разбираться с используемой размерностью и прочими вещами, поэтому я решил положиться на МВФ.
Описание расчета. Для подобного расчета необходимо использовать именно квартальные данные - кризис начался с 3 квартала 2008 года. Если брать годовые цифры, то получается "смешанная" картина - полгода бума, полгода обвала. Но в связи с этим возникает дополнительная сложность - сезонность. Как правило, показатели ВВП отличаются довольно сильной сезонностью. Некоторые статистические ведомства самостоятельно рассчитывают и предоставляют сезонно сглаженные данные для квартальных данных. Некоторые - не делают этого. Поэтому в IFS индекс квартального ВВП для некоторых стран (Австралия, Канада, Еврозона, Франция, Германия, Италия, Мексика, ЮАР, Великобритания, США) дается в сезонно сглаженном виде ("Index, 2005=100, Seasonally Adjusted). Для всех остальных я сам провел сезонную очистку в пакете Demetra методом Tramo/Seats. Вот пример исходных и сглаженных в Demetre данных для Кореи:
Как видно из графики, убирать сезонность имеет смысл.
Я решил построить интерактивный график Google Motion Chart для иллюстирации итоговых данных. Такой вид график был популяризирован Гансом Рослингом и является фирменной "фишкой" Gapminder. Они бывают полезны, когда на графике находится много объектов, и традиционные линии или полосы накладываются друг на друга и делают график нечитаемым. Анимация, показывающая динамику во времени, тоже может быть вполне иллюстративна. Заодно я хотел научиться их строить. Вот результат:
Другой вопрос, который часто обсуждает в интернетах - сравнение того, на сколько разные страны пострадали в результате кризиса и насколько они восстановились или восстанавливаются в терминах реального ВВП. Достигнут ли предкризисный максимум или нет? Как Россия смотрится на фоне других странах, к примеру, из G-20? Чтобы ответить на эти вопросы, нужно довольно корректно собрать и обработать исходные данные. Что я сделал.
Исходные данные: квартальный ВВП стран G-20 за период со 2 квартала 2008 года по 4 квартал 2011 года. Индекс - базисный, предполагается, что во 2 квартале 2008 года был достигнутый предкризисный максимум, принятый за 0. Соответственно, значение 10 в 4 квартале 2011 года будет означать, что уровень ВВП на выше 10% уровня, который был во втором квартале 2008 года.
Источник информации: база данных МВФ International Financial Statistics (IFS) К сожалению, эта база данных недоступна бесплатно, за исключением небольшого набора показателей. Я использовал показатели "Gross Domestic Product, Real" на квартальном уровне. В принципе, можно собрать данные по квартальному ВВП и с национальных статичестических комитетов, но это довольно муторно. Надо разбираться с используемой размерностью и прочими вещами, поэтому я решил положиться на МВФ.
Описание расчета. Для подобного расчета необходимо использовать именно квартальные данные - кризис начался с 3 квартала 2008 года. Если брать годовые цифры, то получается "смешанная" картина - полгода бума, полгода обвала. Но в связи с этим возникает дополнительная сложность - сезонность. Как правило, показатели ВВП отличаются довольно сильной сезонностью. Некоторые статистические ведомства самостоятельно рассчитывают и предоставляют сезонно сглаженные данные для квартальных данных. Некоторые - не делают этого. Поэтому в IFS индекс квартального ВВП для некоторых стран (Австралия, Канада, Еврозона, Франция, Германия, Италия, Мексика, ЮАР, Великобритания, США) дается в сезонно сглаженном виде ("Index, 2005=100, Seasonally Adjusted). Для всех остальных я сам провел сезонную очистку в пакете Demetra методом Tramo/Seats. Вот пример исходных и сглаженных в Demetre данных для Кореи:
Как видно из графики, убирать сезонность имеет смысл.
Я решил построить интерактивный график Google Motion Chart для иллюстирации итоговых данных. Такой вид график был популяризирован Гансом Рослингом и является фирменной "фишкой" Gapminder. Они бывают полезны, когда на графике находится много объектов, и традиционные линии или полосы накладываются друг на друга и делают график нечитаемым. Анимация, показывающая динамику во времени, тоже может быть вполне иллюстративна. Заодно я хотел научиться их строить. Вот результат:
Примечания: вместо ЕС использовались данные по еврозоне. Данных по Саудовской Аравии нет, так они не предоставляют квартальный ВВП. Добавленые данные по всему миру, развитым и развиващимся странам всего.
У графики три вкладки:
- "С пузырями". На оси Х нужно выбрать время, и запустить анимацию во времени. Если напротив стран справа, поставить галочки, то они будут оставлять след во время анимации.
- "С полосками". Можно посмотреть сортировку по уровню ВВП за каждый квартал.
- "С линиями". Традиционное графическое предоставление. Можно выбрать несколько стран, тогда они будут "подсвечены".
Какие выводы можно сделать из графика?
- В смысле "максимального" провала Россия не является лидером. Мексика и Турция упали быстрее и сильнее, чем Россия. Но разница между этими тремя странами не слишком велика. Они все относятся к круппе стран, экономика которых за 3-4 квартала сократилась на 10% и более.
- Посткризисное восстановление в России происходило гораздо медленее, чем во всех крупных развивающихся странах. Россия вышла на уровень второго квартала 2008 лишь к концу 2011 года, то есть спустя 3,5 года. Если посмотреть 4 квартал 2011 года на второй вкладке, то видно насколько ушли вперед другие экономики, те же Мексика и Турция.
Вкратце: обвал российской экономики был одним из наиболее сильных среди стран G-20, но не самым сильным. Восстановление экономики происходило медленнее, чем любой разивающейся страны из G-20.
5 мая 2012 г.
Получение подробных данных по бюджетам субъектов РФ
Большую часть экономики составляет бюджетный сектор. В прошлом году расходы консолидированного бюджета РФ составили чуть больше 20 трлн рублей (около 37% ВВП), из них на федеральный бюджет пришлось почти 11 трлн рублей, остальное - внебюджетные фонды, бюджеты субъектов РФ и муниципальные бюджеты.
Не так давно встала задача с получением и анализом довольно подробных данных по бюджетам отдельных субъектов РФ. Основным источником информации является отчетность Федерального Казначейства, который ежемесячно предоставляет данные об исполнении бюджетов. В случае федерального бюджета за каждый месяц - это стандартный набор файлов Excel.
Для региональных бюджетов - все гораздо сложнее. Казначейство выкладывает огромный архив (данные за каждый месяц в архиве занимают более 10 мегабайт) html-файлов. Структура данных простая: "регион-бюджетная форма отчетности" - отдельный файл.
Министерство финансов проводит некоторую аналитическую работу и предоставляет те же данные в более удобоваримом виде. Однако в случае данных Минфина возникает две проблемы:
Исходные коды, если кому-то пригодятся (так как я не программист, то код, видимо, не самый оптимальный):
Не так давно встала задача с получением и анализом довольно подробных данных по бюджетам отдельных субъектов РФ. Основным источником информации является отчетность Федерального Казначейства, который ежемесячно предоставляет данные об исполнении бюджетов. В случае федерального бюджета за каждый месяц - это стандартный набор файлов Excel.
Для региональных бюджетов - все гораздо сложнее. Казначейство выкладывает огромный архив (данные за каждый месяц в архиве занимают более 10 мегабайт) html-файлов. Структура данных простая: "регион-бюджетная форма отчетности" - отдельный файл.
Министерство финансов проводит некоторую аналитическую работу и предоставляет те же данные в более удобоваримом виде. Однако в случае данных Минфина возникает две проблемы:
- Набор показателей включает в себя базовые вещи вроде общих расходов и доходов регионального бюджета, но набор специфических показателей достаточно скуден.
- Данные начинаются с февраля 2011 года, хотя Казначейство дает информацию аж с 2000 года.
Что делать, если нужны подробные данные и длинная история? Как обычно, если цифр немного, то проще всего собрать цифры ручками. В противном случае, приходится "изобретать велосипед" и пытаться автоматизировать процесс, так как источники информации мало заботятся о нуждах простых аналитиков.
Когда возникла подобная необходимость, я написал набор скриптов на Python, которые обрабатывали предварительно сохраненные на локальном диске папки с исходными файлами. На каждый год я создавал отдельный скрипт для того, чтобы можно было посмотреть исходные данные. К сожалению, из-за того, что коды бюджетной классификации регулярно меняются, как и формат предоставления данных. Поэтому скрипт, написанный для данных 2010 года, потребует, незначительной "подкрутки" для того, чтобы работать на данных 2006 года.
Для обработки html файлов я использовал отличную библиотеку Beautiful Soup. Парсинг файлов занимает относительно много времени (около 30-40 секунд для отдельного файла), поэтому скрипт работает довольно долго (около 10-15 минут на моем компьютере). Но так как он работает сам по себе, в это время можно заниматься другими полезными вещами.
Когда возникла подобная необходимость, я написал набор скриптов на Python, которые обрабатывали предварительно сохраненные на локальном диске папки с исходными файлами. На каждый год я создавал отдельный скрипт для того, чтобы можно было посмотреть исходные данные. К сожалению, из-за того, что коды бюджетной классификации регулярно меняются, как и формат предоставления данных. Поэтому скрипт, написанный для данных 2010 года, потребует, незначительной "подкрутки" для того, чтобы работать на данных 2006 года.
Для обработки html файлов я использовал отличную библиотеку Beautiful Soup. Парсинг файлов занимает относительно много времени (около 30-40 секунд для отдельного файла), поэтому скрипт работает довольно долго (около 10-15 минут на моем компьютере). Но так как он работает сам по себе, в это время можно заниматься другими полезными вещами.
2 мая 2012 г.
Нечеткое сравнение строк (fuzzy string match) в Excel с помощью Fuzzy Lookup
Еще одна проблема, которую часто приходится решать при обработке данных для последующего анализа - это сопоставление информации из разных источников. В наиболее простом случае это может быть сопоставление двух таблиц, в которых один из столбцов полностью или частично совпадают. В случае, если обработка данных проходит в СУБД, то задача решается написанием простого SQL-запроса (при условии, что исходные таблицы правильно созданы и имеют идентификаторы). В Excel для решения подобных задач существует замечательная функция ВПР (VLOOKUP), которая берет значение в одном из столбцов таблицы и возвращает значение из другого столбца.
Однако практическое использование этой функции для обработки обычных данных, может оказать довольно проблематичным. Что делать, если значения "почти" совпадают, но не совсем точно? К примеру, в одной из таблиц сравниваемая ячейка имеет запятую, а в другой нет? Или в одной используется "-", а в другой "–" и так далее.
Я с подобными трудностями постоянно сталкиваюсь как минимум в двух случаях:
Однако практическое использование этой функции для обработки обычных данных, может оказать довольно проблематичным. Что делать, если значения "почти" совпадают, но не совсем точно? К примеру, в одной из таблиц сравниваемая ячейка имеет запятую, а в другой нет? Или в одной используется "-", а в другой "–" и так далее.
Я с подобными трудностями постоянно сталкиваюсь как минимум в двух случаях:
- При обработке данных по отдельным регионам РФ или странам мира. Проблема заключается в том, что разные страны или регионы могут иметь в разных источниках слегка отличающиеся названия. К примеру, " г. Москва" или "Москва (город)", "Белоруссия" или "Республика Беларусь", "Ханты-Мансийский автономный округ - Югра" или " Ханты-Мансийский авт. округ - Югра" и так далее. Примеров может быть множество, причем зачастую один и тот же источник (тот же Росстат) может использовать в разных публикациях или разных источниках немного отличающиеся названия регионов. Формально существует ГОСТ 7.67-2003, который определяет как должны называться страны и российские регионы "по стандарту", но на практике в точности ему никто не следует даже в официальных статистических публикациях. Да и ГОСТ сам себе уже старый (2003 год) и странный. к примеру, в нем определены "Башкирия (Республика Башкортостан)", но просто "Татарстан". Почему именно так понять решительно невозможно, запомнить - тем более. Названия стран в английском языке также могут именоваться слегка по разному. Классическое "USA", "U.S." или "United States"?
- Названия видов экономической деятельности ( поОКВЭД). Формально тоже существует официальный вариант названий, выложенный на сайте Росстата. Но и сам Росстат ему не следует. К примеру, в ЦБСД названия видов деятельности часто имеют такой вид "Предоставление усл. по добыче нефти и газа" вместо "Предоставление услуг по добыче нефти и газа" (11.2) или "Добыча и произ-ство соли" вместо "Добыча и производство соли" и так далее. ЦБСД при выдаче результатов по видам экономической деятельности не сохраняет код вида, поэтому идентификация возможно только по названию. Новая информационная система - "Новая межведомственная информационно-статистическая система"- имеет одинаковые названия видов в соответствии со стандартом и даже умеет выдавать результаты в формате SDMХ, в котором присутствуют коды видов деятельности, но она обновляется с большим опозданием.
Этими примерами все не ограничивается. Подобная проблема возникает постоянно, когда нужно объединить информацию из разных источников, относящихся к одной и той же сущности, которая не имеет однозначного идентификатора.
Что же делать?
Первый и достаточно очевидный ответ - сделать все вручную. Метод вполне хороший и оправдывает себя, если количество "сущностей" не слишком велико, и задача возникает лишь эпизодически.
Первый и достаточно очевидный ответ - сделать все вручную. Метод вполне хороший и оправдывает себя, если количество "сущностей" не слишком велико, и задача возникает лишь эпизодически.
Если же речь о других масштабах, к примеру, раскидать данные по всем более чем двум тысячам видам деятельности и имеет регулярный характер, можно подумать об автоматизации, по крайней мере частичной.
В терминах обработки текстов подобная задача носит стандартное название "fuzzy string match". Существует множество алгоритмов для решения задач. Хорошее их описание на русском языке есть на хабрахабре. Общая идея всех алгоритмов - разработка некоторой метрики оценки "схожести" строк. Полностью одинаковые строки имеют метрику 1.0, полностью не совпадающие строки - 0.0. Пользователь задает "точку отсечения" строк, которые будут считаться одинаковыми - к примеру, это может быть 0.9 и алгоритм считает, что строки которые значение метрики больше являются одинаковыми. Один из наиболее известных метрик - расстояние Левенштейна (по имени советского математика из Института им. Келдыша). Расстояние Левенштейна определяет минимальное количество вставок, замен или удалений символов, необходимое для того, чтобы превратить одну строку в другую.
Алгоритмы - это хорошо, но как воспользоваться их возможностями без необходимости того, чтобы программировать самому?
Я знаю два бесплатных инструмента, которые можно использовать прямо "с колес" без особых знаний тонкостей алгоритмов:
- Google Refine. Как называет его сама Google, " a power tool for working with messy data". Программа бесплатно скачивается и устанавливается на десктоп. Работает в окне браузера. Позволяет открыть локальный файл или документ Google Docs и сопоставить "похожие" значения. Для нечеткого сравнения программа предлагает несколько алгоритмов, подробно описанных в документации. Вообще программа умеет много чего, и имеет смысл поразбираться в ней, благо документация написана хорошо, есть даже видеоролики с иллюстрациями разных возможностей. Проблема для меня заключается в том, что передача файлов и обратно в Google Refine занимает время. Работа в веб-браузере понятна, но не очень удобна (для меня по крайней мере), поэтому я использовал несколько раз Google Refine для обработки бюджетной статистики и обработки большой таблицы со статистикой по странам по разным странам, но не нашел программу уж очень удобной для быстрой работы.
- Надстройка Fuzzy Lookup для Excel, написанная самой Microsoft. Программа также бесплатно скачивается и устанавливается в Excel. Внешний вид выглядит примерно так (обработка таблиц с видами деятельности):
В архиве есть файл с примером, который показывает как все работает. Важное, что нужно запомнить для того, чтобы сравнивать таблицы: нужно их создать в виде "таблицы" (то есть Вставка-Таблица). Первой выбирается таблица из которой берутся исходные значения, второй - которые сопоставляются с исходными. Можно выбрать несколько столбцов, по которым будет проводиться сопоставление столбцов, для этого надо добавить несколько столбцов в Match Columns. В Output Columns можно выводить не все имеющиеся столбцы, и лишь те, что нужно. Это довольно удобно. К примеру, стандартная функция ВПР ничего подобного не умеет, поэтому надстройкой Fuzzly Lookup можно пользоваться и для "четкого" сопоставления разных таблиц.
Алгоритм работы программы не описывается, но на практике он дает вполне нормальные результаты и для строк на русском языке. Главное не забыть, проверить результаты сопоставления и исправить возможные ошибки алгоритма вручную. Для этого надо обратить на строки, в которых Fuzzy.Lookup.Similarity отличается от 1 и удостовериться, что "автоматическое" сопоставление сработало правильно.
Алгоритм работы программы не описывается, но на практике он дает вполне нормальные результаты и для строк на русском языке. Главное не забыть, проверить результаты сопоставления и исправить возможные ошибки алгоритма вручную. Для этого надо обратить на строки, в которых Fuzzy.Lookup.Similarity отличается от 1 и удостовериться, что "автоматическое" сопоставление сработало правильно.
P.S. Функция ВПР имеет параметр "Интервальный просмотр", который можно поставить на значение "1". Это будет означать приблизительное соответствие . Но я не рекомендую его использовать ни при каких обстоятельствах, так как результаты этой "приблизительности" абсолютно непонятны. Можно легко получить неправильные значения. Ошибку же крайне сложно будет обнаружить пост-фактум.
Подписаться на:
Сообщения (Atom)





