1、线性拟合
#生成测试数据 x = seq(-5,5,0.1) y = 3*x^2+6*x+9+rnorm(length(x))*3; #把x^2用I来标记成一个变量 #然后进行线性拟合 z=lm(y~I(x^2)+x) #绘制数据点 #及拟合曲线 plot(x,y) lines(x,fitted(z))
2、局部多项式回归拟合
#生成测试数据 x = seq(-5,5,0.1) y = 3*x^2+6*x+9+rnorm(length(x))*3; #局部多项式回归拟合 z=predict(loess(y~x)) #绘制数据点 #及拟合曲线 plot(x,y) lines(x,z) #lowes默认使用局部多项式回归拟合 #z1=lowess(x,y) #lines(z1)
3、非线性最小二乘拟合
#生成测试数据 x = seq(-5,5,0.1) y = 3*x^2+6*x+9+rnorm(length(x))*3 ds <- data.frame(x=x, y=y) #进行非线性最小二乘拟合 f=function(x, a, b, c, d) {a+b*x+c*x^2} z=nls(y~f(x, a, b, c), data=ds, start=list(a=9, b=6, c=3)) #输出拟合结果 summary(z); #绘制数据点 #及拟合曲线 plot(x,y) lines(x,fitted(z))