r - 提取 GAM 的估计值

标签 r gam mgcv

我对 R 相当陌生,目前正在阅读《广义可加模型》一书,这是 Wood 所著的《R 简介》(2006 年),并完成了一些练习,特别是关于空气污染和死亡的部分,这是我的领域兴趣。使用 mgcv 包我运行以下模型。

library(gamair) 
library(mgcv) 
data(chicago) 

ap1<-gam(death ~ pm10median + so2median + o3median +s(time,bs="cr",k=200)+ s(tmpd,bs="cr"), data=chicago,family=poisson)

如何提取 x 的 pm10median 和 95% CI 的效果估计并将输出导出到 CSV 或任何其他选项?

最佳答案

保存模型摘要

summary_model <- summary(ap1)

您想要的部分(对于线性项)位于 p.table 元素中

summary_model$p.table
                Estimate   Std. Error      z value    Pr(>|z|)
(Intercept) 4.7457425965 1.480523e-03 3205.4510971 0.000000000
pm10median  0.0002551498 9.384003e-05    2.7189871 0.006548217
so2median   0.0008898646 5.543272e-04    1.6053056 0.108426561
o3median    0.0002212612 2.248015e-04    0.9842516 0.324991826


write.csv(summary_model$p.table, file = 'p_table.csv')

如果您想要样条项,那么这就是

summary_model$s.table
               edf     Ref.df    Chi.sq       p-value
s(time) 167.327973 187.143378 1788.8201 4.948832e-259
s(tmpd)   8.337121   8.875807  110.5231  1.412415e-19

您可以手动计算 95% CI,并根据需要添加这些值。 (由于 DF 高,将使用 Z 分数)

p_table <- data.frame(summary_model$p.table)
p_table <- within(p_table, {lci <- Estimate - qnorm(0.975) * Std..Error
                            uci <- Estimate + qnorm(0.975) * Std..Error})
p_table
               Estimate   Std..Error      z.value    Pr...z..          uci           lci
(Intercept) 4.7457425965 1.480523e-03 3205.4510971 0.000000000 4.7486443674  4.742841e+00
pm10median  0.0002551498 9.384003e-05    2.7189871 0.006548217 0.0004390729  7.122675e-05
so2median   0.0008898646 5.543272e-04    1.6053056 0.108426561 0.0019763260 -1.965968e-04
o3median    0.0002212612 2.248015e-04    0.9842516 0.324991826 0.0006618641 -2.193416e-04\
<小时/>

根据评论进行编辑

如果您有许多游戏模型,例如 ap1ap2ap3 并且您希望系统地处理它们,Rish 的方法是将它们放入列表中并使用 lapply

# create list
model_list <- list(ap1, ap2, ap3)
# give the elements useful names
names(model_list) <- c('ap1','ap2','ap3')

# get the summaries using `lapply

summary_list <- lapply(model_list, summary)

# extract the coefficients from these summaries

 p.table_list <- lapply(summary_list, `[[`, 'p.table')

 s.table_list <- lapply(summary_list, `[[`, 's.table')

您现在创建的相关组件的列表。

关于r - 提取 GAM 的估计值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12944278/

相关文章:

r - 如何访问已传递给 ggplot() 的数据框?

r - 尝试使用 mgcv::gam "mismatch between nb/polys supplied area names and data area names"评估马尔可夫随机场时出错

r - Caret 包 - 使用平滑和线性预测器交叉验证 GAM

r - 具有 "gp"的 GAM 更平滑 : how to retrieve the variogram parameters?

r - 如何将 gam() 合并到 Lattice 包的 xyplot() 中?

用另一个栅格中的值替换栅格中的值

r - 使用 Jupyter Notebook 的 R Notebook 中的内核错误

r - 在 R 的每一列中查找并保留重复项

anova - 使用 mgcv gam 负二项式混合模型中固定效应的显着性