如何对 R 中的广义线性模型执行 link 优度检验?

How do you perform a goodness of link test for a generalized linear model in R?

我正致力于在 R 中拟合广义线性模型(使用 glm())来处理一些具有两个完全阶乘预测变量的数据。我相信 gamma 系列是正确的错误分布,但不确定要使用哪个 link 函数,所以我想测试所有可能的 link 函数。当然,我可以通过为每个 link 函数创建一个单独的模型然后比较偏差来手动执行此操作,但我想有一个 R 函数可以执行此操作并编译结果。我在 CRAN、SO、交叉验证和网络上进行了搜索——我找到的最接近的函数是 clm2,但我不相信我想要一个累积的 link 模型——基于我对 clm 的理解是。

我现在的模型是这样的:

CO2_med_glm_alf_gamma <- glm(flux_median_mod_CO2~PercentH2OGrav+
                           I(PercentH2OGrav^2)+Min_Dist+
                           I(Min_Dist^2)+PercentH2OGrav*Min_Dist, 
                  data = NC_alf_DF,
                  family=Gamma(link="inverse"))

如何将此模型编码为 R 函数以执行此类 'goodness-of-link' 测试?

(就此类测试的统计有效性而言,this discussion 以及与统计数据的讨论 post-doc 让我相信比较 AIC 或偏差是有效的除了具有不同的 link 函数外其他都相同的广义线性模型之间)

这不是 "all possible links",它是针对 link 中指定的 class 进行测试,但是 Pregibon 有一个 link 优度测试,即通过

LDdiag package. It's not on CRAN, but you can install it from the archives中实施
devtools::install_version("LDdiag","0.1")

给出的例子(不是那么令人兴奋)是

quine$Days <- ifelse(quine$Days==0, 1, quine$Days)
ex <- glm(Days ~ ., family = Gamma(link="log"), data = quine)
pregibon(ex)

link 函数的 pregibon 系列在 glmx package 中实现。正如 Achim Zeleis 在评论中指出的那样,该包提供了各种参数 link 函数,并支持基于此类参数 link 的一般估计和推理(或更一般的参数族)。要查看如何将其用于各种 link 评估的优点,请参阅 example("WECO", package = "glmx")。这复制了 Koenker 和 Yoon 的两篇论文中的分析(见下文)。

This example 也可能有用。

我了解到 dredge 函数(MuMIn package) can be used to perform goodness-of-link tests on glms, lms, etc. More generally it is a model selection function but allows for a good deal of customization. In this case, you can use the varying option to compare models fit with different link functions. See the Beetle 示例,他们工作的细节。