R语言 manyglm(package mvabund)在使用family = Gamma(link = log)时出错

46qrfjad  于 2023-10-13  发布在  其他
关注(0)|答案(1)|浏览(132)

我尝试使用mvabund包中的manyglm函数来测试我的三个实验因子(参见example_data1.csv)是否会影响多变量数据集(在同一实验单元上测量的5个变量,参见example_data2.csv)。所有数据都是正的、连续的数值变量。解释变量是因子。以下是示例数据集:(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
我想知道是否有人遇到过类似的问题,他们是如何解决的。
其他分布(负二项分布,possion分布)工作/运行,但它们不是我的数据的正确分布。我还尝试了family =“tweedie”(这可能适合我的数据),因为根据mvabund文档,这应该可以工作:https://environmentalcomputing.net/statistics/glms/glm-2/,但根据CRAN文档不支持。
我还尝试了manyglm()模型,每个因素都是单独的,似乎是因素2导致了这个问题。

lxkprmvk

lxkprmvk1#

我不熟悉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)

相关问题