【问题标题】:Error running binomial GAM in mgcv with proportional data使用比例数据在 mgcv 中运行二项式 GAM 时出错
【发布时间】:2020-07-30 21:08:40
【问题描述】:

我正在尝试对比例数据(0 到 1 之间的数字)运行 GAM。但我收到了警告

In eval(family$initialize) : non-integer #successes in a binomial glm!

基本上,我正在模拟温暖适应物种的出现次数与温暖和寒冷适应物种的总出现次数对海面温度的影响,并使用来自另一个天气系统 (NAO) 的数据作为随机效应,以及其他三个分类、参数, 变量。

m5 <- gam(prop ~ s(SST_mean) + s(NAO, bs="re") + WarmCold + Cycle6 + Region, 
          family=binomial, data=DAT_WC, method = "REML")

prop = 出现的比例,WarmCold = 物种是温暖适应还是寒冷适应,Cycle6 = 6 年时间段,Region = 4 个区域之一。下面是我的数据集示例

structure(list(WarmCold = structure(c(1L, 1L, 1L, 1L, 2L, 2L), .Label = c("Cold", 
"Warm"), class = "factor"), Season = structure(c(2L, 2L, 2L, 
2L, 2L, 2L), .Label = c("Autumn", "Spring", "Summer", "Winter"
), class = "factor"), Region = structure(c(1L, 2L, 3L, 4L, 1L, 
2L), .Label = c("OSPARII_N", "OSPARII_S", "OSPARIII_N", "OSPARIII_S"
), class = "factor"), Cycle6 = structure(c(1L, 1L, 1L, 1L, 1L, 
1L), .Label = c("1990-1995", "1996-2001", "2002-2007", "2008-2013", 
"2014-2019"), class = "factor"), WC.Strandings = c(18L, 10L, 
0L, 3L, 5L, 25L), SST_mean = c(7.4066298185553, 7.49153086390094, 
9.28247524767124, 10.8654859624361, 7.4066298185553, 7.49153086390094
), NAO = c(0.542222222222222, 0.542222222222222, 0.542222222222222, 
0.542222222222222, 0.542222222222222, 0.542222222222222), AMO = c(-0.119444444444444, 
-0.119444444444444, -0.119444444444444, -0.119444444444444, -0.119444444444444, 
-0.119444444444444), Total.Strandings = c(23, 35, 5, 49, 23, 
35), prop = c(0.782608695652174, 0.285714285714286, 0, 0.0612244897959184, 
0.217391304347826, 0.714285714285714)), row.names = c(NA, 6L), class = "data.frame")

从文献(Zuur,2009)看来,二项分布最适合用于比例数据。但这似乎不起作用。它正在运行,但给出了上述警告,并且输出没有意义。我在这里做错了什么?

【问题讨论】:

    标签: r data-modeling gam mgcv


    【解决方案1】:

    我还发现不是计算总数,而是使用带有 2 个感兴趣列的 cbind() 删除了警告,例如

    m8 <- gam(cbind(WC.Strandings, Total.Strandings) ~ s(x1) + x2, 
    family=binomial(link="logit"), data=DAT, method = "REML")
    

    【讨论】:

      【解决方案2】:

      这是一个警告,而不是错误,但它确实表明有些地方有些不正确;二项式分布支持非负整数值,因此在没有形成比例的样本总数的情况下传入非整数值是没有意义的。

      您可以使用 weights 参数执行此操作,在这种情况下,该参数应采用整数向量,其中包含计算比例的每个观察值的总数。

      或者,如果均值-方差关系适合您的数据,请考虑使用family = quasibinomial;变暖会消失,但是您将无法使用 AIC 和相关工具来预期真正的可能性。

      如果您的比例是真实比例,则考虑使用 family = betar 拟合 beta 回归模型,其中响应的条件分布支持单位区间 (0, 1) 上的实数值(但技术上不是 0 或 1 —如果响应中有 0 或 1 个值,mgcv 将添加或减去一个小数来调整数据)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多