非线性模型(R语言)

实例一

首先,绘制出原数据的散点图。代码试下如下:

data9.3<-read.csv("C:/Users/Administrator/Desktop/data9.3.csv",head=TRUE)
attach(data9.3)
plot(x,y)

输出结果为:
在这里插入图片描述
  可以看出,这时 y y y x x x之间呈现出非线性,因此需要对数据进行非线性回归分析。

代码实现如下:

nls9.3<-nls(y~a-a/(1+(x/c)^b),start=list(a=100,b=5,c=4.8))
summary(nls9.3)
e<-resid(nls9.3)
ebar<-mean(e)
SE<-deviance(nls9.3)  # 残差平方和,由于e的均值不等于0,所以SE不等于残差的离差平方和
SSE<-sum((e-ebar)^2)  # 残差的离差平方和
prey<-fitted(nls9.3)  # y的预测值
pybar<-mean(prey)  # y的预测值的均值
ybar<-mean(y)  # y的均值
SST<-sum((y-ybar)^2)  # 总离差平方和
Rsquare<-1-SE/SST  # 相关指数

输出结果为:
在这里插入图片描述
在这里插入图片描述
  由以上输出结果可知,对参数的估计经过6步迭代计算后收敛,而且相关指数 R 2 = 0.9986 R^{2}=0.9986 R2=0.9986,说明非线性回归拟合效果很好。同时,上述结果中对参数的显著性检验显示参数均通过显著性检验。
  但是,在小样本的情况下,不可线性化的非线性回归的残差通畅不满足正态性,进而使用 t t t分布进行检验也是无效的,因此显著性检验的结果并不具有重要意义。
  另外,听过对中间量的查看,回归的利差平方和 S S R = 15156.55 SSR=15156.55 SSR=15156.55,而总离差平方和 S S T = 14917.89 &lt; S S R SST=14917.89&lt;SSR SST=14917.89<SSR,可见非线性回归不再满足平方和分解式。
  该实例中残差均值为 0.2856 ≠ 0 0.2856\neq0 0.2856̸=0,当然,如果回归拟合的效果好,残差均值会接近0.
  通过上述分析可以认为, y y y x x x符合下面的非线性回归:
  
   y ^ = 99.541 − 99.541 1 + ( x 4.7996 ) 6.7613 \hat{y}=99.541-\frac{99.541}{1+(\frac{x}{4.7996})^{6.7613}} y^=99.5411+(4.7996x)6.761399.541

实例二——Gompertz模型

回归实现的代码如下:

data9.4<-read.csv("C:/Users/Administrator/Desktop/data9.4.csv",head=TRUE)
y<-data9.4[,2]
t<-data9.4[,1]
model<-nls(y~k*(a^(b^t)),start=list(a=0.5,b=0.5,k=120),lower=c(0,0,116),upper=c(1,1,10000),algorithm="port")
summary(model)
c<-coef(model)  # 将模型的回归系数赋值给c
tt<-c(1:30)
yp<-c[3]*(c[1]^(c[2]^tt))  # 计算时间取值为tt时对应的y的预测值
t1=t+1979  # 计算对应的年份
t2<-tt+1979
plot(t1,y,type="o",ann=FALSE,ylim=c(0,160),xlim=c(1975,2015))
lines(t2,yp)

输出结果为:
在这里插入图片描述
拟合结果为:
在这里插入图片描述
  这里可以不用纠结这个模型是怎么得到的,这是一个计量经济学上的模型,已经给出了确切的表达式为 y t = k ⋅ a b t y_{t}=k\cdot a^{b^{t}} yt=kabt
  举这个例子的目的是了解由于回归迭代中的参数超过范围而导致代码运算产生无限不收敛的情况时,如何对参数取值做出限定,并使用高斯-牛顿迭代算法(设定参数algorithm=“port”)。

  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值