370 likes | 390 Views
Explore IRENE_DLL, a comprehensive library for evaluating model performance. Learn its functions, analysis methods, and applications with examples. Enhance statistical analysis with difference-based and regression-based approaches. Future developments in model evaluation using IRENE_DLL.
E N D
IRENE_DLL: a library to evaluate model performance Presented by: Gianni Fila Research Institute for Industrial Crops Agronomy Section g.fila@isci.it
Topics • Background • Overview • Using the library: basic concepts • Special procedures • Application examples • Future developments
Why IRENE_DLL? • Need of reliable model estimates • No standard theory on model evaluation • No standard “boxes of tools” • Plethora of philosophical theories, statistical techniques, and software practices IRENE_DLL:a set of tools all housed in a single, integrated component
What IRENE_DLL can do • Difference-based analysis: indices, test statistics • Regression-based analysis: parameters, test statistics • Patterns detection: “Pattern Index” • Probability distributions: density functions, cumulative distributions (exceedence, non-exceedence) • Aggregation: first level (“module”), second level (“indicator”) • “Shift” analysis (Time mismatch)
IRENE_DLL in a nutshell • IRENE_DLL is a library of methods and functions to compute a variety of statistics and statistical tests • It consists of ten classes, containing data services, mathematical routines and some special data analysis procedures • All IRENE_DLL classes can be accessed individually (no hierarchy)
Data objects Computing objects Aggregation objects Accessory objects Module DataSelection GeneralRoutines Indicator Pattern DataSelections DistributionFunctions RegressionObject IndexObject Tests Overview Info-display routines They store data to be processed, and expose properties to handle them. Each object holds a group of related functions. They contain methods to perform statistics aggregation
DataSelection estimated measured (independent) E External data M Handling data (1) • To be accepted by any functions, data (estimated and measured) must be loaded into a DataSelection object
E E E DataSelection 1 DataSelections • DataSelection 1 • DataSelection 2 • DataSelection 3 M M M External data External data External data DataSelection 2 DataSelection 3 Handling data (2) • Whenever multiple series of data are to be processed, it is convenient to use a collective DataSelections object:
DataSelection Computing object Function_1 Function_2 (….) Function_n Required Specs Outputs Handling functions • To use a particular function, you must call it from the parent object, then pass it the data (in the DataSelection format), and the necessary specifications: Outputs from functions are aggregated in a single, collective variable
Paired_Rows Paired_Columns Unpaired_Average Unpaired_One_to_One Function modes
Handling outputs • All functions in IRENE_DLL return a package of outputs • A special collective variable is designed for each type of function • Example: content of the Index_Variable:
Example: computing regression • Compute regression parameters for three arrays of estimated data against three corresponding arrays of measured data Array MyEstimated(1 to 365, 1 to 3) Array MyMeasured(1 to 365, 1 to 3)
Example: (1) load data • Start an instance of a DataSelection object, and transfer your data inside it through the Estimated and Measured properties Dim Nitrates As New DataSelection Loop through: Nitrates.Estimated(i, j) = MyEstimated(i, j) Nitrates.Measured(i, j) = MyMeasured(i, j)
Example: (2) Compute Regression • Start an instance of the RegressionObject, then call the function Regression_LS (least squares method) Dim RegrCalculator As New RegressionObject Dim RegrOutput As Regression_Variable RegrOutput = RegrCalculator.Regression_LS(Nitrates, Paired_Columns, Measured_Variable)
Example: (3) Display results • Outputs are returned as arrays of values Loop from j = 1 to 3 (the number of columns) Print RegrOutput.Intercept(j) Print RegrOutput.Intercept_StandError(j) Print RegrOutput.Intercept_Tvs0(j) Print RegrOutput.Intercept_Prob_Tvs0(j) Print RegrOutput.Slope(j) Print RegrOutput.Slope_StandError(j) Print RegrOutput.Slope_Tvs0(j) Print RegrOutput.Slope_Tvs1(j) Print RegrOutput.Slope_Prob_Tvs0(j) Print RegrOutput.Slope_Prob_Tvs1(j) Print RegrOutput.F(j) Print RegrOutput.Prob_F(j)
Aggregation of indices: the problem • The need to define synthetic measures of model performance is a major topic of interest in the field of model evaluation. • Giving a solid judgement is often complicated by the need to balance, for instance, departure of estimates from measurements, modelling efficiency, correlation measures, presence/absence of systematic behavior in the residuals, etc. • The user may want to combine all such aspects in only one aggregated index.
IRENE’s approach • Index/test aggregation is set up by IRENE, based on an expert system using decision rules, according to fuzzy logic • This technique is robust when uncertain data are used (e.g. subjective judgements) and allows an aggregation of dissimilar statistics in a consistent and reproducible way.
Aggregation levels hyerarchy • IRENE_DLL supports two levels of statistics aggregation: First level: multiple indices/tests aggregated in one single index (Module) Second level: Multiple modules aggregated in one single index (Indicator)
Module specifications • Aggregation of statistics require the user to introduce specifications derived from his/her expert knowledge, and objectives • For each index to aggregate, the user must specify: • The DataSelection • The Favourable and Unfavourable limit values • The relative weight
r_Pearson, DataSelection, 0.95, 0.90, 1 Add_Index: Module_Value Pattern, DataSelection, 0.2, 0.75, 0.5 Add_Index: RMSE, DataSelection, 0.1, 0.8, 1 Add_Index: How to build a Module Start an instance of the Module object • Add indices to aggregate, with the required specifications Finally, compute module value calling the function Module_Value MyModule (a score between 0 and 1) RMSE r_Pearson Pattern
Soil NH4 (mg kg-1) Time mismatch analysis • There are no specific indices to investigate the uncertainty about possible displacements (delay or acceleration) registered in time series. A time mismatch may be detected by an iterated procedure, “shifting” repeatedly the estimated points until optimal model performance values are found.
Finding a time mismatch • Starting from an observed model performance as initial condition, the procedure runs as follows: • the simulated points are moved backward in time to the maximum anticipation chosen to evaluate the time mismatch • the desired evaluation indices are computed; • the simulated points of one time history are moved of one selected time step forward; • points 2 to 3 are reiterated until the maximum allowed time delay is reached. • The time mismatch is identified by the time step (forward or backward) at which the best value of the evaluation indices are reached.
Handling time mismatch in IRENE_DLL • All functions exposed by IRENE_DLL have an optional ShiftN parameter: • Ex., in the IndexObject object: • Public Function RMSE(Sel As DataSelection, Mode As Mode, [ByVal ShiftN As Long = 0], [ByVal Prob_level As Double = 0.05]) As Index_Variable • By setting a ShiftN value <> 0, the index is computed shifting the estimated points. • We can explore a range of ShiftN values by a loop
IRENE_DLL, sample applications • Time mismatch analysis Difference-based indices Pattern Index
In the next future: • Integration in IRENE interface • Integration in development frameworks (MODCOM) • Introduction of robust statistics (median-based). • Introduction of randomization procedures (“bootstrap”) • (….)
How to get IRENE_DLL View documentation
The people of IRENE_DLL • Gianni Fila g.fila@isci.it • Research Institute for Industrial Crops • Gianni Bellocchi g.bellocchi@isci.it • Research Institute for Industrial Crops • Marcello Donatelli m.donatelli@isci.it • Research Institute for Industrial Crops • Marco Acutis macutis@ideagate.it • Department of Crop Science, University of Milan