r语言做断轴_R语言用nls做非线性回归以及函数模型的参数估计

非线性回归是在对变量的非线性关系有一定认识前提下,对非线性函数的参数进行最优化的过程,最优化后的参数会使得模型的RSS(残差平方和)达到最小。在R语言中最为常用的非线性回归建模函数是nls,下面以car包中的USPop数据集为例来讲解其用法。数据中population表示人口数,year表示年份。如果将二者绘制散点图可以发现它们之间的非线性关系。在建立非线性回归模型时需要事先确定两件事,一个是非线性函数形式,另一个是参数初始值。

一、模型拟合

对于人口模型可以采用Logistic增长函数形式,它考虑了初期的指数增长以及总资源的限制。其函数形式如下。

function.jpg

首先载入car包以便读取数据,然后使用nls函数进行建模,其中theta1、theta2、theta3表示三个待估计参数,start设置了参数初始值,设定trace为真以显示迭代过程。nls函数默认采用Gauss-Newton方法寻找极值,迭代过程中第一列为RSS值,后面三列是各参数估计值。然后用summary返回回归结果。

library(car)

pop.mod1

summary(pop.mod)

还有一种更为简便的方法就是采用内置自启动模型(self-starting Models),此时我们只需要指定函数形式,而不需要指定参数初始值。本例的logistic函数所对应的selfstarting函数名为SSlogis

pop.mod2

二、判断拟合效果

非线性回归模型建立后需要判断拟合效果,因为有

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matplotlib断是指在绘制图表时,当某些变量的数量级远大于其他变量时,为了将它们放在同一张图中,需要对坐标进行截断。Matplotlib没有直接提供这个功能,但可以通过一些技巧实现。其中一种方法是使用mpl_toolkits.axes_grid1库中的make_axes_locatable函数来创建一个新的坐标,并将其放置在原始坐标的位置上,然后在新的坐标上绘制数据。这样就可以实现断的效果。 举个例子,如果我们要绘制一组数据,其中有一个变量的数量级远大于其他变量,我们可以使用Matplotlib的断功能来将其放在同一张图中。具体步骤如下: ```python import matplotlib.pyplot as plt from mpl_toolkits.axes_grid1 import make_axes_locatable # 生成数据 x = [1, 2, 3, 4, 5] y1 = [10, 20, 30, 40, 50] y2 = [1000, 2000, 3000, 4000, 5000] # 创建画布和子图 fig, ax = plt.subplots() # 绘制数据 ax.plot(x, y1) ax.set_ylabel('y1') # 创建新的坐标 divider = make_axes_locatable(ax) ax2 = divider.append_axes("bottom", size="30%", pad=0.1) # 绘制数据 ax2.plot(x, y2) ax2.set_ylabel('y2') # 设置坐标范围 ax.set_ylim(0, 60) ax2.set_ylim(900, 5500) # 显示图形 plt.show() ``` 在这个例子中,我们使用make_axes_locatable函数创建了一个新的坐标,并将其放置在原始坐标的下方。然后在新的坐标上绘制了另一组数据。最后,我们通过设置坐标的范围来实现断的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值