R语言:使用domir包进行GAM模型拟合并计算R^2
这段代码没有明显的语法错误。但需要注意的是,其中使用了两个外部包('domir'和'mgcv'),需要先通过install.packages()函数安装这两个包才能正常运行代码。
df <- data.frame(aaa = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3), bbb = c(5, 4, 3, 3, 4, 5, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3), ccc = c(6, 6, 6, 6, 7, 8, 1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 2, 3))
library(domir)
library(mgcv)
gam_r2 <- function(fml, data) {
gam_res <- gam(fml, data = data)
r2 <- summary(gam_res)[['dev.expl']]
count <<- count + 1 # increment counter in enclosing environment
DA_results[count, "formula"] <<- deparse(fml) # record string version of formula passed in 'DA_results' in enclosing environment
DA_results[count, "R^2"] <<- summary(gam_res)[['dev.expl']] # record R^2 in 'DA_results' in enclosing environment
return(r2)
}
count <- 0
DA_results <- data.frame(formula = rep("", times = 2^3 - 1), 'R^2' = rep(NA, times = 2^3 - 1), check.names = FALSE)
domir_r2 <- domir(aaa ~ s(bbb, bs = "cr") + s(ccc, bs = "cr"),
gam_r2,
data = df)
这段代码使用了domir包,它允许你遍历不同的模型公式,并使用自定义函数gam_r2计算每个模型的R^2。gam_r2函数使用mgcv包中的gam函数拟合广义可加模型,然后提取R^2值。
需要注意的是,domir和mgcv包需要先安装,可以使用以下代码进行安装:
install.packages(c('domir', 'mgcv'))
安装完包后,就可以运行上面的代码,得到不同模型公式下的R^2值,并存储在DA_results数据框中。
原文地址: https://www.cveoy.top/t/topic/nksc 著作权归作者所有。请勿转载和采集!