定义gam函数类型

时间:2016-11-22 22:09:31

标签: r gam

我想在数据集上应用gam模型,并指定要使用的函数类型。

它会是这样的: y ~ cst1 * (s(var1)-s(var2)) * (1 - exp(var3*cst2))

s必须与var1var2具有相同的功能。我对s函数系列没有事先的想法。如果我恢复,模型会找到常量(cst1cst2)加上函数s

有可能吗?如果没有,有什么方法(其他类型的模型)我可以用来做我正在寻找的东西吗?

提前感谢您的回复。

1 个答案:

答案 0 :(得分:1)

此模型可以与非线性最小二乘包nls拟合。这将允许您直接为您想要的公式建模。但是,样条曲线需要手动完成。 This question gets at what you would be trying to do.

为了使var1var2的样条曲线相同,您可以通过减去基础矩阵来实现。基本上,您希望计算系数向量A,其中术语为A * s(var1) + A * s(var2) = A * (s(var1) - s(var2))。你不想做s(var1 - var2);一般来说,f(x) - f(y) != f(x - y)。要在R中执行此操作,您需要

  1. 使用ns() var1var2计算样条基础矩阵,为它们提供相同的结。您需要指定knotsBoundary.knots参数,以便两个样条线共享相同的基础。

  2. 减去两个样条基础矩阵(ns()函数的输出)。

  3. 调整nls公式的结果减去样条基础矩阵,就像我之前链接的问题一样。