我正在通过调用拟合 gamlss 模型:
model <- gamlss(formula = formula("y_variable ~ image_name + random(biological_source_name) - 1"),
sigma.formula = formula("~ biological_source_name - 1"),
family = "NBI",
data = na.omit(data))
但是,在尝试使用以下方法获取置信区间时出现错误broom::confint_tidy
:
confint_tidy(model)
消息是:
UseMethod("family") 中的错误: 没有适用于“家庭”的方法应用于“NULL”类的对象 另外:警告信息: 在 vcov.gamlss(object, robust = robust) 中: mu 公式中存在加法项。 线性项的标准误差可能不合适
但是,尝试使用时出现不同的错误broom::tidy
:
broom::tidy(model)
消息是:
data.frame(..., check.names = FALSE) 中的错误: 参数暗示不同的行数:0、73
但是,当我在没有术语的情况下拟合此模型sigma.formula
时,我能够获得置信区间。
model_no_sigma <- gamlss(formula = formula("y_variable ~ image_name + random(biological_source_name) - 1"),
family = "NBI",
data = na.omit(data))
broom::tidy(model_no_sigma) # Does produce CI output
可重现的例子
library("gamlss")
example_data <- rbind(
data.frame(
y = rnbinom(200, mu = 10, size = 1),
x = "var_1"
),
data.frame(
y = rnbinom(200, mu = 20, size = 10),
x = "var_2"
)
)
# No estimate sigma
model_1 <- gamlss(formula = formula("y ~ x - 1"),
data = example_data,
family = "NBI")
broom::tidy(model_1, conf.int = TRUE)
# Include intercept term for sigma
model_2 <- gamlss(formula = formula("y ~ x - 1"),
sigma.formula = formula("~ x"),
data = example_data,
family = "NBI")
broom::tidy(model_2, conf.int = TRUE)
# Remove intercept for sigma
model_3 <- gamlss(formula = formula("y ~ x - 1"),
sigma.formula = formula("~ x - 1"),
data = example_data,
family = "NBI")
broom::tidy(model_3, conf.int = TRUE)