Сглаживание полиномиальной кривой

Учитывая данные, которые выглядят следующим образом:

x<-c(0.287,0.361,0.348,0.430,0.294)
y<-c(105,230,249,758,379)

Я пытаюсь подогнать к этим данным несколько разных методов. Для этого вопроса я смотрю на полиномиальные подгонки 2-го порядка против подгонки Лесса. Чтобы получить более гладкую кривую, я хотел бы расширить данные x, чтобы дать мне больше точек для прогнозирования. Итак, для моей кривой Лёсса я делаю следующее:

Loess_Fit<-loess(y ~ x)
MakeSmooth<-seq(min(x), max(x), (max(x)-min(x))/1000)

plot(x,y)
#WithoutSmoothing
lines(x=sort(x), y=predict(Loess_Fit)[order(x)], col="red", type="l")
#With Smoothing
lines(x=sort(MakeSmooth), y=predict(Loess_Fit,MakeSmooth)[order(MakeSmooth)], col="blue", type="l")

Когда я пытаюсь сделать то же самое с полиномиальной подгонкой 2-го порядка, я получаю сообщение об ошибке.

Poly2<-lm(y ~ poly(x,2,raw=TRUE))
plot(x,y)
#WithoutSmoothing
lines(x=sort(x), y=predict(Poly2)[order(x)], col="red", type="l")
#With Smoothing
lines(x=sort(MakeSmooth), y=predict(Poly2,MakeSmooth)[order(MakeSmooth)], col="blue", type="l")

Очевидно, что между Poly2 и Loess_Fit есть какая-то разница, но я не знаю, в чем разница. Есть ли способ сгладить посадку Poly2, как я сделал с Loess_Fit?


person Vinterwoo    schedule 24.03.2017    source источник


Ответы (1)


Для lm новые данные должны быть фреймом данных:

lines(x=sort(MakeSmooth), y=predict(Poly2,data.frame(x=MakeSmooth))[order(MakeSmooth)], col="blue", type="l")
person Marcelo    schedule 24.03.2017