Британская статистическая служба в среду опубликовала инфляцию за ноябрь. В её таблицах CPI продукты и безалкогольные напитки стоят на 16,4% дороже, чем год назад. Спор вокруг таких чисел в этом году в основном про дешёвую еду. В январе Джек Монро написала, что пачка самых дешёвых макарон весом 500 г подорожала с 29 до 70 пенсов. В конце того же месяца New Statesman взял сырые цены ONS. Он показал, что самая дешёвая десятая часть цен росла намного быстрее медианы.
Официальное число я знал, но ни разу не смотрел, как его считают. Идея была собрать свой индекс по чекам. Только чеки одного человека это 15 или 20 позиций из 1 или 2 магазинов. Я не знал, что вообще может сказать индекс по такой маленькой корзине. Поэтому сначала я хотел проверить это на данных, где ответ можно проверить.
Чеки, которые публикует ONS
Каждый месяц ONS выкладывает цены, которые её сборщики цен записывают в местных магазинах. Набор называется “item indices and price quotes”. Одна строка это одна цена: товар, код магазина, регион, цена и флаг распродажи или замены товара. По продуктам и напиткам это около 42 тысяч пригодных цен в месяц примерно по 175 товарам. Товар это что-то вроде “большой белый батон без нарезки 800 г” или “молоко полужирное 2 пинты”. В том же наборе лежит официальный индекс каждого товара и его вес в CPI на 2022 год.
Ближе к чекам в открытом доступе ничего нет. Я взял файлы с ноября 2021 по ноябрь 2022 года, последний вышел вместе с 16,4%. Потом написал короткий скрипт на Python с pandas.
Этот вопрос задавали и до меня. В октябре ONS сама опубликовала экспериментальный индекс самого дешёвого варианта каждого из 30 повседневных товаров, собранный с сайтов супермаркетов. У неё вышло около 17% к сентябрю. Я тут не первый. Мне было интересно, насколько ответ зависит от способа счёта.
Сначала: удастся ли повторить 16,4%
Я посчитал тремя способами. Официальные индексы товаров с их весами в CPI, сцепленные через январь так, как это делает ONS, дают 16,0%. Мой собственный индекс по сырым ценам даёт 16,8%. В нём я сравниваю одну полку с разницей в год, то есть тот же товар в том же регионе и с тем же кодом магазина. Наивный вариант это то, что делаешь с кучей чеков. Берёшь среднее геометрическое всех цен товара в ноябре 2022 года и делишь на то же за ноябрь 2021 года. Никакого сопоставления. Выходит 16,6%.
Разрыв между 16,0% и 16,4% я закрыть не смог. У одной позиции картофеля с весом 0,8 из 116 нет опубликованного индекса, но она объясняет максимум около 0,1 пункта. Остальное сидит внутри опубликованных индексов подклассов. Где именно, я не отследил.
Наивный вариант вышел ближе моего сопоставленного, что меня удивило, но по отдельным товарам он намного хуже, чем кажется. Из 175 товаров у 170 есть официальный индекс в оба года. Для 90% из них наивный счёт расходится с официальным индексом товара где-то от 6 пунктов вниз до 8 пунктов вверх. На 170 товарах эти ошибки в основном гасят друг друга, но на корзину из 15 я бы на это не рассчитывал.
Дешёвая еда
Метод New Statesman на ноябрьских ценах простой: берёшь 10-й перцентиль и медиану каждого товара в оба года. 10-й перцентиль рос быстрее медианы у 98 товаров из 170, медленнее у 68 и так же у 4. Со взвешиванием дешёвые цены выросли на 20,4% против 16,3% у медианы. На этих числах утверждение тоже держится.
Только 10-й перцентиль в 2021 и в 2022 году это разные полки. Мне хотелось одну и ту же полку. Я взял полки, цены которых в ноябре 2021 года попали в самую дешёвую десятую часть по их товару. Потом посмотрел на ту же полку через год. По моему первому счёту они подорожали на 32,9%. Все остальные на 13,6%. Дешёвые полки росли быстрее у 125 из 150 товаров, где сопоставленных полок достаточно. Я проверил, не в распродажах ли дело. Дешёвая цена может быть просто акцией, после которой цена возвращается к обычной. Нет. На распродаже было 6,2% этих полок против 5,5% остальных.
На этом месте у меня был заголовок поста. Потом я посчитал в обратную сторону. Берём самые дешёвые полки ноября 2022 года и смотрим, насколько они подорожали за год до этого. Если дешёвые полки правда растут быстрее, эти должны были вырасти не меньше остальных. Они выросли на 3,8%, против 16,3% у остальных.
Пары отражают друг друга. Так выглядит регрессия к среднему. Допустим, часть разницы цен между полками это шум. Тогда полки, выбранные самыми дешёвыми в начале, потом как будто поднимаются со дна, а выбранные в конце как будто почти не двигались.
Шум был в файлах, я просто не смотрел на флаги. За месяц примерно 1 цена продуктов из 10 помечена: товар заменили или у него поменялся размер. Ещё полка может пропасть на несколько месяцев и вернуться. Тот же товар и код магазина через год часто уже не тот же продукт. Первая моя догадка была про ежегодную смену выборки в феврале. Она оказалась неверной, потому что 99,9% полок переносят январскую цену в февраль.
Тогда я оставил только полки без разрывов: цена во все 13 месяцев и никаких отметок, кроме распродаж. Остаётся 11 082 полки в 142 товарах. Самая дешёвая десятая часть ноября 2021 года подорожала на 25,0%, остальные на 15,7%. В обратную сторону самая дешёвая десятая часть ноября 2022 года подорожала на 14,4%, остальные на 16,6%. Обратный разрыв почти исчез.
Но какой-то разрыв всё же есть. Вперёд дешёвая десятая часть обогнала остальных на 9,4 пункта. Назад отстала на 2,2 пункта. Настоящий догоняющий рост даёт дешёвым полкам плюс в обе стороны, а шум помогает в одну сторону и мешает в другую. Если шум одинаков в обе стороны, (9,4 − 2,2) / 2 = 3,6 пункта это настоящий догоняющий рост и (9,4 + 2,2) / 2 = 5,8 это шум. Тот же расчёт на всех сопоставленных полках, где вышли 33%, даёт 3,4 пункта догоняющего роста и 15,9 шума. Дешёвые полки действительно росли быстрее, примерно на 3 или 4 пункта за год. Большая часть разрыва между 33% и остальными пришла от полок, у которых за год был разрыв: товар заменили, поменяли размер или он пропадал на несколько месяцев.
Корзина из 15
Теперь вопрос, с которого я начал. Я собрал корзины из 15 случайных товаров на полках без разрывов, все с равным весом. Каждый товар покупается на 1 случайной полке, так что магазины тоже случайные. 90% таких корзин попали в диапазон от 9,1% до 26,4%. Официальное число 16,4%.
Если вместо 1 полки брать среднее изменение каждого товара, те же корзины из 15 попадают в диапазон от 11,8% до 20,6%. С 2 другими случайными зёрнами эти границы сдвигаются на 0,1 или 0,2 пункта. Список товаров даёт около 9 пунктов разброса, а полка удваивает его примерно до 17.
Если чьи-то чеки показывают 25%, это не доказательство того, что официальное число неверно. Маленькая корзина на случайных полках даёт такое случайно.
Чего я не проверял
- Количества. В настоящих чеках 3 пачки молока и 1 банка кофе, в моих корзинах веса равные.
- Изменение размера. Товар задан диапазоном размера, например от 750 до 800 г. ONS делает поправку на изменение размера. Я только выбросил отмеченные замены и не смотрел, как часто пачка уменьшалась внутри диапазона.
- Разделение на догоняющий рост и шум предполагает, что шум одинаков в обе стороны. Это допущение, я его не измерял. Полки без разрывов к тому же могут быть другими полками, а не просто более чистыми.
- Остаток разрыва между 16,0% и 16,4%.
- Покупки онлайн и дискаунтеры сверх тех, куда ходят сборщики цен. Это Великобритания и только продукты и напитки.
- Размер корзины в 15 товаров я выбрал сам.