我正在处理adstock模型并尝试在adstock_t = ad_t + alpha * adstock_t-1的公式中找到最佳alpha。我在R中找到以下相关代码来解决这个问题:
在这里,对于建模,这个人使用了nls函数,我有几个问题: 首先,似乎函数sales~b0 + bi * adstock是一个线性函数,为什么我们在这里使用非线性拟合模型。 其次,我想知道模型如何选择最好的b0,b1和alpha(这里的速率)。我们只指定每个参数的起点,模型如何通过所有可能的值并选择最佳值?参数范围是否有上限?它是否选择基于R平方的最佳参数(最小化SSR)?但在我们的课程中,讲师提到我们使用最大似然估计最佳费率,这使我感到困惑,因为nls使用最小二乘法则。那是不一致的吗?
感谢您的帮助!
洁
答案 0 :(得分:0)
如果rate
已修复,那么sales
将是b0
和b1
的线性函数,我们可以使用lm
来解决它,但rate
不固定。确实,在这种情况下可以使用algorithm="plinear"
,在这种情况下,只需要指定非线性参数rate
的起始值,可以使用该算法省略线性参数的起始值。请注意,"plinear"
所需的公式与其他算法不同。以下是使用plinear
的{{3}} - 搜索plinear
的SO会找到其他示例。
nls
没有尝试所有可能的值。它使用的方法由algorithm=
参数指定,如果没有指定,则默认使用example。它从某个指定的起始值开始,然后向下移动少量并重复。具体如何完成取决于所选择的具体算法。有关参数和参考的详细信息,请参阅?nls
。
发布到SO时不使用图像,而是包含一个完整的可重现示例,包括其他人可以复制并粘贴到其会话中的所有输入。