有没有办法通过在 GLMM 中增加权重来处理缺失的观察?
我想知道如何构建一个包含一些观察丢失的计数数据的 GLMM 模型。对我来说,我用黄色的粘板来诱捕瓢虫,它的数据类型是计数。另一个变量是1km半径内的草地面积比率。ID是黄色粘板的ID。每个棉田放 3 孔板。SITES 是不同的棉田。区域是几个站点属于某个区域。我想建立 GLMM 模型:
如您所见,我可以创建如下 GLMM 模型:
library(lme4)
library(glmmTMB)
library(mgcv)
m1 = glmer(ladybeetles ~ Grass.perc + (1|Region\SITE) , data=df, family="poisson" ) #nbinomial tried
m2 = glmmTMB(ladybeetles ~ Grass.perc + (1|Region\SITE) , data=df, family="poisson" ) #nbinomial tried
但是,我不想那样创建它,因为黄色的木板会限制数量的巨大差异。我想对因子变量进行分组并对黄板的整数值求和。因此,我可以这样做:
df =
df %>% group_by(Region,SITE) %>%
summarise(Ladybeetles = sum(Ladybeetles),
Grass.perc = mean(Grass.perc),
SampleNum = n()
) # sum ladybeetles of all yellow boards at each field
m1 = glmer(ladybeetles ~ Grass.perc + (1|Region) , data=df, family="poisson" ) #nbinomial tried
m2 = glmmTMB(ladybeetles ~ Grass.perc + (1|Region) , data=df, family="poisson" ) #nbinomial tried
大多数板在许多领域都是完整的。但是
site3,site4,site5
有问题:他们由于风或农民的行为而失去了一块板(标记红色填充)。那么我不能像那样总结瓢虫。有人可以建议您可以分组并获得平均值并构建具有高斯或伽马误差分布族的 GLMM 模型。但从个人角度来看,计数类型相关的泊松或负二项分布对我来说支持另一种选择,因为我有很多像这样的其他数据,这些数据经常违反假设。
我想知道是否有任何模型结构对样本数具有权重来构建lme4
或glmmTMB
封装 GLMM 模型,以便在发生特殊情况(如观察丢失)时,它允许我仍然使用泊松或负二项分布函数。所以我添加weight=SampleNum
了,但我不知道该weight
方法是否正确。希望有人可以帮助我。
glmer(ladybeetles ~ Grass.perc + (1|Region) ,
weight = SampleNum , # SampleNum is sample number I can group and create
data=df, family="poisson" )
glmmTMB(ladybeetles ~ Grass.perc + (1|Region) ,
weight = SampleNum, # SampleNum is sample number I can group and create
data=df, family="poisson" )
添加
weight = SampleNum
这是我的数据。
df =
structure(list(Region = c("ITI", "ITI", "ITI", "ITI", "ITI",
"ITI", "ITI", "ITI", "ITI", "ITI", "ITI", "ITI", "ITI", "ITI",
"ITI", "KZ", "KZ", "KZ", "KZ", "KZ", "KZ", "KZ", "KZ", "KZ",
"KZ", "KZ", "KZ", "BST", "BST", "BST", "BST", "BST", "BST", "BST",
"BST", "BST", "BST", "BST", "BST"), SITE = c("site1", "site1",
"site1", "site2", "site2", "site2", "site3", "site3", "site4",
"site4", "site5", "site5", "site6", "site6", "site6", "site7",
"site7", "site7", "site8", "site8", "site8", "site9", "site9",
"site9", "site10", "site10", "site10", "site11", "site11", "site11",
"site12", "site12", "site12", "site13", "site13", "site13", "site14",
"site14", "site14"), ID = c("ID1", "ID2", "ID3", "ID1", "ID2",
"ID3", "ID1", "ID2", "ID1", "ID3", "ID2", "ID3", "ID1", "ID2",
"ID3", "ID1", "ID2", "ID3", "ID1", "ID2", "ID3", "ID1", "ID2",
"ID3", "ID1", "ID2", "ID3", "ID1", "ID2", "ID3", "ID1", "ID2",
"ID3", "ID1", "ID2", "ID3", "ID1", "ID2", "ID3"), Ladybeetles = c(0L,
1L, 7L, 7L, 2L, 8L, 4L, 0L, 3L, 3L, 9L, 10L, 22L, 10L, 15L, 0L,
7L, 1L, 6L, 0L, 0L, 5L, 2L, 2L, 12L, 5L, 5L, 7L, 9L, 6L, 4L,
5L, 4L, 11L, 13L, 27L, 8L, 1L, 7L), Grass.perc = c(5L, 5L, 5L,
13L, 13L, 13L, 4L, 4L, 21L, 21L, 13L, 13L, 5L, 5L, 5L, 2L, 2L,
2L, 1L, 1L, 1L, 3L, 3L, 3L, 3L, 3L, 3L, 10L, 10L, 10L, 11L, 11L,
11L, 15L, 15L, 15L, 19L, 19L, 19L)), class = "data.frame", row.names = c(NA,
-39L))