【问题标题】:If I use 'quasipoisson' as family to GLM on non-integer data, can it be treated as poisson?如果我在非整数数据上使用“准泊松”作为 GLM 的族,它可以被视为泊松吗?
【发布时间】:2022-01-10 06:00:45
【问题描述】:

我正在尝试基于包 GLMsData 中的数据构建模型

library(GLMsData)
data(lime)

我的模型是,

m <- glm(Foliage ~ DBH + Age + Origin, data = lime, 
            family = poisson (link = "log"))

这里,Foliage 是非整数,所以它给了我 inf AIC。 当我使用 'quasipoisson' 作为族时,它给出了 AIC 'NA' 和 0.8 左右的过度分散参数。

  1. 我可以将其视为泊松吗?
  2. 如果不是,最好使用什么家庭链接?

【问题讨论】:

  • 这不是一个整数响应,而且你很适合作为准泊松......你为什么认为你可以直接跳到泊松?
  • 为什么你的第二个问题是关于链接而不是家庭?我们没有任何信息可以指导哪个链接是合适的。
  • 另外,我确定这并不明显,但我并不是想成为一个混蛋,但预计会对 SO 进行一些研究,您的问题对我来说没有意义。
  • 你好@Dason,我是初学者,很抱歉我的愚蠢问题。我的响应变量包含一些权重(以千克为单位)。密度图看起来像泊松,这就是我假设的原因。 (我知道泊松只取正整数)
  • 如果您的数据的描述性图看起来像泊松,但观察结果不是整数,那么听起来您正在处理一个可以很好地建模为伽马分布的连续分布。您可以使用半参数最小二乘模型而不指定任何概率分布。 Here 是一个相关线程。

标签: r regression generalized-linear-model predictive-models


【解决方案1】:

数据(以千克为单位的干叶生物量)不是计数数据,因此您不应使用泊松或准泊松响应。

首先要尝试的通常是常规线性模型:

m1 <- lm(Foliage ~ DBH+Age+Origin, data = lime)
library(performance)
check_model(m1)

这太糟糕了(如果第一行 [非线性和异方差] 很糟糕,你甚至不需要查看其余部分):


接下来尝试对连续数据进行(例如,树叶的公斤数)是对响应变量进行对数转换:

m2 <- update(m1, log(Foliage) ~ .)
check_model(m2)

这看起来好多更好。似乎仍然有轻微的非线性和异方差性证据,但还不错。



一种可能的解决方案是查看交互是否可以解释任何模式。探索残差中的模式:

library(broom)
aa <- augment(m2)
library(ggplot2)
ggplot(aa, aes(DBH,.std.resid, colour = Origin)) +
    geom_point() + 
    geom_smooth() + 
    facet_wrap(~cut_number(lime$Age, 4))

残差的下降在幼树/小树的起源中始终如一地发生,这让我认为这实际上是一种真实的模式。你会怎么做取决于你需要一个准确的模型有多严重:例如,你可以从你的模型中排除年轻/小树,或者拟合一个广义的加法模型,或者一个非线性模型......

正如 cmets 和 @GordonSmyth 的回答中提到的,您还可以使用 Gamma GLM(可能带有日志链接),但结果可能与对数线性模型非常相似......这是

m3  <- glm(formula = Foliage ~ DBH + Age + Origin,
    family = Gamma(link = "log"), 
    data = lime)

计算对数线性模型 (accounting for the transformation of the response variable) 和 Gamma 模型的 AIC:

AIC(m2) + sum(2*log(lime$Foliage)) - AIC(m3)
## [1] 15.43352

表明 Gamma 模型确实更好(AIC 越低越好;delta-AIC > 10 差异很大)。

rr <- purrr::map_dfr(list(loglin = m2, Gamma = m3), augment, .id = "model")
ggplot(rr, aes(.fitted, .std.resid, colour = model)) + 
    geom_point() + geom_smooth()

但是,残差中仍然存在相同的非线性模式(对于 Gamma 拟合可能不太明显)。

最后,在模型中添加一个平方 DBH 项 (m4 &lt;- update(m3, . ~ . + I(DBH^2)) 似乎有很大帮助...

【讨论】:

    【解决方案2】:

    GLMsData 包包含在 Peter Dunn 和我本人(Dunn 和 Smyth,2018 年)的书中用作示例的数据集。

    本书中使用石灰数据集作为伽马回归的示例。主模型使用以Foliage 为响应的对数链接和一个线性模型,该模型包括log(DPH) 的线性回归,用于Origin 的每个级别。这本书包含了一个仔细的分析,以表明伽马均值-方差关系适用于这些数据。

    当然,这些数据不适合泊松或准泊松回归。

    参考

    邓恩 PK,史密斯 GK(2018 年)。 在 R 中带有示例的广义线性模型。施普林格,纽约,纽约。 https://www.amazon.com/Generalized-Linear-Examples-Springer-Statistics/dp/1441901175

    【讨论】:

    • 您对我在回答中显示的残差模式有什么想法吗?
    • 我们使用了glm( Foliage ~ Origin * log(DBH), family=Gamma(link="log")),并没有在残差中看到任何模式。
    • 谢谢。到目前为止,这绝对比任何模型都好 - 但是 - 具有相同形式的对数线性模型看起来更好(就残差分布和(变换校正)AIC ...) DBH 和树叶也具有理论意义(作为异速生长关系)......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多