R语言曲线拟合函数(绘图)

本文转载自:http://blog.sina.com.cn/s/blog_8eee7fb60101g25j.html

曲线拟合:(线性回归方法:lm)
1、x排序
2、求线性回归方程并赋予一个新变量
    z=lm(y~x+I(x^2)+...)
3、plot(x,y)    #做y对x的散点图
4、lines(x,fitted(z))    #添加拟合值对x的散点图并连线


曲线拟合:(nls)
lm是将曲线直线化再做回归,nls是直接拟合曲线。
需要三个条件:曲线方程、数据位置、系数的估计值。
如果曲线方程比较复杂,可以先命名一个自定义函数。
例:
    f=function(x1, x2, a, b) {a+x1+x2^b};
    result=nls(x$y~f(x$x1, x$x2, a, b), data=x, start=list(a=1, b=2));
        #x可以是数据框或列表,但不能是矩阵
        #对系数的估计要尽量接近真实值,如果相差太远会报错:“奇异梯度”
    summary(result);    #结果包含对系数的估计和p值
根据估计的系数直接在散点图上使用lines加曲线即可。


曲线拟合:(局部回归)
lowess(x, y=NULL, f = 2/3, iter = 3)
    #可以只包含x,也可使用x、y两个变量
    #f为窗宽参数,越大越平滑
    #iter为迭代次数,越大计算越慢
loess(y~x, data, span=0.75, degree=2)
    #data为包含x、y的数据集;span为窗宽参数
    #degree默认为二次回归
    #该方法计算1000个数据点约占10M内存
举例:
x=seq(0, 10, 0.1); y=sin(x)+rnorm(101)    #x的值必须排序
plot(x,y);    #做散点图
lines(lowess(x,y));    #利用lowess做回归曲线
lines(x,predict(loess(y~x)));    #利用loess做回归曲线,predict是取回归预测值
z=loess(y~x); lines(x, z$fit);    #利用loess做回归曲线的另一种做法

  • 18
    点赞
  • 124
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB(Matrix Laboratory)是一种专业的数学软件,可以进行数据处理、可视化、数学建模等功能,拥有强大的计算、绘图和数据分析功能。其中,MATLAB曲线拟合函数可以对一组数据进行拟合,并选择合适的拟合模型。以下是其用法以及一个简单的例子。 用法: polyfit和polyval是matlab中用于多项式拟合的功能。 polyfit(X,Y,N)函数会返回一个长度为N + 1的向量,其中包含多项式系数p,p中的元素按降幂排列,这样多项式就变成了p(1) * x^(N) + ...+ p(N) * x + p(N + 1)。X和Y表示给出的坐标点,N表示多项式的次数。 polyval(p,x)函数则使用多项式系数向量p(例如计算结果),返回多项式的。p中包含的元素按降幂排列,例如,多项式p(x)=3x^2+2x+1 可表示为p = [3 2 1]。给定x和多项式系数p,polyval函数可以计算多项式的。 例子: 假设有一组坐标点x和y,将这组坐标点进行多项式拟合。 %生成随机数据,x表示横坐标,y表示纵坐标 x = 1:10; y = rand(1,10); %画出原始像 plot(x,y,'*'); %将数据进行多项式拟合, 次数为N (此处设置N=3) p = polyfit(x,y,3); %根据拟合多项式绘制曲线 y_fit = polyval(p,x); hold on; plot(x,y_fit,'-'); %显示拟合后的像 legend('原始数据','拟合曲线'); xlabel('自变量(x)'); ylabel('因变量(y)'); title('多项式拟合曲线'); 以上是一个简单的例子,可以通过CSND等技术网站获取更多的示例。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值