定义 gam 函数类型
Defining gam function type
我想在数据集上应用 gam 模型并指定要使用的函数类型。
它会是这样的:
y ~ cst1 * (s(var1)-s(var2)) * (1 - exp(var3*cst2))
s
必须是 var1
和 var2
的相同函数。我对 s
函数族没有先入为主的想法。如果我继续,模型会找到常量(cst1
和 cst2
)加上函数 s
.
可能吗?如果没有,有什么方法(另一种类型的模型)可以用来做我正在寻找的事情吗?
预先感谢您的回复。
该模型可以与非线性最小二乘包 nls
拟合。这将允许您直接对您想要的公式进行建模。不过,样条曲线需要手动完成。 This question gets at what you would be trying to do.
至于让 var1
和 var2
的样条相同,您可以通过减去基矩阵来实现。基本上你想计算系数向量 A
,其中项是 A * s(var1) + A * s(var2) = A * (s(var1) - s(var2))
。你不想只做 s(var1 - var2)
;一般来说,f(x) - f(y) != f(x - y)
。要在 R 中执行此操作,您需要
用ns()
计算var1
和var2
的样条基矩阵,给它们相同的节点。您需要同时指定 knots
和 Boundary.knots
参数,以便两条样条曲线共享相同的基础。
将两个样条基矩阵相减(ns()
函数的输出)。
为 nls
公式调整生成的相减样条基矩阵,就像他们在我之前链接的问题中所做的那样。
我想在数据集上应用 gam 模型并指定要使用的函数类型。
它会是这样的:
y ~ cst1 * (s(var1)-s(var2)) * (1 - exp(var3*cst2))
s
必须是 var1
和 var2
的相同函数。我对 s
函数族没有先入为主的想法。如果我继续,模型会找到常量(cst1
和 cst2
)加上函数 s
.
可能吗?如果没有,有什么方法(另一种类型的模型)可以用来做我正在寻找的事情吗?
预先感谢您的回复。
该模型可以与非线性最小二乘包 nls
拟合。这将允许您直接对您想要的公式进行建模。不过,样条曲线需要手动完成。 This question gets at what you would be trying to do.
至于让 var1
和 var2
的样条相同,您可以通过减去基矩阵来实现。基本上你想计算系数向量 A
,其中项是 A * s(var1) + A * s(var2) = A * (s(var1) - s(var2))
。你不想只做 s(var1 - var2)
;一般来说,f(x) - f(y) != f(x - y)
。要在 R 中执行此操作,您需要
用
ns()
计算var1
和var2
的样条基矩阵,给它们相同的节点。您需要同时指定knots
和Boundary.knots
参数,以便两条样条曲线共享相同的基础。将两个样条基矩阵相减(
ns()
函数的输出)。为
nls
公式调整生成的相减样条基矩阵,就像他们在我之前链接的问题中所做的那样。