问题标签 [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 投票
0 回答
310 浏览

r - 将样条曲线拟合到凌乱的曲线

我权衡了点不完全平滑的模拟生成的曲线。我想拟合样条曲线并计算最大值。由于点的锯齿状特性,尤其是在峰值附近,将样条曲线拟合到整个曲线是没有意义的。相反,我想丢弃曲线的大多数(不是全部)无信息部分(其中点不是均匀地增加/减少),以便我可以拟合更好的样条曲线。

这里有 3 条示例曲线。

这是我的spline功能。

任何人都可以提出一种算法或想法,使我能够专注于曲线中点变化更多的部分,并仅将样条拟合到那些(并丢弃峰值两侧没有贡献的其他点更多信息)?

0 投票
1 回答
7939 浏览

r - 提取 GAM 的估计值

我对 R 相当陌生,目前正在阅读一本书“Generalized Additive Models”,Wood (2006) 对 R 的介绍,并进行了一些练习,特别是关于空气污染和死亡的部分,这是我感兴趣的领域。使用 mgcv 包我运行以下模型。

如何提取 pm10median 和 x 的 95% CI 的效果估计值并将输出导出到 CSV 或任何其他选项?

0 投票
1 回答
143 浏览

r - 在 T-SQL 中实现 GAM

我使用 R 构建我的所有模型,但利用 T-SQL 对所有数据集进行评分,因为我评分的数据集通常是 20+ 百万个观察值。我试图弄清楚如何从mgcv包中获取 GAM 对象并在 T-SQL 中对其进行编码,就像我做逻辑和线性回归模型一样。对于给定的 gam 对象,我相信我需要知道的事情是每个预测器使用了哪种类型的平滑,每个样条曲线的结是什么等。任何帮助将不胜感激。

0 投票
1 回答
3258 浏览

r - 从 GAM 平滑对象确定导数

我有一个非常简单的时间序列数据集,由单个变量(“AVERAGE”)的年平均值组成。我希望研究时间序列的“趋势”分量的变化率(一阶导数)和加速度(二阶导数)以及相关的标准误差。我使用MGCV的GAM和PREDICT函数得到了“趋势”,简单如下:

我已经通过 2 种不同的方法确定了导数,应用了高自由度三次平滑样条曲线,并通过一阶和二阶差分(轻微平滑)和引导来近似误差,两者都产生了可比较的结果。

我注意到“gam.fit3”函数有助于确定最多二阶导数,但不直接调用。我还注意到使用类型为“lpmatrix”的“predict.gam”有助于平滑的导数。我想直接使用“GAM”函数来计算一阶和二阶导数,但我没有足够的技能来计算或提取这些导数。我试图在“Predict.gam”帮助页面末尾为一个变量重新配置 Wood 的示例,但没有成功。任何能让我朝着正确方向前进的帮助都会非常棒。谢谢菲尔。

0 投票
1 回答
1036 浏览

r - 如何使用 r 中 mgcv 包中的 vis.gam() 函数设置 x 和 y 轴的限制?

我正在使用 vis.gam() 绘制以下模型的结果:

制作情节的代码如下:

不幸的是,它产生的预测值超出了变量“maternal_age”和“birth_year”的数据范围。关于如何限制图中变量的预测值范围的任何建议view

非常感谢,

安东尼奥·佩德罗。

0 投票
2 回答
1001 浏览

r - R 包 mgcv 是否存在已知的兼容性问题?是否有通用的兼容性规则?

我使用 R 版本 2.15.1 (2012-06-22) 和 mgcv 版本 1.7-22

我在 R 中加载了以下一组包:

碰巧我不能运行一个简单的模型(我省略了代码)。甚至从帮助页面中获取的示例代码:

给出一个错误:

请注意,如果我只是加载包 mgcv 然后立即使用示例代码,一切正常。如果我只是加载所有包并运行示例代码,它也可以工作。如果我只是行不通

  1. 加载所有包
  2. 做一些文件读取、sqldf 语句、ts 操作和一些来自包预测的模型。
  3. 如果我然后应用 GAM,它就不再起作用了。

显然,一般环境中的变量定义会破坏包的功能。

是否有任何已知问题?如果我加载各种包,是否有必须遵守的一般规则?我可以编写“干扰”包 mgcv 的代码吗?

0 投票
0 回答
332 浏览

r - 如何在 R 中实现这个模型选择算法?

我有一个复杂的半参数模型,我正在 R 中拟合。我从一个基于理论的模型开始。它有很多交互术语。我想把它筛选下来:一个一个地删除每个交互项或未交互的主效应,检查 AIC,并保留给我最低 AIC 的模型。然后我想在保留的模型上重复这个过程。

这是一个简单的例子:

df AIC

米1 14.53435 1626.611

平方米 12.52501 1622.635

立方米 12.54566 1622.615

米4 12.52652 1622.633

m5 13.14108 1620.759

米6 10.99684 1621.156

米7 10.98136 1622.229

m5是最好的

df AIC

m5 13.363029 1621.183

m5.1 9.671656 1617.641

m5.2 9.730047 1617.549

m5.3 9.706424 1617.569

m5.4 9.857504 1620.028

5.2是最好的

...等等。接下来我将在 m5.2 中尝试每个交互项或非交互主效应。问题是我怎样才能自动化呢?从一个模型(在我的例子中是 m1)开始,并让 R 在运行这个算法之后给我最好的模型,直到根据这个算法不再有任何“更好”的模型?

现在我可以手动完成,但随着时间的推移添加数据,模型选择可能会改变。

提前感谢您的任何提示。

0 投票
0 回答
379 浏览

r - 奇怪的错误:PredictMat(object$smooth[[k]], data) 中的错误:,“by”变量必须与平滑参数具有相同的维度

我在 mgcv 中遇到错误,我不知道它来自哪里。设置如下:我有一个名为“MI”的拟合 GAM 对象和一个“预测数据”向量(具有预测变量的默认值)。我通过以下函数将其输入 predict.gam(object, newdata = whatever) :

然后我做出如下预测:

其中“makepHplot”是我制作的不同功能。

这工作了相当长的一段时间。然后我在模型中添加了一些数据并稍微更改了规范。现在我收到此错误消息:

我从来没有收到过旧型号的这条消息(现在仍然没有)。
怎么了?我不知道错误消息是什么意思,我不知道新的拟合模型是什么导致了这个问题。键入“PredictMat”对我没有帮助,谷歌也没有。问题不在于所有变量都不在预测数据中。

将不胜感激这里的任何帮助。

(为在 R-help 上的交叉发帖道歉)

还值得注意的是,我在输入缺失数据后多次拟合此模型,然后使用鲁宾规则组合输出。但这不应该是相关的——我使用任何一个组成拟合模型,而不是组合版本都会得到同样的错误

已解决的问题: 问题在于“triid”是一个因子变量,其水平不包括“1”。当我将 preddat 中的 triid 设置为其他内容时,它可以工作。我设置模型的方式,将随机效应与虚拟 =0 交互,这个变量没有效果,但 mgcv 仍然需要它来进行预测。

0 投票
1 回答
11439 浏览

r - 如何从 GAM 中提取拟合样条曲线(`mgcv::gam`)

我正在使用 GAM 对逻辑回归中的时间趋势进行建模。但是我想从中提取拟合的样条曲线以将其添加到另一个模型中,该模型无法在 GAM 或 GAMM 中进行拟合。

因此我有两个问题:

  1. 如何随着时间的推移拟合平滑器,以便我强制一个结位于特定位置,同时让模型找到其他结?

  2. 如何从拟合的 GAM 中提取矩阵,以便可以将其用作不同模型的插补?

我运行的模型类型如下:

我已经阅读了 GAM 的大量文档,但我仍然不确定。任何建议都非常感谢。

0 投票
1 回答
834 浏览

r - 从 mgcv 中的 vis.gam 更改等高线图中的单位

我正在使用变量的对数拟合模型,并且我想根据转换后的变量来呈现我的结果。这是一个简单的例子:

我想生成相同的图表,但基于 exp(y) 而不是 y。

任何想法如何做到这一点?提前致谢。