R中的nls函数如何处理参数的选择

时间:2018-03-20 12:05:04

标签: r regression

我正在处理adstock模型并尝试在adstock_t = ad_t + alpha * adstock_t-1的公式中找到最佳alpha。我在R中找到以下相关代码来解决这个问题: enter image description here

在这里,对于建模,这个人使用了nls函数,我有几个问题: 首先,似乎函数sales~b0 + bi * adstock是一个线性函数,为什么我们在这里使用非线性拟合模型。 其次,我想知道模型如何选择最好的b0,b1和alpha(这里的速率)。我们只指定每个参数的起点,模型如何通过所有可能的值并选择最佳值?参数范围是否有上限?它是否选择基于R平方的最佳参数(最小化SSR)?但在我们的课程中,讲师提到我们使用最大似然估计最佳费率,这使我感到困惑,因为nls使用最小二乘法则。那是不一致的吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

如果rate已修复,那么sales将是b0b1的线性函数,我们可以使用lm来解决它,但rate不固定。确实,在这种情况下可以使用algorithm="plinear",在这种情况下,只需要指定非线性参数rate的起始值,可以使用该算法省略线性参数的起始值。请注意,"plinear"所需的公式与其他算法不同。以下是使用plinear的{​​{3}} - 搜索plinear的SO会找到其他示例。

nls没有尝试所有可能的值。它使用的方法由algorithm=参数指定,如果没有指定,则默认使用example。它从某个指定的起始值开始,然后向下移动少量并重复。具体如何完成取决于所选择的具体算法。有关参数和参考的详细信息,请参阅?nls

注意

发布到SO时不使用图像,而是包含一个完整的可重现示例,包括其他人可以复制并粘贴到其会话中的所有输入。