From aec4b9767acb212fcf28c689fa2bc2d3d7736561 Mon Sep 17 00:00:00 2001 From: Joakim Skogholt Date: Sat, 25 May 2024 13:44:29 +0200 Subject: [PATCH] Added some criteria from Tencate et al. (2016) --- src/Ting.jl | 1 + src/variousRegressionFunctions.jl | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/Ting.jl b/src/Ting.jl index f5f92f3..4bbf598 100644 --- a/src/Ting.jl +++ b/src/Ting.jl @@ -30,6 +30,7 @@ export TRLooCVUpdateNaive export TRLooCVUpdateExperimental # From "variousRegressionFunctions.jl" +export cVals export calculateRMSE export oldRegCoeffs export PCR diff --git a/src/variousRegressionFunctions.jl b/src/variousRegressionFunctions.jl index a2458c2..c8859eb 100644 --- a/src/variousRegressionFunctions.jl +++ b/src/variousRegressionFunctions.jl @@ -1,3 +1,34 @@ +""" +crit1minInd, crit2minInd, CvalCrit1, CvalCrit2 = function cVals(bcoeffs, rmsecv) +Crit1 = 'norm(regcoeffs) + cverror' +Crit2 = 'jaggedness(regcoeffs) + cverror' +bcoeffs = matrix with bcoeffs +""" +function cVals(bcoeffs, rmse) + +# Finding min and max of quantities used in criteria +bminnorm = norm(bcoeffs[2:end,end]); +bmaxnorm = norm(bcoeffs[2:end,1]); +rmsecvmin = minimum(rmse); +rmsecvmax = maximum(rmse); +bjaggedness = [norm([bcoeffs[2:end,i] - bcoeffs[1:end-1,1]]) for i=1:size(bcoeffs,2)]; +bjagmin = minimum(bjaggedness); +bjagmax = maximum(bjaggedness); + +# Calculating the quantities used in the criteria +CvalNorm = [((norm(bcoeffs[2:end,i]) - bminnorm) / (bmaxnorm - bminnorm)) for i=1:size(bcoeffs,2)]; +Cvalrmse = [((rmse[i] - rmsecvmin) / (rmsecvmax - rmsecvmin)) for i=1:length(rmse)]; +CvalJagged = [((bjaggedness[i] - bjagmin)/(bjagmax-bjagmin)) for i=1:length(bjaggedness)]; + +# Calculating the criteria as well as argmins +CvalCrit1 = CvalNorm + Cvalrmse; +CvalCrit2 = CvalJagged + Cvalrmse; +crit1minInd = argmin(CvalCrit1); +crit2minInd = argmin(CvalCrit2); + +return crit1minInd, crit2minInd, CvalCrit1, CvalCrit2 +end + """ function rmse, ypred = calculateRMSE(X, y, beta)