问题标签 [mgcv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
7443 浏览

r - 更改默认 plot.gam 图表的 Y 轴

我使用 mgcv 包在 R 中运行了 GAM,格式如下:

运行此模型并计算每个变量解释的偏差百分比后,我想绘制每个变量对响应的影响

但是,当我在 R 中使用 plot.gam 函数时,我的图表带有 y 轴,即"s(predictor variable, edf)"

我不确定y轴的这个比例代表什么?

有没有一种方法可以将 y 轴范围更改为代表响应的范围,正如本文所做的那样:Walsh 和 Kleiber (2001),“蓝鲨 (Prionace glauca) 捕获的广义加性模型和回归树分析图 3 中夏威夷商业延绳钓渔业的费率。

我会发布一些我正在描述的情节的例子,但由于这是我的第一篇文章,我没有至少 10 名声望,所以它不会让我这样做!

我已经搜索了许多网站和论坛,试图找到一个答案,但无济于事,因此非常感谢任何帮助!

0 投票
2 回答
2243 浏览

r - 插入符号的“gam”模型不返回fitted.values

我正在使用gam模型caret.traincaret使用gam来自包mgcv):

我没有看到fitted.values上面,但一个gam对象应该返回fitted.values- http://hosho.ees.hokudai.ac.jp/~kubo/Rdoc/library/gam/html/gam.html 结果,我无法绘制拟合与残差,以及其他一些功能也失败了。一种解决方法是gam直接使用而不是caret,但我也计划使用其他模型,并且想要一个一致的界面。

请指教。

编辑:

  1. 数据快照 -dput(head(training))输出:

    /li>
  2. str(fit)按照@nograpes 的建议显示fitted.values在里面。finalModel

    /li>
0 投票
3 回答
7714 浏览

r - 提取用于在 mgcv 中绘制平滑图的数据

几年前的这个线程描述了如何提取用于绘制拟合 gam 模型的平滑分量的数据。它有效,但仅当存在一个平滑变量时。我有不止一个平滑变量,不幸的是我只能从系列的最后一个中提取平滑。这是一个例子:

我正在尝试获取 和 的估计平滑函数ab但该列表plotData仅给出了 的估计值b。我已经研究了该plot.gam函数的内部结构,但我很难理解它是如何工作的。如果有人已经解决了这个问题,我将不胜感激。

0 投票
0 回答
933 浏览

r - 如何与两个不同的 `by=var` 变量交互张量积?

一个例子:

最后一个张量不想让我交互它两次。第一个是与模型矩阵中的每一项相乘的连续变量,第二个是一个因子——它为每个因子水平生成不同的表面。

编辑:最后一个术语将相当于te(x1*x2,x1*x3,by=as.factor(fac2)). 但是如果我发明了一个新变量x1x2 = x1*x2,我就失去了调用的能力predict.gam

我该如何编程?我需要上诉SmoothCon吗?如果是这样,如何实施的示例将非常有帮助。

谢谢!

(PS:我知道模型的异方差性质。功能,而不是错误。)

0 投票
1 回答
469 浏览

regression - MGCV P-Spline 平滑参数

我正在使用 MGCV 包和 gam() 函数将 P-Spline 拟合到一些数据。据我了解 gam() 选择平滑参数 - lambda - 通过最小化 GCV 出现在惩罚最小二乘函数中。

是否fit$sp返回通过最小化 GCV 选择的 lambda 值?

谢谢!

0 投票
1 回答
253 浏览

r - 如何获得R的散点图汽车公式和系数?

使用R的平滑和回归(线)模型的汽车包时,有没有办法获得方程和系数?

(需要 mgcv 包的 gamLine 参数)

谢谢

0 投票
2 回答
978 浏览

r - 对 R 中的重复案例使用权重(特别是二元响应的 gam)

我注意到许多 R 模型允许使用“权重”参数(例如 cart、loess、gam、...)。大多数帮助功能将其描述为数据的“先验权重”,但这实际上意味着什么?

我有许多重复案例和二进制响应的数据。我希望我可以使用“权重”来编码每个输入和响应组合发生的次数,但这似乎不起作用。我还尝试将响应作为成功的比例,以及对每个协变量组合的总试验权重,但这似乎也不起作用(至少对于 gam 而言)。我正在尝试对上面列出的所有模型类型执行此操作,但对于初学者,如何为 gam [mgcv 包] 执行此操作?

0 投票
0 回答
474 浏览

r - 使用 R 在 mgcv::gam 的外部节点内约束预测

我想使用Rgam中包中的函数拟合三次样条曲线mgcv。此外,我想将训练集之外的值(外部结点之外)约束为等于最近的结点值。也就是说,不应在训练数据范围之外进行模型预测。我知道我可以通过消除predict调用中的这些点然后将它们设置为训练数据的最小值和最大值来做到这一点。但是,是否有内置方法gam可以做到这一点(只是让它更干净一点?)

示例代码:

0 投票
1 回答
1737 浏览

r - 从具有非常大数据集的广义加法模型中编码预测区间

我有一个关于人、他们的位置以及他们是否彼此认识的小型数据集。它是包含 1000 人的数据集的子集。鉴于每个人都可以认识任何其他人,潜在链接的数量会增长到 n^2 以下。我想用小子集拟合模型,以获得作为距离函数的链接概率,以便我可以使用更广泛的数据集执行模拟。

我有两个问题:

  1. 我不确定如何从拟合的 GAM 对象创建预测区间。
  2. 使用后验模拟或使用R-sig-mixed 中的这种技术生成预测区间在计算上是令人望而却步的。

以下是我的问题的一个示例,使用 R-sig-mixed 的技术生成间隔。请注意,最后一步将抛出一个错误,即无法分配一个巨大的向量,除非你在一台非常令人印象深刻的机器上。

我想将链接建模为距离的函数。更多虚假数据:

现在,我对数据进行建模:

现在,我想将拟合模型应用于我的主数据集:

一些计时工具...

在我的机器上仅预测点估计需要 31 秒。现在尝试获取预测区间,首先获取设计矩阵......

这花了我 47 秒,并在我的电脑工作时冻结了它。

现在这里是获取我在 R-sig-mixed 上找到的预测区间的技术......

注意:以下代码将尝试分配大量内存并可能导致您的机器崩溃。

有没有别的办法???

0 投票
3 回答
14894 浏览

r - 是否可以使用 ggplot2 绘制 gam 拟合的平滑分量?

我正在使用包中的模型拟合模型gam并将mgcv结果存储在model其中,到目前为止,我一直在使用plot(model). 我最近开始使用 ggplot2 并喜欢它的输出。所以我想知道,是否可以使用 ggplot2 绘制这些图?

这是一个例子:

我对合身感兴趣s(x1, k=10)s(x2, k=20)不是合身。

部分答案:

我深入挖掘plot.gammgcv:::plot.mgcv.smooth构建了自己的函数,该函数从平滑分量中提取预测效果和标准误差。它不能处理所有选项和案例,plot.gam所以我只认为它是部分解决方案,但它对我来说效果很好。

这将返回一个带有平滑组件的“熔化”数据框,因此现在可以ggplot与上面的示例一起使用:

如果有人知道在一般情况下允许这样做的软件包,我将不胜感激。