poet/util/data_evaluation/Test_Validation.R
2020-11-18 14:36:07 +01:00

93 lines
4.0 KiB
R

## Example script for assessing simulation results with "RFun_Eval.R"
## Time-stamp: "Last modified 2020-01-27 17:23:25 delucia"
## Read all the needed functions
source("RFun_Eval.R")
## Read all .rds in a given directory
trds <- ReadRTSims("TestDHT_Log")
## Read all .dht in a given directory
tdht <- ReadAllDHT("TestDHT_Log")
## control the content of a .dht
rc <- trds[[1]]$C
rt <- trds[[1]]$T
dht <- tdht[[1]][, 10:18]
## extract the unique rows of the first iteration (3 rows expected, as per dht)
rtu <- mgcv::uniquecombs(rt)
rcu <- mgcv::uniquecombs(rc)
all.equal(attr(rtu,"index"), attr(rcu,"index"))
colnames(dht) <- colnames(rcu)
## compare _Log _NoLog and reference
## First read all the simulations
rlog <- ReadRTSims("TestDHT_Log") ## all default values, np 4, with --dht-log
nlog <- ReadRTSims("TestDHT_NoLog") ## all default values, np 4, without --dht-log
ref <- ReadRTSims("TestNoDHT") ## all default values, np 4
## Compute absolute RMSE for each variable
rmse_lnl <- ComputeErrors(rlog, nlog, FUN=RMSE)
## Compute relative RMSE for each variable using sd as norm
rel_sd_rmse_lnl <- ComputeErrors(rlog, nlog, FUN=RsdRMSE)
## Compute relative RMSE for each variable using MAX as norm
rel_max_rmse_lnl <- ComputeErrors(rlog, nlog, FUN=RmaxRMSE)
## Visualize the 2 computed relative errors
## start by defining a nice color palette using RColorBrewer
mycol <- RColorBrewer::brewer.pal(8, "Dark2")
## uncomment the next line to save this image to a pdf file
## cairo_pdf("RelErr_Dol_dhtlog_vs_nolog.pdf", height=9, width=12)
par(mfrow=c(1,2))
ErrorProgress(rel_sd_rmse_lnl, colors=mycol, ignore=c("O2g"), log="y", ylim=c(1E-08, 1E-3), las=1, main="Rel.err dht-log vs dht, norm=SD", metric="RMSE_SD")
## add a grid
abline(h=10^-seq(8,3), col="grey", lwd=0.5, lty="dashed")
ErrorProgress(rel_max_rmse_lnl, colors=mycol, ignore=c("O2g"), log="y", ylim=c(1E-08, 1E-3), las=1, main="Rel.err dht-log vs dht, norm=MAX", metric="RMSE_MAX")
abline(h=10^-seq(8,3), col="grey", lwd=0.5, lty="dashed")
## uncomment the next line when saving to pdf
## dev.off()
## Visualize Scatter Plot of each variable
PlotScatter(rlog[[20]], nlog[[20]], labs=c("DHT LOG", "DHT"))
PlotScatter(rlog[[4]], nlog[[4]], labs=c("DHT LOG", "DHT"))
## Same as before but between dht-log and ref
rmse_logref <- ComputeErrors(rlog, ref, FUN=RMSE)
rel_sd_rmse_logref <- ComputeErrors(rlog, ref, FUN=RsdRMSE)
rel_max_rmse_logref <- ComputeErrors(rlog, ref, FUN=RmaxRMSE)
cairo_pdf("RelErr_Dol_ref_vs_dhtlog.pdf", height=9, width=12)
par(mfrow=c(1,2))
ErrorProgress(rel_sd_rmse_logref, colors=mycol, ignore=c("O2g"), log="y", ylim=c(1E-08, 1E-3), las=1, main="Rel.err dht-log vs Ref, norm=SD", metric="RMSE_SD")
abline(h=10^-seq(8,3), col="grey", lwd=0.5, lty="dashed")
ErrorProgress(rel_max_rmse_logref, colors=mycol, ignore=c("O2g"), log="y", ylim=c(1E-08, 1E-3), las=1, main="Rel.err dht-log vs Ref, norm=MAX", metric="RMSE_MAX")
abline(h=10^-seq(8,3), col="grey", lwd=0.5, lty="dashed")
dev.off()
x11(); PlotScatter(rlog[[20]]$C, ref[[20]]$C, labs=c("DHT log", "ref"))
rmse_nlogref <- ComputeErrors(nlog, ref, FUN=RMSE)
rel_sd_rmse_nlogref <- ComputeErrors(nlog, ref, FUN=RsdRMSE)
ErrorProgress(rel_sd_rmse_nlogref, log="y")
PlotScatter(nlog[[20]]$C, ref[[20]]$C, labs=c("DHT no log", "ref"))
## Same as before but between dht-nolog and ref
rmse_nlogref <- ComputeErrors(nlog, ref, FUN=RMSE)
rel_sd_rmse_nlogref <- ComputeErrors(nlog, ref, FUN=RsdRMSE)
rel_max_rmse_nlogref <- ComputeErrors(nlog, ref, FUN=RmaxRMSE)
cairo_pdf("RelErr_Dol_ref_vs_dht.pdf", height=9, width=12)
par(mfrow=c(1,2))
ErrorProgress(rel_sd_rmse_nlogref, colors=mycol, ignore=c("O2g"), log="y", ylim=c(1E-08, 1E-3), las=1, main="Rel.err dht-nolog vs Ref, norm=SD", metric="RMSE_SD")
abline(h=10^-seq(8,3), col="grey", lwd=0.5, lty="dashed")
ErrorProgress(rel_max_rmse_nlogref, colors=mycol, ignore=c("O2g"), log="y", ylim=c(1E-08, 1E-3), las=1, main="Rel.err dht-nolog vs Ref, norm=MAX", metric="RMSE_MAX")
abline(h=10^-seq(8,3), col="grey", lwd=0.5, lty="dashed")
dev.off()