論文
Drivers and trends of global soil microbial carbon over two decades
https://www.nature.com/articles/s41467-022-31833-z#data-availability
這個里面有很多地圖的圖
還有自定義圖例形狀的代碼
數(shù)據(jù)和代碼
https://github.com/gpatoine/drivers_trends_microbial_carbon
這里有隨機森林模型 然后對變量重要性進行排序的代碼买置,今天的推文我們重復(fù)一下論文中的這部分內(nèi)容,目前能夠利用代碼和數(shù)據(jù)運行得到結(jié)果蓉冈,但是還不明白原理和代碼中參數(shù)的具體作用轩触。今天的內(nèi)容只是對運行過程的記錄。
部分示例數(shù)據(jù)集截圖
前10個變量是用來構(gòu)建模型的變量熟嫩,其中有一個是分類變量褐捻,其他都是數(shù)值型數(shù)據(jù)椅邓,最后一列Cmic是因變量
讀取數(shù)據(jù)
library(readr)
library(tidyverse)
dat<-read_csv("data/20221215/drivers_trends_microbial_carbon-main/rf_example.csv")
dat %>% head()
dat %>% colnames()
構(gòu)建隨機森林模型
library(caret)
set.seed(202)
predictors<-colnames(dat)[1:10]
model <- train(x = dat[,predictors],
y = dat$Cmic,
method = "rf",
importance = TRUE,
tuneGrid = expand.grid(mtry = c(2:4)), # length(predictors) or 2:6
trControl = trainControl(method = "cv",
number = 20,
p = 0.75,
savePredictions = TRUE))
這一步需要的時間還是相對比較長的
代碼中各個參數(shù)都是什么意思還需要仔細(xì)看看
輸出模型的RSEM和R方
model$results %>% as_tibble %>% filter(mtry == model$bestTune %>% unlist) %>% select(RMSE, Rsquared)
棒棒糖圖展示模型重要性
varImp(model)
varImp(model) %>% plot
varImp(model, scale = FALSE) %>% plot
還可以用ggplot2畫兩個柱形圖來展示
varImp(model)$importance %>%
as.data.frame() %>%
rownames_to_column("var") %>%
arrange(Overall) %>%
mutate(var=factor(var,levels = rev(var))) %>%
ggplot(aes(x=var,y=Overall))+
geom_col(aes(fill=var),show.legend = FALSE)+
theme_bw()+
labs(x=NULL) -> p1
varImp(model,scale = FALSE)$importance %>%
as.data.frame() %>%
rownames_to_column("var") %>%
arrange(Overall) %>%
mutate(var=factor(var,levels = rev(var))) %>%
ggplot(aes(x=var,y=Overall))+
geom_col(aes(fill=var),show.legend = FALSE)+
theme_bw()+
labs(x=NULL) -> p2
library(patchwork)
p1+
theme(axis.text.x = element_text(angle=60,vjust=1,hjust=1))+
p2+
theme(axis.text.x = element_text(angle=60,vjust=1,hjust=1))
后面還有代碼是將這個隨機森林模型重復(fù)運行100次,使用到了map()和map_dfr()函數(shù)合住,這兩個函數(shù)還得仔細(xì)學(xué)習(xí)一下用法
關(guān)于這個代碼感興趣的可以去看看原文提供的代碼
示例數(shù)據(jù)和代碼可以給公眾號推文點贊撒璧,點擊在看,最后留言獲取
歡迎大家關(guān)注我的公眾號
小明的數(shù)據(jù)分析筆記本
小明的數(shù)據(jù)分析筆記本 公眾號 主要分享:1卿樱、R語言和python做數(shù)據(jù)分析和數(shù)據(jù)可視化的簡單小例子;2萨蚕、園藝植物相關(guān)轉(zhuǎn)錄組學(xué)蹄胰、基因組學(xué)、群體遺傳學(xué)文獻閱讀筆記裕寨;3、生物信息學(xué)入門學(xué)習(xí)資料及自己的學(xué)習(xí)筆記妻往!