【问题标题】:Changing the Y axis of default plot.gam graphs更改默认 plot.gam 图表的 Y 轴
【发布时间】:2013-04-02 13:02:00
【问题描述】:

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

shark.gamFINAL <- gam(ln.raw.CPUE...0.1 ~ Year + Month + 
                      s(Mean.Temp, bs = "cr") + s(Mean.Chl.a, bs = "cr") + 
                      s(Mean.Front.density, bs = "cr"), data=r, family=gaussian)

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

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

我不确定这个 y 轴的刻度代表什么?

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

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

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

【问题讨论】:

    标签: r mgcv


    【解决方案1】:

    轴是居中平滑所取的值。它是对该平滑函数的拟合值的贡献(在协变量的值上)。

    更改 y 轴标签很容易 - 将您想要的标签提供给 ylab 参数。这当然意味着,如果您想为每个图单独绘制 y 轴标签,则必须分别绘制每个平滑图。在这种情况下,还可以使用select 参数来绘制特定的平滑函数,例如:

    layout(matrix(1:4, ncol = 2, byrow = TRUE)
    plot(shark.gamFINAL, select = 1, ylab = "foo")
    plot(shark.gamFINAL, select = 2, ylab = "bar")
    plot(shark.gamFINAL, select = 3, ylab = "foobar")
    layout(1)
    

    我知道更改 y 轴比例的唯一方法是手动绘制绘图。这些图没有模型常数项以及其他参数项的贡献。如果您的模型只有一个截距和一个平滑,您可以在该协变量的范围内生成新数据,然后从模型中为这些新数据值生成predict,但使用type = "terms" 来获得平滑的贡献。然后绘制从predict 返回的值加上predict 返回的"constant" 属性 的值。

    在您的情况下,您需要在预测时控制其他变量。一种方法是将所有其他协变量设置为其平均值或典型值,但允许感兴趣的协变量在其范围内变化,如前所述。然后,将predict(shark.gamFINAL, newdata = NEW, type = "terms") 返回的矩阵的每一行中的值相加(其中NEW 是要预测的新数据框,改变一个协变量,但将其余的保持在某个典型值),再次添加常数。您必须依次为每个协变量重做此操作(即每个图一次),因为您需要将其他协变量保持在典型值。

    所有这些只是改变轴上的比例 - 模型中的任何平滑都不会与模型中的其他平滑或项交互,因此可能更容易将 y 轴视为对响应的影响每个平滑?

    【讨论】:

    • 非常感谢您的建议!实际上,我刚刚在其他地方找到了一些代码,这些代码暗示了您按照自己的方式设置其他协变量的方法。他们为此提供的示例代码是:testdata = data.frame(Income=seq(.4,1, length=100), Edu=mean(mod_gam2$model$Edu), Health=mean(mod_gam2$model$Health) ) fit = predict(mod_gam2, newdata=testdata, type='response', se=T) predicts = data.frame(testdata, fit) ggplot(aes(x=Income,y=fit), data=predicts) + geom_smooth (aes(ymin = fit - se.fit, ymax=fit + se.fit), fill='gray80', size=1,stat='identity')
    • 此代码在此网址的 p17 上:www3.nd.edu/~mclark19/learn/GAMS.pdf 这产生了类似于图 1 中的图。 8 on p17 of this link 但现在我想知道这是否代表预测变量对响应的影响或预测变量在平滑后的影响?大概趋势线的形状由黄土平滑决定默认值,而我在模型中使用了三次样条平滑,所以我必须更改它?提前谢谢你
    • 您因为没有完全理解绘图代码在做什么而使事情变得复杂。在 ggplot 中,geom 与统计数据相关联。 geom_smooth 中的默认统计信息是 stat_smooth。请注意,在他们的代码中,他们将geom_smooth 调用中的统计信息从默认的stat = "smooth" 更改为stat = "identity"。身份统计数据很特殊,因为它只是从 x 映射到 x,没有转换或汇总。作者使用它作为一种快速简便的方法来获得具有置信区间界限的收入部分效应的 ggplot 图。
    • 顺便说一下,我真的认为这些应该是 +/- (1.96 * se.fit) 大约 95% 的置信区间。无论如何,总而言之,您所看到的是拟合收入的三次样条响应的拟合值,条件是其他变量保持在样本均值。您没有看到拟合到部分拟合值的低平滑度。
    • 嗯,现在我明白了!所以恒等统计使用应用于 GAM 中预测变量的平滑类型。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-20
    • 2016-02-26
    • 1970-01-01
    相关资源
    最近更新 更多