manyglm(软件包 mvabund)在使用 family = Gamma(link = log) 时出现错误

manyglm (package mvabund) giving error when using family = Gamma(link = log)

提问人:NJ Oram 提问时间:9/28/2023 更新时间:9/29/2023 访问量:37

问:

我正在尝试测试我的三个实验因素(见example_data1.csv)是否影响多变量数据集(在同一实验单元上测量的 5 个变量,见 example_data2.csv),使用 mvabund 包中的 manyglm 函数。所有数据都是正数、连续的数值变量。解释变量是因子。以下是示例数据集: (https://github.com/dwarton/mvabund/issues/117)

我正在运行的代码是:

data1<-read.csv("example_data1.csv")%>%
column_to_rownames(var = "obs")%>%
as.matrix()
data2<-read.csv("example_data2.csv")

manyglm

set.seed(210)
mod1 <- manyglm(data1 ~ factor1 * factor2 * factor3,
family=Gamma(link = "log"),
data=data2
)

使用 family = Gamma,我收到以下错误:

Error in if (any(z$var.est == 0)) { :
missing value where TRUE/FALSE needed

所有单变量关系都工作正常:

model<-glm(variable1~ factor1 x factor2 x factor3, family=Gamma(link = "log"),data = data).

我认为这可能与此处详述的估计有关:https://github.com/dwarton/mvabund/issues/91

我想知道是否有人遇到过类似的问题以及他们是如何解决的。

其他分布(负二项式、占位)可以工作/运行,但它们不是我的数据的正确分布。我还尝试过 family = “tweedie”(这可能适合我的数据),因为这应该根据此处的 mvabund 文档工作:https://environmentalcomputing.net/statistics/glms/glm-2/,但根据 CRAN 文档不支持它。

我还单独尝试了每个因素的 manyglm() 模型,似乎因素 2 导致了这个问题。

r 多变量检验 伽马

评论


答:

0赞 Sascha 9/29/2023 #1

我不熟悉 mvabund 或 manyglm,因此您必须检查这是否在做您想要的:

# Load packages
library(tidyr)
library(mvabund)


# Import data
data1<-read.csv("example_data1.csv") %>% 
  select(-obs)
data2<-read.csv("example_data2.csv")


# Process data
data1 <- mvabund(data1)
is.mvabund(data1)
data2 <- as.data.frame(data2)

#Merge 
data <- merge(data1, data2, by.x = "row.names", by.y = "row.names")


# Fit a multivariate model using mvabund with multiple response variables
set.seed(210)
mod1 <- manyglm(data1 ~ factor1 * factor2 * factor3, 
                family = Gamma(link = "log"),
                data = data
)


# See Model
summary(mod1)
plot(mod1)

评论

0赞 NJ Oram 10/25/2023
不 - 不幸的是,这不是我需要的,因为问题仍然存在,即估计失败:如果中的错误 (any(z$var.est == 0)) { :需要 TRUE/FALSE 的缺失值