利用R语言Growthrates包提取两种模型的每孔AIC值求助
提取Growthrates包拟合模型的AIC值
你可以通过以下步骤提取两种拟合模型的AIC值并存储:
提取
fit_easymodel的AIC值fit_easylinear返回的拟合对象中直接包含aic元素,用sapply遍历列表即可批量提取:# 提取easylinear模型的AIC值 aic_easy <- sapply(fit_easymodel, function(model) model$aic)提取
fit_splinemodel的AIC值
同理,fit_spline的拟合结果也包含aic元素,用同样的方式提取:# 提取spline模型的AIC值 aic_spline <- sapply(fit_splinemodel, function(model) model$aic)整合结果并存储
为了方便对应每个孔的信息,可以将AIC值与孔名(即df中除时间列外的列名)合并成数据框,后续可直接保存为文件:# 创建包含孔名和两种模型AIC的数据框 aic_df <- data.frame( well_id = colnames(df)[-1], # 提取所有孔的名称 aic_easylinear = aic_easy, aic_spline = aic_spline ) # 保存结果到CSV文件(可选) write.csv(aic_df, "growth_model_aic_results.csv", row.names = FALSE)
完整代码示例
library(growthrates) split_df <- split(bactgrowth,~strain+replicate+conc) timeseries <- lapply(split_df, function(x) x$value) df <- cbind(data.frame(time = 1:31), as.data.frame(timeseries)) fit_easymodel <- lapply(2:length(colnames(df)), function(x) fit_easylinear(df$time, df[[x]])) fit_splinemodel <- lapply(2:length(colnames(df)), function(x) fit_spline(df$time, df[[x]],spar=0.5)) # 提取AIC值 aic_easy <- sapply(fit_easymodel, function(model) model$aic) aic_spline <- sapply(fit_splinemodel, function(model) model$aic) # 整合并存储 aic_df <- data.frame( well_id = colnames(df)[-1], aic_easylinear = aic_easy, aic_spline = aic_spline ) # 可选:保存到本地 write.csv(aic_df, "growth_aic_results.csv", row.names = FALSE)
内容的提问来源于stack exchange,提问作者Bandana
相关产品推荐
相关产品推荐

