当我尝试将我的数据集拟合到对数族时出现错误?
I get an error when I try to fit my dataset to a logarithmic family?
我有一个数据框:
Incidence <- data.frame(Inc. = c(0.4400, 0.5102, 0.2979, 0.2667, 0.0000, 0.0000,
0.0200, 0.0213, 0.0000, 0.0238, 0.0256, 0.0000,
0.0000, 0.1538, 0.0417, 0.0000, 0.0734, 0.0000,
0.0000, 0.0000, 0.1293, 0.0072, 0.0000, 0.0078,
0.0000, 0.0000, 0.0000, 0.0068, 0.0000, 0.0000,
0.0068),
Habitat = c("Crop", "Crop", "Crop", "Crop", "Edge", "Edge",
"Edge", "Edge", "Edge", "Edge", "Edge", "Edge",
"Edge", "Edge", "Edge", "Oakwood", "Oakwood",
"Oakwood", "Oakwood", "Oakwood", "Oakwood",
"Oakwood", "Oakwood", "Wasteland", "Wasteland",
"Wasteland", "Wasteland", "Wasteland", "Wasteland",
"Wasteland", "Wasteland"),
Season = c("Summer", "Summer", "Summer", "Summer", "Autumn",
"Autumn", "Autumn", "Autumn", "Spring", "Spring",
"Spring", "Spring", "Summer", "Summer", "Summer",
"Autumn", "Autumn", "Autumn", "Autumn", "Spring",
"Spring", "Spring", "Spring", "Autumn", "Autumn",
"Autumn", "Autumn", "Spring", "Spring", "Spring",
"Spring"),
Site = c("M1", "M2", "M3", "M4", "L1", "L2", "L3", "L4",
"L1", "L2", "L3", "L4", "L1", "L2", "L3", "Q1",
"Q2", "Q3", "Q4", "Q1", "Q2", "Q3", "Q4", "E1",
"E2", "E3", "E4", "E1", "E2", "E3", "E4"))
我已经使用包 rriskdistribution 检查了我的数据分布。这些结果表明我的数据服从对数分布。
我尝试使用对数族制作广义混合线性模型 (glmm):
GlM_habitats = lme4::glmer(Inc. ~ Habitat +(1|Season)+(1|Site), data = Incidence, family = Gamma(link = "inverse"))
获取下一个输出:
Error in model.frame.default(data = Incidence, drop.unused.levels = TRUE, : invalid type (list) for variable 'Inc.'
我读到这个错误是因为我的数据集中有零值。正如您在上面看到的,我的数据集没有任何零值。我该如何解决这个问题?
提前致谢。
一方面,您的错误告诉您 Incidence
的数据类型不正确。这并不奇怪,因为 Incidence
是您的 data.frame
,并且您可能想引用它的 列 ,称为 Inc.
。所以你需要把电话改成
GlM_habitats = lme4::glmer(Inc. ~ Habitat +(1|Season)+(1|Site), data = Incidence, family = Gamma(link = "inverse"))
这会给你一个不同的错误:
non-positive values not allowed for the 'Gamma' family
这表示您正在为 gamma link 函数建模的变量 (Inc.
) 中不允许使用零。伽马分布严格为正。零不能用它建模。
查看带有“许多”零值和其他正值的数据,我宁愿建议使用零 inflation 模型或障碍模型。
我有一个数据框:
Incidence <- data.frame(Inc. = c(0.4400, 0.5102, 0.2979, 0.2667, 0.0000, 0.0000,
0.0200, 0.0213, 0.0000, 0.0238, 0.0256, 0.0000,
0.0000, 0.1538, 0.0417, 0.0000, 0.0734, 0.0000,
0.0000, 0.0000, 0.1293, 0.0072, 0.0000, 0.0078,
0.0000, 0.0000, 0.0000, 0.0068, 0.0000, 0.0000,
0.0068),
Habitat = c("Crop", "Crop", "Crop", "Crop", "Edge", "Edge",
"Edge", "Edge", "Edge", "Edge", "Edge", "Edge",
"Edge", "Edge", "Edge", "Oakwood", "Oakwood",
"Oakwood", "Oakwood", "Oakwood", "Oakwood",
"Oakwood", "Oakwood", "Wasteland", "Wasteland",
"Wasteland", "Wasteland", "Wasteland", "Wasteland",
"Wasteland", "Wasteland"),
Season = c("Summer", "Summer", "Summer", "Summer", "Autumn",
"Autumn", "Autumn", "Autumn", "Spring", "Spring",
"Spring", "Spring", "Summer", "Summer", "Summer",
"Autumn", "Autumn", "Autumn", "Autumn", "Spring",
"Spring", "Spring", "Spring", "Autumn", "Autumn",
"Autumn", "Autumn", "Spring", "Spring", "Spring",
"Spring"),
Site = c("M1", "M2", "M3", "M4", "L1", "L2", "L3", "L4",
"L1", "L2", "L3", "L4", "L1", "L2", "L3", "Q1",
"Q2", "Q3", "Q4", "Q1", "Q2", "Q3", "Q4", "E1",
"E2", "E3", "E4", "E1", "E2", "E3", "E4"))
我已经使用包 rriskdistribution 检查了我的数据分布。这些结果表明我的数据服从对数分布。
我尝试使用对数族制作广义混合线性模型 (glmm):
GlM_habitats = lme4::glmer(Inc. ~ Habitat +(1|Season)+(1|Site), data = Incidence, family = Gamma(link = "inverse"))
获取下一个输出:
Error in model.frame.default(data = Incidence, drop.unused.levels = TRUE, : invalid type (list) for variable 'Inc.'
我读到这个错误是因为我的数据集中有零值。正如您在上面看到的,我的数据集没有任何零值。我该如何解决这个问题?
提前致谢。
一方面,您的错误告诉您 Incidence
的数据类型不正确。这并不奇怪,因为 Incidence
是您的 data.frame
,并且您可能想引用它的 列 ,称为 Inc.
。所以你需要把电话改成
GlM_habitats = lme4::glmer(Inc. ~ Habitat +(1|Season)+(1|Site), data = Incidence, family = Gamma(link = "inverse"))
这会给你一个不同的错误:
non-positive values not allowed for the 'Gamma' family
这表示您正在为 gamma link 函数建模的变量 (Inc.
) 中不允许使用零。伽马分布严格为正。零不能用它建模。
查看带有“许多”零值和其他正值的数据,我宁愿建议使用零 inflation 模型或障碍模型。