我創建了一個函式,它使用不同的列作為回圈上的因變數運行 lm 回歸的多次迭代。我正在提取每次迭代的摘要和相關圖,但我無法創建所有迭代結果的單個摘要表。由于我只有8列,我認為可以做到。這是我的函式,下面有資料
quantmodel<-function(a){
i<-1
a <- janitor::clean_names(a)
colnames1 <- colnames(a)
lm_model <- linear_reg() %>%
set_engine('lm') %>%
set_mode('regression')
out_lst <- vector('list', ncol(a))
for (i in seq_along(a)) {
lm_fit <- lm_model %>%
fit(as.formula(paste(colnames1[i], "~ .")), data = a)
#Saving relevance plot of each parameter
temp_plot = vip(lm_fit ,geom = "col", aesthetics = list(color = "black", fill = "black"))
ggsave(temp_plot, file=paste0("plot_", i,".png"), width = 14, height = 10, units = "cm")
#Saving pdf of individual summaries
pdf(paste0("summary_", colnames1[i],".pdf"), width = 10,height = 3)
grid.table(coef(summary(lm_fit$fit)))
dev.off()
paste0("m",i)<-lm_fit$fit
}
}
quantmodel(set1)
資料:Set1(前 3 列)
| 家庭小鬼 | 朋友的小鬼 | 休閑小鬼 |
|---|---|---|
| 2 | 1 | 1 |
| 1 | 2 | 1 |
uj5u.com熱心網友回復:
由于您沒有提供最小作業示例,因此我們無法正確診斷您的問題。
也就是說,一種選擇是確保您的函式回傳模型串列,然后將其提供給modelsummary函式。在此示例代碼中,請注意return()最后的呼叫和modelsummary()呼叫:
quantmodel<-function(a){
i<-1
a <- janitor::clean_names(a)
colnames1 <- colnames(a)
lm_model <- linear_reg() %>%
set_engine('lm') %>%
set_mode('regression')
out_lst <- list()
for (i in seq_along(a)) {
lm_fit <- lm_model %>%
fit(as.formula(paste(colnames1[i], "~ .")), data = a)
out_lst[[i]] <- lm_fit
#Saving relevance plot of each parameter
temp_plot = vip(lm_fit ,geom = "col", aesthetics = list(color = "black", fill = "black"))
ggsave(temp_plot, file=paste0("plot_", i,".png"), width = 14, height = 10, units = "cm")
#Saving pdf of individual summaries
pdf(paste0("summary_", colnames1[i],".pdf"), width = 10,height = 3)
grid.table(coef(summary(lm_fit$fit)))
dev.off()
paste0("m",i)<-lm_fit$fit
}
return(out_lst)
}
library(modelsummary)
models <- quantmodel(set1)
modelsummary(dvnames(models))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/450194.html
