关于复杂非线性系统第三版函数的回归问题



Matlab的cftool及其它几个拟合函数,因为使用的都是局部最优算法,对初值比较依赖,很容易陷入局部最优解,2#的结果即是局部最优结果。

1stOpt求解代码和结果:



谢谢您为我用1stopt为我解答,由于你的结果和2#的结果有误差,我该怎样判别哪个是拟合初始函数的最优解,此前这个函数有前辈是用matlab来拟合的初始参数,现在用matlab和1stopt拟合的初始参数与那位前辈拟合的初始参数都有些差异,我现在该怎样来解决这个问题,因为我还要学会这些方法去拟合y=a*x*(x-b)*sqrt(c-x),y=a*(exp(b*x)-exp(b*c-(c-x)/c)),等等其它模型。拜请您帮我解答一下,麻烦了。

1stOpt给出的结果应该是最好结果(或你也可称之为正确结果),其它的都是局部最优结果。最简单的方法就是根据“残差平方和(SSE)”最小且计算结果稳定来判断拟合结果的好坏。

版本太老了吧,试试下面代码:


我这注册版的每次结果都稳定唯一:

对实际科学研究中常遇到不可线性处理的非线性回归问题,提出了一种新的解决方法。该方法是基于回归问题的最小二乘法,在求误差平方和最小的极值问题上,应用了最优化方法中对无约束极值问题的一种数学解法——单纯形法。应用结果证明,这种非线性回归的方法算法比较简单,收敛效果和收敛速度都比较理想。
对于上述这些可化为线性模型的回归问题,一般先将其化为线性模型,然后再用最小二乘法求出参数的估计值,最后再经过适当的变换,得到所求回归曲线。
在熟练掌握最小二乘法的情况下,解决上述问题的关键是确定曲线类型和怎样将其转化为线性模型。确定曲线类型一般从两个方面考虑:一是根据专业知识,从理论上推导或凭经验推测、二是在专业知识无能为力的情况下,通过绘制和观测散点图确定曲线大体类型。
某国人口变化数据:注意:即便线性方程对对观测数据拟合相当好,但有关误差项的独立性和方差假设有可能被破坏。原因是时间序列的数据误差项往往不独立,误差项大小有可能根据数据总体的大小而变化,意思就是,即便适合这个样本的观测量的方程,但是,不适合总体。根据经验,人口增长模型不能被转化为线性模型,所以,可以利用曲线回归或者非线性回归。进一步比较究竟是曲线回归好还是非线性回归好,需要建立新的残差变量,这一步并不难,就是在spss中,相应分析的保存子对话框中建立新的对应模型的变量。其实,有一个万能公式:spss中,所有的“保存”对话框的功能都是,在二维表窗口也就是spss的盛放数据窗口中建立新变量,这个新变量有默认名,是相应分析的重要结果。保存新变量以后,需要根据残差的序列图进行判断:最平稳的就是最合适的。
例2:血中药物浓度和时间曲线呈非线性关系。
这个是根据专业背景知识而判断。药物不可能马上见效,也许在血液中逐步或者突然见效。
例3:身高和体重,在青少年中,是呈直线关系,因为,青少年在不断成长,但是,对于整个人的生命周期,确是曲线关系 因为,成年人的身高一般是确定的。
像这样的例子根本用直线回归拟合不了,也称为非本质线性模型。对于这种实际情况,可以使用非线性回归的分段模型。最终目的是使残差平方和最小。也就是在图形中跟大多数散点接近。
①利用简单假设确定,例如,如果在所有变量中最大的一个个案值为178万,就需要选择200为初始值,再根据方程估计参数值。
②利用图形或者图形辅助,数据转换
如果参数没有初始值,也不能简单的设置为0,最好是将它们设置为预计要改变的值大小。总之,就是想办法找到一个比较合适的值,多设几个,然后比较。也可以根据专业背景和重点,来设值。这个还可以根据数学计算,例如,方程二边同时取对数。需要具体问题具体分析。
迭代和收敛:迭代是计算机自动计算的,例如将迭代设置为1000,意思就是计算机算了1000次,每一次都是根据上一次的结果的基础进行再运算。当然,人工笔算需要算1000年。迭代不会永无止境的计算下去,而是收敛标准或者称作最大迭代的设置后,不论得没有得到结果,是否达到目标,都会停止。在结果输出表格中有迭代的历史记录。这个表格就是过程表,每一步怎样算的,都可以找到。因为迭代是计算机自动计算,例如,烧水,如果开了不断电,水烧干了就会起火,所以,机器需要人控制,它本身没有情感。
spss操作:不论“计算变量”对话框或者“非线性回归”,和非线性回归的“损失函数”对话框都是很像的,有一个计算器算盘,函数组,函数和特殊变量。各种元素组合在一起,构成一个表达式,这个表达式构成一个新变量。只要用鼠标将对应的元素加入到表达式中,然后检查,或者事先在本上写有表达式,对应好,基本就没有问题。其实,spss许多操作根据文字可以猜出个大概。
3 损失函数:“非线性回归”对话框是对整个因变量的运算法则,但是,损失函数是对某一个统计量的运算法则,spss默认是使用最小残差平方和找出非线性模型,也可以自己设置。在相应对话框中都有设置。可以这样以为:损失函数就是估计误差的函数,它是一个负面指标,越小越好。
4 参数约束:多数非线性模型中,参数必须限制在有意义的区间内。指的是在迭代过程中对参数的限制。分为线性约束和非线性约束。线性约束中将参数乘以常数 但这个常数不能为其他参数或者自身。非线性约束中至少有一个参数和其他参数相乘或者相除或者进行幂运算。
1 估计参数的渐进相关矩阵:如果出现非常大的正值或者负值,可能因为模型中参数过多,也说明观测量数目不足,但是不说明模型不拟合。
2 95%置信区间:如果95%置信区间不包括零,表明这个参数具有统计学意义。如果离零比较接近,下结论时候应慎重。
3 曲线拟合中计算出来的决定系数实际上是曲线直线化直线方程的决定系数,不一定代表变换前的变异解释程度。也就是说二个模型的决定系数有可能不具有可比性。
1 曲线回归最好的模型和非线性回归最好的模型进行比较。从中挑选最合适的模型。通过保存残差变量然后绘制序列图实现。
2 有很多时候,线性模型根本解决不了问题,因为,即便费了很大力气转化为线性模型,但是,却扭曲了数据。例如不仅改变原来数据的正态性,还改变数据的方差齐性,独立性。并且,在精度要求比较高或者模型比较复杂时候,曲线回归也不能应用。所以这时候最好应用非线性回归模型。

有算法还不会写程序?而且你这个公式怎么和我见到的不同呢?


从数据文件中读取数据,格式如下

第一行是观测点的个数n

第二行是自变量的个数m

当然,这个程序用了一个矩阵类,用来求解方程组

我要回帖

更多关于 非线性系统第三版 的文章

 

随机推荐