【问题标题】:R: varying-coefficient GAMM models in mgcv - extracting 'by' variable coefficients?R:mgcv 中的变系数 GAMM 模型 - 提取“按”变量系数?
【发布时间】:2016-03-17 22:22:44
【问题描述】:

我正在通过使用by 设置在R 中使用'mgcv' 和连续'by' 变量创建一个可变系数GAMM。但是,我很难找到“by”变量影响的参数估计值。在此示例中,我们确定温度t 对单个鸡蛋的空间相关影响(即温度对单个鸡蛋的线性影响如何随空间变化):

require(mgcv)
require(gamair)
data(sole)
b = gam(eggs ~ s(la,lo) + s(la,lo, by = t), data = sole)

然后我们可以绘制s(la,lo, by = t) 与预测器t 的预测效果:

pred <- predict(b, type = "terms", se.fit =T)
by.variable.prediction <- pred[[1]][,2]
plot(x= sole$t, y = by.variable.prediction)

但是,我找不到每个采样位置的“by”变量t 的参数估计值的列表/函数。 summary()coef()predict() 不提供参数估计值。

任何帮助将不胜感激!

【问题讨论】:

  • 看看?mgcv::s,具体是by的描述。如果t 是数字,则t 的值乘以平滑。如果t 是一个因子,那么该因子的每个级别都有一个单独的平滑。如果你想自己提取平滑(我不推荐它......看不出它们有什么用),this might help
  • 感谢您的建议!我环顾四周mgcv::s,它并没有真正给你太多。使用数字 t 预测器,在我的例子中,我们假设一个线性关系谁的斜率可以在 la,lo 上变化,所以对于每个唯一的 la,lo,我们得到一个特定的斜率,对吗?然后我应该能够在某个地方找到那个斜坡的大小和方向,它只是难以捉摸:)。我不想提取平滑,只想使用这些斜率绘制变量系数项。
  • 对于每个lalo,都有一个平滑值乘以t。没有别的了。这就是文档所述。您可以将t 解释为平滑的la,lo 变量的“斜率”,或者您可以将la,lo 平滑解释为t 的斜率。
  • 平滑是通过乘法常数完成的 - 拟合一个附加参数来乘以平滑是没有意义的,因为任何这样的值都可以直接合并到平滑中。
  • 感谢您回复我!这就说得通了。你知道有什么资源可以绘制这些东西吗?我正在尝试类似于:onlinelibrary.wiley.com/doi/10.1890/09-1129.1/abstract

标签: r hierarchy gam mgcv


【解决方案1】:

所以变量t 的系数是t 等于1 的值,以经纬度为条件。因此,在每个纬度和经度上获得 t 的系数/参数估计值的一种方法是使用t=1 构建您自己的具有一系列纬度/经度组合的数据框,并在其上运行 predict.gam(而不是在正如您所做的那样,数据使用了拟合模型)。所以:

preddf <- expand.grid(list(la=seq(min(sole$la), max(sole$la), length.out=100),
                           lo=seq(min(sole$lo), max(sole$lo), length.out=100),
                           t=1))

preddf$parameter <- predict(b, preddf, type="response")

如果你想在空间上可视化这个系数,你可以用 ggplot2 绘制它。

library(ggplot2)

ggplot(preddf) + 
  geom_tile(aes(x=lo, y=la, fill=parameter))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2014-10-06
    • 2021-12-11
    • 2020-07-11
    • 2016-02-06
    • 2021-05-09
    • 1970-01-01
    相关资源
    最近更新 更多