R语言 在二项式(glm)模型中使用比例作为偏移

aydmsdu9  于 2023-01-03  发布在  其他
关注(0)|答案(1)|浏览(164)

我试图测试一种处理对候鸟种群中幼鸟比例的影响。每天对这些鸟进行计数,并确定它们是幼鸟还是成年鸟,但处理只是每两天进行一次。不处理的日子被用作对照。问题是,种群中幼鸟的比例预计不仅会受到处理的影响,而且还受到迁徙物候学的影响。例如,在给定的一天,可能有更多的幼鱼迁徙到研究区域,因此,这一点,而不仅仅是处理,影响了幼鱼在种群中的比例。为了解决这个问题,我还检查了附近一个没有受到处理影响的地点每天的青少年比例(即对照地点)。因此,我有两种类型的对照。为了分析数据,我想到了使用二项式GLMM,以青少年的比例作为感兴趣的变量,作为范畴的处理(有或没有处理)解释变量和作为随机截距因子的日期,我使用权重来说明每天不同的鸡只数量,但我不确定如何输入来自对照中心的数据。从我所读到的,它应该用作偏移,但我不知 prop 体是怎么回事。
链接功能是否会受到它(ctrl. site的青少年属性)是一个比例的事实的影响?在交互中使用ctrl. site的青少年属性比使用offset(即~ Treatment* www.example.com)更好吗Juv.prop.cntrl.site?
这是我目前拥有的模型,但我不确定它是否有意义,特别是如果偏移设置正确:

glm(Juv.prop.exp.site ~ Treatment + Day, offset = Juv.prop.cntrl.site, weights = Tot.birds.exp.site, data = df, family = Binomial)

其中Juv.prop.exp.site是青少年的数量除以总在这个网站(青少年+成年人)看到这里的数据:DATA(一天从11开始,因为在前10天内未观察到该物种的鸟类)
提前谢谢你,新年快乐!

wmomyfyw

wmomyfyw1#

通常情况下,我会建议将有关统计分析的问题迁移到CrossValidated,在那里您将获得纯统计问题的更好答案。然而,在您的情况下,在分析之前将数据重塑为整齐的格式会有很大帮助,这更像是一个编程问题。
基本上,每天、地点、处理、青少年数量和成年数量各需要一列,我假设在您的数据中,“V”是处理,“X”是对照。

library(tidyverse)

df <- data %>%
  select(1, 2, 4, 5, 8, 9) %>%
  rename_all(~gsub("\\.site", "_site", .x)) %>%
  pivot_longer(1:4, names_sep = "\\.", names_to = c(".value", "Site")) %>%
  mutate(Treatment = ifelse(Site == "Exp_site", Treatment, "X")) %>%
  mutate(Treatment = ifelse(Treatment == "V", "Treatment", "Control")) %>%
  mutate(Site = ifelse(Site == "Exp_site", "Experimental", "Control")) %>%
  rename(Juveniles = Juv, Adults = Ad) %>%
  select(2, 1, 3:5)

这使得你的数据看起来像这样,在我看来,这更容易分析(和推理):

df
#> # A tibble: 100 x 5
#>      Day Treatment Site         Juveniles Adults
#>    <int> <chr>     <chr>            <int>  <int>
#>  1    11 Control   Experimental         1      0
#>  2    11 Control   Control              0      0
#>  3    12 Treatment Experimental         2      1
#>  4    12 Control   Control              1      0
#>  5    13 Control   Experimental         2      0
#>  6    13 Control   Control              1      1
#>  7    14 Treatment Experimental         6      3
#>  8    14 Control   Control              4      2
#>  9    15 Control   Experimental         6      4
#> 10    15 Control   Control              1      2
#> # ... with 90 more rows
#> # i Use `print(n = ...)` to see more rows

然后,您可以像这样执行二项式glm,其中TreatmentSite作为自变量。

model <- glm(cbind(Juveniles, Adults) ~ Treatment + Site, 
             data = df, family = binomial)

summary(model)
#> Call:
#> glm(formula = cbind(Juveniles, Adults) ~ Treatment + Site, family = binomial, 
#>     data = df)
#> 
#> Deviance Residuals: 
#>     Min       1Q   Median       3Q      Max  
#> -3.4652  -0.6971   0.0000   0.7895   2.9541  
#> 
#> Coefficients:
#>                    Estimate Std. Error z value Pr(>|z|)    
#> (Intercept)          1.0059     0.1461   6.886 5.74e-12 ***
#> TreatmentTreatment   0.3012     0.2877   1.047    0.295    
#> SiteExperimental    -0.1632     0.2598  -0.628    0.530    
#> ---
#> Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
#> 
#> (Dispersion parameter for binomial family taken to be 1)
#> 
#>     Null deviance: 118.16  on 88  degrees of freedom
#> Residual deviance: 117.07  on 86  degrees of freedom
#> AIC: 244.13
#> 
#> Number of Fisher Scoring iterations: 4

相关问题