我同意 Glen_b 的观点。在回归问题中,主要关注的是参数,而不是自变量或预测变量 x。然后人们可以决定是否要使用简单的转换来线性化问题或继续处理它。
线性问题:统计你的问题中的参数个数,并检查它们是否都具有 1 的幂。例如,。该函数在中是非线性的。但对于回归问题,中的非线性不是问题。必须检查参数是线性的还是线性的。在这种情况下,,,,..都具有 1 的幂。因此,它们是线性的。y=ax+bx2+cx3+dx2/3+e/x+fx−4/7xxabcf
请注意,在中,虽然 a 看起来像它的幂 1,但是当展开时
。您可以清楚地看到它是一个非线性参数,因为 a 的幂大于 1。但是,这个问题可以通过调用对数变换来线性化。即,将非线性回归问题转换为线性回归问题。y=exp(ax)exp(ax)=1+ax/1!+(ax)2/2!+…
类似地,是一个逻辑函数。它有三个参数,分别、和。参数和的幂大于 1,展开后它们与每个参数相乘其他带来非线性。因此,它们不是线性的。但是,它们也可以使用适当的替换进行线性化,方法是首先设置,然后在两侧调用对数函数进行线性化。y=a/(1+bexp(cx)abcbc(a/y)−1=Y
现在假设。这又是关于参数的非线性。但是,它不能被线性化。需要使用非线性回归。y=a1/(1+b1exp(c1x))+a2/(1+b2exp(c2x))
原则上,使用线性策略来解决非线性回归问题并不是一个好主意。因此,使用线性回归解决线性问题(当所有参数的幂为 1 时),如果您的参数是非线性的,则采用非线性回归。
在您的情况下,将加权函数替换回主函数中。参数将是唯一具有 1 次幂的参数。所有其他参数都是非线性的(最终乘以和(这两个是非线性参数)使其也是非线性的。因此,这是一个非线性回归问题.β0β1θ1θ2
采用非线性最小二乘技术来解决它。巧妙地选择初始值并使用多开始方法来找到全局最小值。
这个视频会很有帮助(虽然它没有谈论全球解决方案):http ://www.youtube.com/watch?v=3Fd4ukzkxps
在 Excel 电子表格中使用 GRG 非线性求解器(通过转到选项 - 加载项 - Excel 加载项,然后选择求解器加载项来安装求解器工具包)并通过为参数指定间隔和要求来调用选项列表中的多启动约束精度和收敛性较小,可以获得全局解。
如果您使用的是 Matlab,请使用全局优化工具箱。它具有多启动和全局搜索选项。某些代码可在此处获取全局解决方案,此处
和
此处。
如果您使用 Mathematica,请看这里。
如果您使用的是 R,请在此处尝试。