2016-02-16 5 views
0

Я пытаюсь предсказать объект lm с использованием функции прогнозирования.lm. Однако я хотел бы использовать введенные вручную коэффициенты. Для этого я попробовал:predict.lm с произвольными коэффициентами r

model$coefficients <- coeff 

(где «коэфф» вектор правильных коэффициентов) , которые бы действительно изменить коэффициенты, как я хочу. Тем не менее, когда я выполняю

predict.lm(model, new.data) 

Я просто получаю прогнозы, рассчитанные по «старым» параметрам. Есть ли способ заставить force.lm использовать новые?

Post Scriptum: Мне нужно сделать это, чтобы поместить бин-гладкую (также называемую регрессограммой). Кроме того, когда я предсказываю «вручную» (т. Е. Используя матричное умножение), результаты являются точными, поэтому я вполне уверен, что проблема заключается в предсказывать, не распознавая мои новые коэффициенты.

Заранее благодарим за помощь!

+1

Почему вы настаиваете на использовании 'predict.lm' для этого? Это не то, для чего он предназначен. – Roland

+0

Я бы хотел использовать его по двум причинам: 1. Даже если у меня уже есть все данные для построения графика, я хотел бы сделать код немного более элегантным и 2. Поскольку мне нужно использовать модифицированный объект lm для создания k-кратной функции проверки перекрестных связей: существующие (небрежно), оценивают коэффициенты, которые не являются правильными. –

+0

@AlbertoFerrando Можете ли вы просто сделать матричное умножение, используя интересующие вас коэффициенты? Вот ссылка на другое сообщение SO, которое является подобным вопросом (возможный дубликат): http://stackoverflow.com/questions/2062194/create-lm-object-from-data-коэффициенты – steveb

ответ

0

Взломанный элемент $coefficients действительно работает. Можете ли вы показать, что не работает для вас?

dd <- data.frame(x=1:5,y=1:5) 
m1 <- lm(y~x,dd) 
m1$coefficients <- c(-2,1) 
m1 
## Call: 
## lm(formula = y ~ x, data = dd) 
## 
## Coefficients: 
## [1] -2 1 

predict(m1,newdata=data.frame(x=7)) ## 5 = -2+1*7 

predict.lm(...) дает те же результаты.

Я был бы очень с таким подходом, проверяя каждый раз, когда вы делаете что-то другое с взломанной моделью.

В общем, было бы неплохо, если бы predict и simulate методы взяли newparams аргумент, но они этого не делают вообще ...

+0

Оказалось, что проблема заключается в том, что после устранения всех переменных и повторного запуска кода предлагаемое решение действительно работало. –

Смежные вопросы