From 24b0117d4848c14641f0f57dc71890cb5d9d008d Mon Sep 17 00:00:00 2001 From: Joakim Skogholt Date: Wed, 10 May 2023 22:14:23 +0200 Subject: [PATCH] nowords --- src/variousRegressionFunctions.jl | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/variousRegressionFunctions.jl b/src/variousRegressionFunctions.jl index 4222aa7..fd931fe 100644 --- a/src/variousRegressionFunctions.jl +++ b/src/variousRegressionFunctions.jl @@ -1,35 +1,46 @@ + + + + + + """ - function PCR(X, y, kmax, centre=True, standardize=true) + function PCR(X, y, kmax, centre=true)#, standardize=true) Principal Component Regression (PCR). Inputs: Data matrix, response vector, maximum number of components. -A constant term is included in the modeling. +A constant term is included in the modeling if centre==true. Outputs: B (matrix of size (p+1) x kmax), U, s, V +ADD STANDARDIZATION?? (NEED TO THINK THROUGH PREDICTION WITH NEW DATA) X, y = importData("Beer"); B, \\_ = PCR(X, y, 10, true, false); """ -function PCR(X, y, kmax, centre=true, standardize=true) +function PCR(X, y, kmax, centre::Bool=true)#, standardize=true) +stdX = std(X, dims=1); mX = mean(X, dims=1); my = mean(y, dims=1); -stdX = std(X, dims=1); +y = y .- my; if centre X = X .- mX; end -if standardize - X = X ./ stdX; -end +#if standardize +# X = X ./ stdX; +#end U, s, V = svd(X, full=false); q = s[1:kmax].^(-1) .*(U[:,1:kmax]'y); B = cumsum(V[:,1:kmax] .* q', dims=2); -b0 = my .- mX * B -B = [b0; B]; - + +if centre + b0 = my .- mX * B + B = [b0; B]; +end + return B, U, s, V end