php ml 非线性回归,科学网—非线性回归(迭代法)及其两种拟合曲线:y=a+b*exp(c*x) - 梅卫平的博文...

参考文献:

1.  薛毅,陈立萍.统计建模与R软件,第六章回归分析. 清华大学出版社

###############################################################

# ara  #导入数据ara,包含amountara和SL.mm.两个指标

ara

View(ara)

attach(ara)

plot(amountara~SL.mm.)

#---------------建立所需的拟合模型------------------

# y=a+b*exp(c*x)

mod1

mod.ara

# 非线性1,y~a+b*exp(c*x)

summary(mod1)   #导出both residual standard error and R^2

#Residual standard error: 0.1518 on 110 degrees of freedom#MultipleR-squared:  0.8093, Adjusted R-squared:  0.8076

summary(mod.ara)   #导出residual standard error,no R^2

#Residual standard error: 0.1234on 109 degrees of freedom#Number ofiterationsto convergence: 12

AIC(mod1)

#[1] -100.4275

AIC(mod.ara)# AIC值越小,拟合的模型就越好

# [1] -145.7978#上述AIC结果显示模型mod.ara更好

#------------------next作图,并添加拟合曲线-----------------

x.ara

# N.B. 此处SL.mm.不可以使用ara$SL.mm.,否则后面拟合曲线会出错,下同

# 或者

x.ara2

y1

y.ara

# N.B. 上述SL.mm.不可以使用ara$SL.mm.,否则后面拟合曲线会出错,下同

plot(amountara~SL.mm.,main="ara")

lines(x.ara,y1,col="black")   #线性

lines(x.ara,y.ara,col="red")     #非线性

8c8c7da1c4287049c439e5b5be15f1ee.png

#---------------如果想看所有迭代次数的拟合曲线,如下-----------

#y.ara

y.ara.iterations

# 不同之处在于:未将SL.mm.定义给 x.ara

plot(amountara~SL.mm.,main="ara")

lines(SL.mm.,y.ara.iterations,col="red")#非线性,绘制所有迭代拟合曲线

# iterations means 迭代

#-------------------所有迭代次数的拟合曲线,结束---------------

#mod.ara

# summary(mod.ara) 拟合结果显示 # -0.3695  0.1232 0.3186 分别对应上行的参数a,b,c

text(5,1.2,"y=-0.3695+0.1232*exp(0.3186*SL.mm.)")

7d4941225257f7e9d8929ae8efb70b8d.png

#######--------next手动计算nls非线性拟合的R^2---------#######

#-----------how to get R^2 byresidual standard error????

#-----------the residual standard error σˆ =sqrt(SSE/(n-k))

# k 为参数个数,即y=a+b*X中的a和b

# SSE= (residual standard error^2)*(n-k)

# R^2= 1- SSE/[var(amountara)*(n-1)]

# R^2= 1- [(residual standarderror^2)*(n-k)]/[var(amountara)*(n-1)]

# var(amountara)   #计算y的方差,不是标准差

sum.ara

# sum.ara$sigma  # sigmais the value of "residual standard error"

# sum.ara$df[2]  # 即为 n-k

# sum.ara$df[1]  # 即为 k,参数个数,mod2中k=3,即a,b,c

# length(ara$SL.mm.) # 即为 n,样本数即112

R.square= 1-((sum.ara$sigma^2)*(sum.ara$df[2]))/(var(amountara)*(length(ara$SL.mm.)-1))

R.square

#[1] 0.8750826#非线性拟合结果的R^2=0.875082比线性拟合结果R^2=0.8093高

sum.ara

# over

转载本文请联系原作者获取授权,同时请注明本文来自梅卫平科学网博客。

链接地址:http://blog.sciencenet.cn/blog-651374-1014133.html

上一篇:在R中运行metaMDS

下一篇:x~y1+y2+...的情况下,ggplot2作柱状图及误差棒

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值