Как сохранить коэффициенты полиномиальной линейной модели степени 2 и сделать прогноз позже в R? - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть данные клиентов 50k. Мне нужно подобрать полилинейную модель для каждого клиента и сохранить коэффициенты вместо сохранения полной модели. Я хочу умножить эти коэффициенты на данные входных объектов и получить значение ответа. для одного клиента модель выглядит так:

data <- data.table(x=c(6.831,20.34083,33.85067, 47.3605, 60.87033, 74.38017, 87.89),
           y=c(0.2098555,0.1593422,0.1191542,0.08804057,0.06445684,0.0468659 
               0.03390175))
model2 <- lm(y ~ poly(x, 2), data)
predict.lm(model2, data[,"x"])

Я подгоню модель, используя эти данные. в будущем я получаю матрицу 50k x 7, где каждая строка представляет точки данных для модели, я должен сделать прогноз для каждой строки, используя модель соответствующего клиента

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

Сначала приведем воспроизводимый пример:

y<-rnorm(20)
x<-matrix(rnorm(40),20,2)
model2<-lm(y~poly(x,2))
predict.lm(model2,as.data.frame(x))

Конечно, вы можете сохранить коэффициенты из model2 в другой переменной, изменить их и так далее. Предсказание прогнозирует значение на основе вашей линейной модели. Таким образом, ввод predict.lm должен быть моделью и данными, а не только коэффициентами. Если вы хотите изменить коэффициенты в модели 2, вы можете сделать это с помощью model2$coefficients[]<-.... Здесь вы можете изменить все коэффициенты модели и выполнить ту же команду, что и выше, с помощью expt.lm

.
0 голосов
/ 17 апреля 2020

Трисс ответ правильный, но я бы также хотел оставить несколько слов. Сначала покажите несколько строк ваших данных. Да, вы можете сохранить коэффициенты в df и использовать их позже, вы можете просто использовать следующие команды в l oop:

coefs <- t(as.data.frame(coef(model2)))
res <- rbind(res,coefs)

Почему вы хотите умножить коэффициенты и каковы входные функции? Coefs расскажет вам о направлении связи между предикторными (объяснительными) переменными и переменной ответа. Например, если coef> 0, это означает, что обе переменные увеличиваются. Убедитесь, что ваша модель построена с использованием только значимых поисковых переменных, проверьте ее с помощью summary(model2), иначе прогноз и выводы могут быть неверными. Тем не менее, вам нужна целая модель, чтобы делать некоторые прогнозы. predict.lm даст вам значение переменной ответа, которую вы ищете (например, размер повышения сотрудника), используя в качестве входных данных исследуемые переменные (производительность сотрудника, возраст, пол, опыт работы и т. Д. c.). Вы можете достичь этого, используя модель, построенную с использованием данных, которые у вас уже есть (для некоторого числа сотрудников). Это тип машинного обучения. Вы создали модель с некоторыми данными (обучающий набор), а затем можете использовать эту модель для прогнозирования новых данных (тестовый набор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...