Added some criteria from Tencate et al. (2016)

This commit is contained in:
Joakim Skogholt 2024-05-25 13:44:29 +02:00
parent 06f1475194
commit aec4b9767a
2 changed files with 32 additions and 0 deletions

View file

@ -30,6 +30,7 @@ export TRLooCVUpdateNaive
export TRLooCVUpdateExperimental
# From "variousRegressionFunctions.jl"
export cVals
export calculateRMSE
export oldRegCoeffs
export PCR

View file

@ -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)