Коэффициент «хороший ремонт» — не константа: 1.000 в фонде до 1990 против 1.023 в новом, применяется 1.05 #2853

Open
opened 2026-08-12 20:30:05 +00:00 by bot-backend · 0 comments
Collaborator

Не «поменять 1.05 на 1.017», а «это вообще не константа»

Всплыло при проверке #2816. Замер повторён двумя независимыми выборками и сошёлся до четвёртого знака.

Приём замера: парное ₽/м² внутри одного дома — сравниваем медиану объявлений с «хорошим» ремонтом с медианой «стандарта» в том же доме. Дом выступает собственным контролем, поэтому местоположение, этажность и класс не мешают.

Коэффициенты в коде против измеренных

ремонт _REPAIR_COEF измерено пар домов
требует ремонта 0.94 0.944 626
хороший 1.05 1.017 1380
отличный 1.10 1.112 560

Два из трёх попадают. Третий расходится на 3.2 пп — но и это не главное.

Главное: премия за «хороший ремонт» зависит от эпохи дома

эпоха пар премия
1990-2009 240 1.0236
2010+ 641 1.0230
год неизвестен 64 1.0123
до 1990 435 1.0000

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

Цена вопроса

73 персистированные оценки с ремонтом «хороший» — 6.8% от 1081, сумма медиан 879.1 млн ₽. Замена 1.05 → 1.017 опускает каждую на 3.15%, то есть −380 тыс ₽ на оценку и −27.7 млн ₽ на весь набор. Разбивка по эпохам даёт ≈ −26.8 млн — плоская цифра не врёт.

Для старого фонда правка была бы вдвое крупнее: там честный коэффициент 1.000 против применяемого 1.05.

Две границы приёма — обе против моего же числа

1. Коэффициент не определён к трём знакам ни у кого. Лестница по порогу «сколько объявлений в доме с каждой стороны» немонотонна: n≥1 → 1.0169 · n≥2 → 1.0284 · n≥3 → 1.0386 · n≥4 → 1.0307 · n≥5 → 1.0243. Величина, гуляющая на 2 пп от произвольного выбора порога, точной не является.

При этом доверительные интервалы медианы не пересекаются (n≥1: [1.0084, 1.0242]; n≥3: [1.0208, 1.0530]) — значит порог не шумит, а отбирает другую популяцию. Для применения честнее вариант без порога: коэффициент применяется ко всем оценкам, а не только к домам с тремя объявлениями каждого вида.

2. Дома-пары — не случайная выборка. Медиана года постройки у них 2009 против 1977 у остальных, ₽/м² 142 006 против 114 348, объявлений в доме 11 против 2. То есть 1.017 — это смесь двух режимов, взвешенная перекосом в новостройки, а не универсальное число. Плюс второй слой отбора, который никто не контролирует: repair_state заполнен лишь у 24.3% объявлений, значит пары — это ещё и «дома, где разбор сработал дважды».

Опровергнутая гипотеза — моя

Я предположил, что расходящийся коэффициент и слабое место #2816 — одно и то же: там повышающая половина правки не подтвердилась на доме 6767 с «хорошим» ремонтом. Проверено напрямую, не подтвердилось:

дом 6767 · 2026 года · 30 этажей · монолит
стандарт (n=2) 172 983 ₽/м²   хороший (n=3) 207 916 ₽/м²   отношение 1.202

Там собственная премия +20%, то есть 1.05 её занижает. Перелёт над p75 сделок пришёл откуда-то ещё. Связка была красивой и неверной.

Что решать

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

Связано: #2816 (сведение базисов якоря и медианы, смержено), #2674.

## Не «поменять 1.05 на 1.017», а «это вообще не константа» Всплыло при проверке #2816. Замер повторён двумя независимыми выборками и сошёлся до четвёртого знака. **Приём замера:** парное ₽/м² **внутри одного дома** — сравниваем медиану объявлений с «хорошим» ремонтом с медианой «стандарта» в том же доме. Дом выступает собственным контролем, поэтому местоположение, этажность и класс не мешают. ### Коэффициенты в коде против измеренных | ремонт | `_REPAIR_COEF` | измерено | пар домов | |---|---:|---:|---:| | требует ремонта | 0.94 | 0.944 | 626 | | **хороший** | **1.05** | **1.017** | **1380** | | отличный | 1.10 | 1.112 | 560 | Два из трёх попадают. Третий расходится на 3.2 пп — но и это **не главное**. ### Главное: премия за «хороший ремонт» зависит от эпохи дома | эпоха | пар | премия | |---|---:|---:| | 1990-2009 | 240 | 1.0236 | | 2010+ | 641 | 1.0230 | | год неизвестен | 64 | 1.0123 | | **до 1990** | **435** | **1.0000** | **В фонде старше 1990 года премии нет вообще** — ровно единица до четвёртого знака, на 435 парах. То есть единая константа 1.05 неверна в обоих режимах, и сильнее всего в старом фонде: там она выдумывает пятипроцентную надбавку, которой в данных нет. ### Цена вопроса **73** персистированные оценки с ремонтом «хороший» — 6.8% от 1081, сумма медиан **879.1 млн ₽**. Замена 1.05 → 1.017 опускает каждую на 3.15%, то есть **−380 тыс ₽ на оценку** и **−27.7 млн ₽** на весь набор. Разбивка по эпохам даёт ≈ −26.8 млн — плоская цифра не врёт. Для старого фонда правка была бы вдвое крупнее: там честный коэффициент 1.000 против применяемого 1.05. ## Две границы приёма — обе против моего же числа **1. Коэффициент не определён к трём знакам ни у кого.** Лестница по порогу «сколько объявлений в доме с каждой стороны» немонотонна: n≥1 → 1.0169 · n≥2 → 1.0284 · n≥3 → 1.0386 · n≥4 → 1.0307 · n≥5 → 1.0243. Величина, гуляющая на 2 пп от произвольного выбора порога, точной не является. При этом доверительные интервалы медианы **не пересекаются** (n≥1: [1.0084, 1.0242]; n≥3: [1.0208, 1.0530]) — значит порог не шумит, а **отбирает другую популяцию**. Для применения честнее вариант без порога: коэффициент применяется ко всем оценкам, а не только к домам с тремя объявлениями каждого вида. **2. Дома-пары — не случайная выборка.** Медиана года постройки у них 2009 против 1977 у остальных, ₽/м² 142 006 против 114 348, объявлений в доме 11 против 2. То есть 1.017 — это **смесь двух режимов, взвешенная перекосом в новостройки**, а не универсальное число. Плюс второй слой отбора, который никто не контролирует: `repair_state` заполнен лишь у 24.3% объявлений, значит пары — это ещё и «дома, где разбор сработал дважды». ## Опровергнутая гипотеза — моя Я предположил, что расходящийся коэффициент и слабое место #2816 — одно и то же: там повышающая половина правки не подтвердилась на доме 6767 с «хорошим» ремонтом. Проверено напрямую, **не подтвердилось**: ``` дом 6767 · 2026 года · 30 этажей · монолит стандарт (n=2) 172 983 ₽/м² хороший (n=3) 207 916 ₽/м² отношение 1.202 ``` Там собственная премия +20%, то есть 1.05 её **занижает**. Перелёт над p75 сделок пришёл откуда-то ещё. Связка была красивой и неверной. ## Что решать Калибровка не тронута — это ваше решение. Числа говорят, что вопрос не в выборе лучшей константы, а в том, применять ли **разные** коэффициенты к разным эпохам застройки. Промежуточный честный шаг, если развилка кажется преждевременной: понизить доверие к поправке на ремонт там, где она опирается на константу, не подтверждённую для данного дома. Связано: #2816 (сведение базисов якоря и медианы, смержено), #2674.
lekss361 added the
bug
data
priority/p1
scope/backend
tradein
вторичка
labels 2026-08-16 10:25:24 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2853
No description provided.