Этот вопрос довольно общий и многословный, но, пожалуйста, потерпите меня.
В моем приложении у меня есть много наборов данных, каждый из которых состоит из ~ 20 000 точек данных с ~ 50 объектами и одной зависимой двоичной переменной. Я пытаюсь смоделировать наборы данных с помощью регуляризованной логистической регрессии (пакет R glmnet )
Как часть моего анализа, я создал остаточные участки следующим образом. Для каждой функции я сортирую точки данных в соответствии со значением этой функции, делю точки данных на 100 сегментов, а затем вычисляю среднее выходное значение и среднее значение прогнозирования в каждом сегменте. Я строю эти различия.
Вот пример остаточного участка:
На приведенном выше графике характеристика имеет диапазон [0,1] (с высокой концентрацией в 1). Как вы можете видеть, когда значение свойства низкое, модель, кажется, смещена в сторону переоценки вероятности выхода 1. Например, в самом левом ведре модель переоценивает вероятность примерно на 9%.
Вооружившись этой информацией, я хотел бы прямо изменить определение функции, чтобы примерно исправить это смещение. Переделки вроде замены
или
Как я могу это сделать? Я ищу общую методологию, чтобы человек мог быстро прокрутить все ~ 50 графиков и внести изменения, сделать это для всех наборов данных и часто повторять, чтобы поддерживать модели в актуальном состоянии по мере развития данных с течением времени.
Как общий вопрос, это даже правильный подход? Поиски в Google по запросу «Остаточный анализ логистической регрессии» не дают много результатов с хорошим практическим советом. Кажется, они зациклены на ответе на вопрос: «Эта модель хорошо подходит?» и предложить различные тесты, такие как Hosmer-Lemeshow, чтобы ответить. Но мне все равно, хороша ли моя модель, я хочу знать, как сделать ее лучше!
вряд ли существует какое-либо общее программное обеспечение для этого. скорее всего потому, что нет общей теории для исправления проблем в регрессии. следовательно, это скорее ответ типа «что я бы сделал», чем теоретически обоснованная процедура.
график, который вы создаете, - это, в основном, визуальный тест HL с 100 ячейками, но с использованием одного предиктора вместо предсказанной вероятности выполнения разбивки. это означает, что ваша процедура может наследовать некоторые свойства теста HL.
Ваша процедура звучит разумно, хотя вы должны знать, что вы «переоцениваете» свои критерии. Ваши критерии также менее полезны в качестве диагностики, поскольку они стали частью процесса оценки. Кроме того, всякий раз, когда вы делаете что-то интуитивно, вы должны записывать процесс принятия решений настолько подробно, насколько это практически возможно. это потому, что вы можете обнаружить семена общего процесса или теории, которая при разработке приводит к лучшей процедуре (более автоматической и оптимальной по отношению к некоторой теории).
я думаю, что один из способов - сначала сократить количество участков, которые вам нужно исследовать. Один из способов сделать это - подогнать каждую переменную как кубический сплайн, а затем исследовать графики, которые имеют ненулевые нелинейные оценки. учитывая количество точек данных, это также простое автоматическое исправление нелинейностей. это расширит вашу модель с 50 до 200 + 50k, где k - количество узлов. Вы можете думать об этом как о применении «статистического расширения ряда Тейлора» «истинного» преобразования.
если после этого ваши диагностические кадры выглядят плохо, то я бы попытался добавить условия взаимодействия.
Части вашего вопроса больше похожи на написание интерактивной программы, которая больше относится к стековому потоку, чем здесь. это также может быть полезно для поиска исследовательских инструментов анализа данных, так как они, скорее всего, будут иметь функции, которые вы можете «убрать».
источник