📦 源代码 : GitHub 仓库
项目简介
本项目评估 GitHub 开源项目 Soil-Analysis 的可重复性。 该研究使用随机森林模型预测土壤 pH 值,数据包含 N、P、K 养分含量及 pH 值。
评估维度: 环境可重建性、代码与流程可重复性、结果可重复性
一、数据清洗与整合
# 数据清洗与整合(01_clean.R)
# 导入数据
soil <- read.csv ("dataraw/soil_data.csv" )
# 剔除缺失值
soil <- na.omit (soil)
# 基本统计描述
summary (soil)
X N P K
Min. : 0.0 Min. : 0.00 Min. : 5.00 Min. : 5.00
1st Qu.: 549.8 1st Qu.: 21.00 1st Qu.: 28.00 1st Qu.: 20.00
Median :1099.5 Median : 37.00 Median : 51.00 Median : 32.00
Mean :1099.5 Mean : 50.55 Mean : 53.36 Mean : 48.15
3rd Qu.:1649.2 3rd Qu.: 84.25 3rd Qu.: 68.00 3rd Qu.: 49.00
Max. :2199.0 Max. :140.00 Max. :145.00 Max. :205.00
ph Fertility_Status
Min. :3.505 Length:2200
1st Qu.:5.972 Class :character
Median :6.425 Mode :character
Mean :6.469
3rd Qu.:6.924
Max. :9.935
# 设置随机种子保证复现性
set.seed (123 )
数据集包含土壤样本的 N、P、K 养分含量和 pH 值,共 2000+ 条记录。
二、随机森林建模与评估
library (randomForest)
# 构建随机森林模型
rf_model <- randomForest (ph ~ N + P + K, data= soil, ntree= 500 , mtry= 2 )
# 保存模型对象
saveRDS (rf_model, "results/rf_model.rds" )
# 模型评估
pred <- predict (rf_model, soil)
rmse <- sqrt (mean ((soil$ ph - pred)^ 2 ))
r2 <- cor (soil$ ph, pred)^ 2
print (paste ("RMSE:" , rmse))
[1] "RMSE: 0.365487911220195"
[1] "R²: 0.833192097383881"
# 变量重要性
varImpPlot (rf_model)
模型参数:
树数量(ntree):500
每次分裂变量数(mtry):2
因变量:pH
自变量:N、P、K
三、变量重要性分析
N、P、K 三个养分对 pH 预测的重要性如图所示。
四、预测结果可视化
蓝色点为预测值,红色线为 1:1 参考线。预测值与实测值高度吻合,说明模型预测精度良好。
五、复现结果
复现过程中成功生成了以下结果文件:
results/ph_prediction.csv
每个样本的预测 pH 值与实测值对照
results/ph_distribution.png
预测值与实测值散点图
results/ph_importance.png
变量重要性图
results/rf_model.rds
保存的随机森林模型对象
六、可视化代码
library (ggplot2)
# 加载模型
rf_model <- readRDS ("results/rf_model.rds" )
# 预测结果
soil$ pred_ph <- predict (rf_model, soil)
# 绘制预测 vs 实测散点图
ggplot (soil, aes (x= ph, y= pred_ph)) +
geom_point (color= "blue" , alpha= 0.6 ) +
geom_abline (slope= 1 , intercept= 0 , color= "red" ) +
labs (x= "实测 pH" , y= "预测 pH" , title= "预测值 vs 实测值" ) +
theme_minimal ()
# 绘制变量重要性图
varImpPlot (rf_model, main= "变量重要性" )
七、可重复性评估结论
优势:
提供完整原始数据与模型文件
分析逻辑清晰,参数设置明确(ntree=500, mtry=2)
核心结果可复现,RMSE 与 R² 与原项目一致
不足:
缺少 requirements.txt 等环境配置文件
部分绘图脚本参数未完全标注
数据集中存在少量异常值未处理
总体评价: 该研究为土壤 pH 预测提供了一个可复现的范例,可重复性表现良好。