【发布时间】:2021-01-27 20:25:44
【问题描述】:
我在 R 中运行了一个 for 循环,它为 200 个不同的随机数据组合(200 个不同的 set.seed 值)生成二项式 GAM 模型。
for-loop 和 GAM 运行良好,它们将模型存储在适当的列表 model[[i]] 中,每个列表元素代表特定 set.seed 迭代的模型。
我可以在单个列表元素(例如model[[5]])上运行summary(),然后得到如下结果:
Approximate significance of smooth terms:
edf Ref.df Chi.sq p-value
s(Petal.Width) 1.133e+00 9 5.414 0.008701 **
s(Sepal.Length) 8.643e-01 9 2.338 0.067509 .
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
R-sq.(adj) = 0.361 Deviance explained = 32.7%
-REML = 83.084 Scale est. = 1 n = 160
由于我的 model 列表中有 200 个这样的元素,我想知道是否有一种快速的方法可以计算出 Chi.sq 值等于多少次(总共 200 个) Petal.Width 变量为 0。基本上,由于我使用bs = "cs" 设置了 GAM,因此 Chi.sq 等于 0 的次数表示变量选择过程从模型中删除该变量的频率。
这是我用于 for 循环构建模型的代码的清理版本:
a <- c(1:200)
model <- list()
for (i in a) {
#In my version there's some extra code here that subsets iris based on i
model[[i]] <- gam(Species~ s(Petal.Width, bs="cs") +
s(Sepal.Length, bs="cs"),
data = iris,
family = binomial,
method = "REML")
}
【问题讨论】:
-
您能提供您的模型的代码吗?我使用了
broom包中的tidy()命令,它将模型结果放在一个小标题中以收集输出,然后您可以将列放在一起。 -
@brianavery 进行了一些编辑 - 这就是您要找的吗?
-
有帮助,谢谢,但是您使用哪个软件包用于
gam--gam或mgcv? -
@brianavery 我正在使用
mgcv
标签: r subset chi-squared