diff --git a/src/TR.jl b/src/TR.jl index 951fa2d..7383c58 100644 --- a/src/TR.jl +++ b/src/TR.jl @@ -2,7 +2,7 @@ Solves the model update problem explicitly as a least squares problem with stacked matrices. In practice the most naive way of approaching the update problem """ -function TRLooCVUpdateNaive(X, y, lambdasu, bold) +function TRLooCVUpdateNaive(X, y, lambdasu, bOld) n, p = size(X); rmsecvman = zeros(length(lambdasu)); @@ -19,7 +19,7 @@ for i = 1:n p2 = size(Xdata, 2); for j = 1:length(lambdasu) - betas = [Xs; sqrt(lambdasu[j]) * I(p2)] \ [ys ; sqrt(lambdasu[j]) * bold]; + betas = [Xs; sqrt(lambdasu[j]) * I(p2)] \ [ys ; sqrt(lambdasu[j]) * bOld]; rmsecvman[j] += (y[i] - (((X[i,:]' .- mX) * betas)[1] + my))^2; end end @@ -33,7 +33,7 @@ end Uses the 'svd-trick' for efficient calculation of regression coefficients, but does not use leverage corrections. Hence regression coefficients are calculated for all lambda values """ -function TRLooCVUpdateFair(X, y, lambdasu, bold) +function TRLooCVUpdateFair(X, y, lambdasu, bOld) n, p = size(X); rmsecvman = zeros(length(lambdasu)) @@ -53,7 +53,7 @@ for i = 1:n denom2 = broadcast(.+, ones(n-1), broadcast(./, lambdasu', s.^2)) # denom2 = 1 + lambda/(s's) = (s's + lambda) / (s's) # Calculating regression coefficients and residual - bcoeffs = V * broadcast(./, (U' * ys), denom) .+ bold .- V * broadcast(./, V' * bold, denom2); + bcoeffs = V * broadcast(./, (U' * ys), denom) .+ bOld .- V * broadcast(./, V' * bOld, denom2); rmsecvman += ((y[i] .- ((X[i,:]' .- mX) * bcoeffs .+ my)).^2)'; end @@ -131,7 +131,7 @@ end # Calculating rmsecv and regression coefficients press = sum(rescv.^2, dims=1)'; rmsecv = sqrt.(1/n .* press); -bcoeffs = V * broadcast(./, (U' * y), denom) .+ bold .- V * broadcast(./, V' * bold, denom2); +bcoeffs = V * broadcast(./, (U' * y), denom) .+ bOld .- V * broadcast(./, V' * bOld, denom2); bcoeffs = regMat \ bcoeffs; # Creating regression coefficients for uncentred data