Здравствуйте, гость ( Вход | Регистрация )
28.04.2025 - 19:05
Сообщение
#1
|
|
|
Группа: Пользователи Сообщений: 290 Регистрация: 1.06.2022 Из: Донецк Пользователь №: 39632 |
Задача в том, чтобы обучить модель линейной регрессии (см. тему соседнюю) на одних данных, а потом применить к другим, при этом не меняя коэффициентов. Извлечь коэффициенты из объекта класса "lm" легко, но как правильно передать другой модели? С некоторым удивлением не обнаружил в синтаксисе функции lm() возможности задачи пользовательских коэффициентов для каждого члена уравнения. На буржуйских формах что-то пишут о применении служебной функции offset(), но я так и не понял как ее запрограммировать в случае множественной регрессии со взаимодействиями категориальных переменных с числовыми. Поэтому возникла идея тупой "пересадки органов". Логика подсказывает, что помимо $coefficients требуется пересадить еще и $fitted.values (в моем случае все наблюдения во модели-реципиенте являются подмножеством наблюдений на которых построена модель-донор, так что можно просто выкинуть лишние значения). Если бы это было не так, можно было бы подогнать новые, применив к модели-донору функцию predict() с наблюдениями, используемыми в модели-реципиенте, в качестве аргумента newdata. Далее следует поменять остатки ($residuals). Их можно не пересаживать, а вычислить, вычтя пересаженные $fitted.values из родных для реципиента $model$имя_зависимой_переменной. Достаточно ли перечисленных операций для того, чтобы модель-реципиент стала вести себя так, будто была построена на априорно заданных коэффициентах в таких задачах как построение доверительных интервалов, вычисление F-статистики и R2? Или надо пересаживать что-то еще? Просто внутри объекта "lm", помимо вышеназванного, напихано много всякого, что недоступно моему разумению. Быть может, без редактирования чего-нибудь из этого в дополнение к проделанным трансплантациям органов, чье назначение мне ясно, организм донора будет функционировать не совcем правильно, выдавая вместо ожидаемых от него результатов погоду на Луне?
Сообщение отредактировал ИНО - 28.04.2025 - 19:05 |
|
|
![]() |
![]() |
![]() |
1.05.2025 - 12:34
Сообщение
#2
|
|
|
Группа: Пользователи Сообщений: 290 Регистрация: 1.06.2022 Из: Донецк Пользователь №: 39632 |
Разобрался с $qr - надо оставлять донорский, там инфа только о предикторах. Все, что касается соответствия независимой переменной модели, содержится в $fitted.values и $residuals. Статистики, появляющиеся при вызове summary(), anova() и др., вычисляются на лету. Это касается сугубо lm, в объектах других классов, даже похожих внешне, в нутре может быть все совсем по-другому. Осталось разобраться с $effects.
|
|
|
![]() |
![]() |
ИНО Трансплантация коэффициентов уравнения линейной регрессии от одной модели другой 28.04.2025 - 19:05
comisora Цитата(ИНО @ 28.04.2025 - 19:05) Зад... 28.04.2025 - 23:15
ИНО Но постойте, predict() не принимает новые данные п... 29.04.2025 - 01:02
ИНО Эксперименты показали, что пациенты класса "l... 30.04.2025 - 01:27
Игорь Цитата(ИНО @ 28.04.2025 - 19:05) Зад... 4.05.2025 - 13:24
ИНО Да, проблема именно в конкретной реализации. Окзал... 4.05.2025 - 22:36
comisora Цитата(ИНО @ 4.05.2025 - 22:36) Окза... 5.05.2025 - 23:05
ИНО Спасибо, но что-то Ваш самопальный R2 на данном си... 10.05.2025 - 23:01
ИНО В общем написал я и функцию для F-стактистики, пос... 12.05.2025 - 18:57![]() ![]() |