【发布时间】:2020-06-13 03:59:33
【问题描述】:
我模拟了各种大小和“形状”的对数伽马数据,然后将伽马和对数正态模型拟合到这些模拟数据。
这是我的相关代码:
gm_glog <- function(size.i, alpha.i) {
x_i <- runif(size.i, 0, 1) # draw a sample of size 'size'
y.true <- exp(b_0 + b_1*x_i) # produce log gamma data
y_i <- rgamma(size.i, rate = alpha.i/y.true, shape = alpha.i) # random gamma sample
# Gamma Model
log_gamma_model <- glm(y_i ~ x_i, family = Gamma(link = "log"),
control = glm.control(maxit=100, trace = TRUE),
start = c(0.1, 0.2))
log_gamma_summ <- summary(log_gamma_model)
# Lognormal Model
log_norm_model <- glm(y_i ~ x_i, family = gaussian(link = "log"),
control = glm.control(maxit=500, trace = TRUE),
start = c(0.1, 0.2))
log_norm_summ <- summary(log_norm_model)
# DATA FRAME BUILD
data.frame(size = size.i,
alpha = alpha.i,
gamma_mod_int = log_gamma_summ$coefficients["(Intercept)", "Estimate"],
gamma_mod_est = log_gamma_summ$coefficients["x_i", "Estimate"],
gamma_mod_aic = log_gamma_summ$aic,
gamma_mod_dev = log_gamma_summ$deviance.resid[length(log_gamma_summ$deviance.resid)],
gamma_mod_shape = MASS::gamma.shape(log_gamma_model)$alpha,
norm_mod_int = log_norm_summ$coefficients["(Intercept)", "Estimate"],
norm_mod_est = log_norm_summ$coefficients["x_i", "Estimate"],
norm_mod_aic = log_norm_summ$aic,
norm_mod_dev = log_norm_summ$deviance.resid[length(log_norm_summ$deviance.resid)]
)
}
我现在的问题是我想在一个表中生成这些回归结果的并排比较,其中我的设计矩阵的每一行 [1] 对应于函数输出的第一行,并且再次为第 [2] 行,一直到第 [40] 行。
理想情况下,它看起来像
尺寸 |阿尔法 |总结伽玛glm |摘要对数正态glm
总共 40 行,每个大小和 alpha 组合一个,以便最容易地解释结果。
基本上,我只想合并 design.matrix 和摘要。
不幸的是,生成 glm 摘要的数据框一直很困难,我无法找到一种方法来逐行合并这些结果,就像它想要的那样。
我已经看到,使用 lapply、tidy 和 Glance 为我提供了我想要的每个摘要的所有信息,但是这两个都给我留下了一个数据框列表,并且逐行组合它们也躲过了我。
如果我要使用这种方法,我仍然想将 lapply(model, tidy) 的第 [1] 行与 lapply(model,glance) 的第 [1] 行、lapply(model, tidy) 与 lapply(model,glance) 的行 [2] 等,即使每个列表的行都是不同维度的小标题。
我怎样才能最好地做到这一点?有没有更简单的方法来实现我想要的?
编辑:我已经设法通过单元素列表的列表获得偏差残差。仍然不确定如何将这些合并到 AIC 值等。
【问题讨论】:
-
summaryof models 本身就是许多组件的列表。您想将所有这些信息保存在表格的一列中吗? -
代码报错。什么是
b_0、b_1? -
您需要确定您想要的摘要对象的哪些部分。摘要对象是一个复杂的对象,因此您需要将其部分丢弃。
-
@Parfait 我已经添加了我想保留的每个摘要中的特定组件。
-
@IRTFM 我已经更新了帖子,以便清楚我想要的值。不过,我仍在努力提取所有这些内容。尤其是每个 glm 摘要中的偏差残差。