## Kelsi Perttula
## HW #2, Problem #3 install.packages('mvtnorm') install.packages('glmnet')
## install.packages('locfit') install.packages('xtable')
## install.packages('bigmemory') install.packages('biganalytics')
## install.packages('plyr') install.packages('multicore')
## install.packages('snowfall') install.packages('rlecuyer')
## install.packages('latticeExtra') install.packages('lasso2')
library(mvtnorm)
library(glmnet)
## Loading required package: Matrix
## Warning: package 'Matrix' was built under R version 3.0.2
## Loaded glmnet 1.9-5
library(locfit)
## locfit 1.5-9.1 2013-03-22
library(xtable)
library(bigmemory)
## Warning: package 'bigmemory' was built under R version 3.0.2
## Loading required package: bigmemory.sri
## Loading required package: BH
##
## bigmemory >= 4.0 is a major revision since 3.1.2; please see packages
## biganalytics and and bigtabulate and http://www.bigmemory.org for more information.
library(biganalytics)
library(plyr)
library(parallel)
library(multicore)
##
## Attaching package: 'multicore'
##
## The following object is masked from 'package:parallel':
##
## mclapply, mcparallel, pvec
library(snowfall)
## Loading required package: snow
##
## Attaching package: 'snow'
##
## The following objects are masked from 'package:parallel':
##
## clusterApply, clusterApplyLB, clusterCall, clusterEvalQ,
## clusterExport, clusterMap, clusterSplit, makeCluster,
## parApply, parCapply, parLapply, parRapply, parSapply,
## splitIndices, stopCluster
library(rlecuyer)
library(latticeExtra)
## Loading required package: RColorBrewer
## Loading required package: lattice
##
## Attaching package: 'lattice'
##
## The following object is masked from 'package:multicore':
##
## parallel
library(lasso2)
## Warning: package 'lasso2' was built under R version 3.0.2
## R Package to solve regression problems while imposing
## an L1 constraint on the parameters. Based on S-plus Release 2.1
## Copyright (C) 1998, 1999
## Justin Lokhorst <jlokhors@stats.adelaide.edu.au>
## Berwin A. Turlach <bturlach@stats.adelaide.edu.au>
## Bill Venables <wvenable@stats.adelaide.edu.au>
##
## Copyright (C) 2002
## Martin Maechler <maechler@stat.math.ethz.ch>
##
## Attaching package: 'lasso2'
##
## The following object is masked from 'package:locfit':
##
## gcv
library(gplots)
## Loading required package: gtools
## Warning: package 'gtools' was built under R version 3.0.2
## Loading required package: gdata
## gdata: read.xls support for 'XLS' (Excel 97-2004) files ENABLED.
##
## gdata: read.xls support for 'XLSX' (Excel 2007+) files ENABLED.
##
## Attaching package: 'gdata'
##
## The following object is masked from 'package:stats':
##
## nobs
##
## The following object is masked from 'package:utils':
##
## object.size
##
## Loading required package: caTools
## Warning: package 'caTools' was built under R version 3.0.2
## Loading required package: grid
## Loading required package: KernSmooth
## KernSmooth 2.23 loaded
## Copyright M. P. Wand 1997-2009
## Loading required package: MASS
##
## Attaching package: 'gplots'
##
## The following object is masked from 'package:stats':
##
## lowess
# 3a
J <- 10
betas <- c(rep(-J/2, 5) + c(1:5), rep(J/2, 5) - c(5:1))/10
sigma <- 2
rho <- 0.5
nLearn <- 100
nTest <- 1000
set.seed(700)
mu <- rep(0, J)
mu
## [1] 0 0 0 0 0 0 0 0 0 0
sigma <- matrix(1, J, J)
head(sigma)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [1,] 1 1 1 1 1 1 1 1 1 1
## [2,] 1 1 1 1 1 1 1 1 1 1
## [3,] 1 1 1 1 1 1 1 1 1 1
## [4,] 1 1 1 1 1 1 1 1 1 1
## [5,] 1 1 1 1 1 1 1 1 1 1
## [6,] 1 1 1 1 1 1 1 1 1 1
for (i in (1:J)) {
for (j in (1:J)) {
sigma[i, j] <- rho^abs(i - j)
}
} #covariance matrix- symmetric
head(sigma)
## [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
## [1,] 1.00000 0.5000 0.250 0.125 0.0625 0.03125 0.01562 0.007812 0.003906
## [2,] 0.50000 1.0000 0.500 0.250 0.1250 0.06250 0.03125 0.015625 0.007812
## [3,] 0.25000 0.5000 1.000 0.500 0.2500 0.12500 0.06250 0.031250 0.015625
## [4,] 0.12500 0.2500 0.500 1.000 0.5000 0.25000 0.12500 0.062500 0.031250
## [5,] 0.06250 0.1250 0.250 0.500 1.0000 0.50000 0.25000 0.125000 0.062500
## [6,] 0.03125 0.0625 0.125 0.250 0.5000 1.00000 0.50000 0.250000 0.125000
## [,10]
## [1,] 0.001953
## [2,] 0.003906
## [3,] 0.007812
## [4,] 0.015625
## [5,] 0.031250
## [6,] 0.062500
dim(sigma)
## [1] 10 10
n <- (nLearn + nTest)
X <- rmvnorm(n, mean = mu, sigma = sigma)
X[1:5, 1:5]
## [,1] [,2] [,3] [,4] [,5]
## [1,] -0.1994 -0.3738 -0.4626 -1.4052 0.53602
## [2,] 0.3557 0.1871 0.3822 -1.4330 -1.55267
## [3,] 0.9642 0.7964 1.6387 0.5436 0.62349
## [4,] -0.9820 -0.2320 -1.2188 0.1012 -0.20201
## [5,] 1.8482 -0.9791 0.8889 0.3203 -0.04461
dim(X)
## [1] 1100 10
# Predict Y
Xi_x_Betai <- apply(X, 1, function(x_i) {
sum(x_i * betas)
})
head(Xi_x_Betai)
## [1] -0.36972 0.02421 -1.51876 2.07140 -0.40277 -0.65760
length(Xi_x_Betai)
## [1] 1100
Y <- rnorm(n, mean = Xi_x_Betai, sd = sigma)
head(Y)
## [1] 0.3602 0.3566 -1.7252 1.9168 -0.4603 -0.6117
length(Y)
## [1] 1100
trainSet <- c(rep(1, 100), rep(0, 1000))
simulData <- data.frame(cbind(X, Y, trainSet))
head(simulData)
## V1 V2 V3 V4 V5 V6 V7 V8 V9
## 1 -0.1994 -0.3738 -0.4626 -1.4052 0.53602 0.1112 1.0532 -0.7550 -1.04458
## 2 0.3557 0.1871 0.3822 -1.4330 -1.55267 -0.9714 0.3512 -0.4772 -0.13564
## 3 0.9642 0.7964 1.6387 0.5436 0.62349 0.5082 0.2413 0.6524 -0.09502
## 4 -0.9820 -0.2320 -1.2188 0.1012 -0.20201 0.2792 1.9281 0.9450 0.95381
## 5 1.8482 -0.9791 0.8889 0.3203 -0.04461 1.0019 1.8212 0.1477 -0.03880
## 6 1.4840 -0.7143 0.3336 0.5575 1.14956 0.6682 0.1380 0.5520 0.23514
## V10 Y trainSet
## 1 -1.0890 0.3602 1
## 2 0.6419 0.3566 1
## 3 -1.5954 -1.7252 1
## 4 1.7685 1.9168 1
## 5 0.1314 -0.4603 1
## 6 -0.8764 -0.6117 1
tail(simulData)
## V1 V2 V3 V4 V5 V6 V7 V8
## 1095 1.4900 0.5200 0.03267 1.0320 1.0569 0.4424 -0.7328 0.95312
## 1096 0.8396 0.9081 -0.43137 -1.0270 0.6206 1.2421 0.6608 -0.11600
## 1097 1.4568 2.9236 1.22431 2.0260 -0.5745 -0.9671 0.2199 0.03998
## 1098 -0.7022 -0.5907 1.19678 1.2652 -0.3496 -0.7901 -1.3297 0.07258
## 1099 0.4187 0.1885 -0.95416 -1.0787 0.2849 -0.6431 -0.6361 -1.41249
## 1100 0.3093 1.9245 0.31242 -0.2138 -0.7300 -0.8698 0.9203 0.53280
## V9 V10 Y trainSet
## 1095 -1.1040 0.2557 -0.9696666 0
## 1096 -0.2476 0.7187 -0.1749723 0
## 1097 0.1579 1.2600 -1.5008004 0
## 1098 1.3467 0.7213 0.4471258 0
## 1099 -1.7466 -0.5759 -1.5492255 0
## 1100 -0.1381 0.3905 -0.0002092 0
dim(simulData)
## [1] 1100 12
colnames(simulData) <- c(paste("X", c(1:10)), "Y", "train")
learnSet <- simulData[c(1:100), ]
head(learnSet)
## X 1 X 2 X 3 X 4 X 5 X 6 X 7 X 8 X 9
## 1 -0.1994 -0.3738 -0.4626 -1.4052 0.53602 0.1112 1.0532 -0.7550 -1.04458
## 2 0.3557 0.1871 0.3822 -1.4330 -1.55267 -0.9714 0.3512 -0.4772 -0.13564
## 3 0.9642 0.7964 1.6387 0.5436 0.62349 0.5082 0.2413 0.6524 -0.09502
## 4 -0.9820 -0.2320 -1.2188 0.1012 -0.20201 0.2792 1.9281 0.9450 0.95381
## 5 1.8482 -0.9791 0.8889 0.3203 -0.04461 1.0019 1.8212 0.1477 -0.03880
## 6 1.4840 -0.7143 0.3336 0.5575 1.14956 0.6682 0.1380 0.5520 0.23514
## X 10 Y train
## 1 -1.0890 0.3602 1
## 2 0.6419 0.3566 1
## 3 -1.5954 -1.7252 1
## 4 1.7685 1.9168 1
## 5 0.1314 -0.4603 1
## 6 -0.8764 -0.6117 1
dim(learnSet)
## [1] 100 12
testSet <- simulData[c(101:1100), ]
head(testSet)
## X 1 X 2 X 3 X 4 X 5 X 6 X 7 X 8
## 101 -0.2169 -1.03690 -1.4390 -0.09723 -0.82080 -1.2752 -0.6306 -1.12867
## 102 -0.6578 -0.08393 0.6663 0.77206 0.35673 1.2715 0.5064 0.01925
## 103 -0.6823 0.38979 0.1094 -0.28733 0.87111 1.2303 1.7231 0.59997
## 104 -0.0114 0.91976 2.1094 0.45209 0.36691 -0.5161 -0.9519 -1.45527
## 105 1.2754 -1.38717 -0.9441 -1.34031 -1.02475 0.0624 -1.9434 -1.37122
## 106 2.0168 1.06797 0.3548 -0.08322 -0.04206 0.7172 -0.4549 0.52513
## X 9 X 10 Y train
## 101 -1.71410 -2.1959 -1.7988 0
## 102 -0.08939 0.8454 0.3121 0
## 103 1.12140 -0.3424 0.8850 0
## 104 -1.93791 -2.7194 -2.9143 0
## 105 -2.24218 -0.7091 -1.1787 0
## 106 0.61785 0.6410 -0.6834 0
dim(testSet)
## [1] 1000 12
# EDA of learningSet
pairs(learnSet[, 1:11], col = c(5), main = "Simulated Data-Pairs - Learning Set")
myPalette <- colorRampPalette(c("blue", "green"), space = "rgb")
heatmap.2(cor(learnSet[, 1:11]), col = myPalette, main = "Learning Set")
# Outside of diagonal, correlation increases away from diagonal
par(mfrow = c(2, 5))
for (j in 1:10) {
plot(learnSet[, j], learnSet[, 11], col = c(7, 3)[learnSet$train * 1 + 1],
xlab = names(learnSet)[j], ylab = names(learnSet)[11], main = "", sub = paste("Corr=",
round(cor(learnSet[, c(j, 11)])[1, 2], 2), sep = ""), cex.main = 1.1,
cex.lab = 0.9)
lines(lowess(learnSet[, 11] ~ learnSet[, j]), col = 1)
abline(lm(learnSet[, 11] ~ learnSet[, j])$coef, col = 6)
}
par(mfrow = c(1, 1))
# Elastic Net
lambdas <- c(0:100)
revLambdas <- rev(lambdas)
learnCovars <- as.matrix(learnSet[, c(1:10)])
dim(learnCovars)
## [1] 100 10
learnY <- learnSet$Y
# a- Ridge
alphaRidge <- 0
lambdasRidge <- lambdas/(100)
lambdasRidge
## [1] 0.00 0.01 0.02 0.03 0.04 0.05 0.06 0.07 0.08 0.09 0.10 0.11 0.12 0.13
## [15] 0.14 0.15 0.16 0.17 0.18 0.19 0.20 0.21 0.22 0.23 0.24 0.25 0.26 0.27
## [29] 0.28 0.29 0.30 0.31 0.32 0.33 0.34 0.35 0.36 0.37 0.38 0.39 0.40 0.41
## [43] 0.42 0.43 0.44 0.45 0.46 0.47 0.48 0.49 0.50 0.51 0.52 0.53 0.54 0.55
## [57] 0.56 0.57 0.58 0.59 0.60 0.61 0.62 0.63 0.64 0.65 0.66 0.67 0.68 0.69
## [71] 0.70 0.71 0.72 0.73 0.74 0.75 0.76 0.77 0.78 0.79 0.80 0.81 0.82 0.83
## [85] 0.84 0.85 0.86 0.87 0.88 0.89 0.90 0.91 0.92 0.93 0.94 0.95 0.96 0.97
## [99] 0.98 0.99 1.00
fitRidge <- glmnet(learnCovars, learnY, standardize = F, family = "gaussian",
intercept = F, lambda = lambdasRidge, alpha = alphaRidge)
(fitRidge$beta[, c(length(lambdas):1)])[1:5, 1:5]
## 5 x 5 sparse Matrix of class "dgCMatrix"
## s100 s99 s98 s97 s96
## X 1 -0.370552 -0.366922 -0.363391 -0.35995 -0.35661
## X 2 -0.331785 -0.331307 -0.330729 -0.33006 -0.32932
## X 3 -0.172706 -0.171321 -0.170003 -0.16875 -0.16754
## X 4 -0.100484 -0.100043 -0.099651 -0.09930 -0.09899
## X 5 -0.006436 -0.008207 -0.009844 -0.01136 -0.01278
alphaLasso <- 1
lambdasLasso <- lambdas/(2 * 100)
fitLasso <- glmnet(x = learnCovars, y = learnY, standardize = F, family = "gaussian",
lambda = lambdasLasso, alpha = alphaLasso)
fitLasso$beta[, c(length(lambdas):1)]
## 10 x 101 sparse Matrix of class "dgCMatrix"
## [[ suppressing 101 column names 's100', 's99', 's98' ... ]]
##
## X 1 -0.373937 -0.36641 -0.35937 -0.35234 -0.34530 -0.33826 -0.331222
## X 2 -0.326159 -0.32797 -0.32888 -0.32979 -0.33070 -0.33161 -0.332527
## X 3 -0.175653 -0.17184 -0.16848 -0.16511 -0.16174 -0.15838 -0.155008
## X 4 -0.102547 -0.09491 -0.09055 -0.08619 -0.08184 -0.07748 -0.073120
## X 5 0.007185 . . . . . .
## X 6 0.046104 0.04334 0.03637 0.02941 0.02244 0.01548 0.008512
## X 7 0.093623 0.09467 0.09535 0.09602 0.09670 0.09738 0.098051
## X 8 0.220816 0.21714 0.21512 0.21311 0.21109 0.20908 0.207062
## X 9 0.208335 0.20493 0.20083 0.19672 0.19261 0.18851 0.184403
## X 10 0.448573 0.44452 0.44170 0.43888 0.43606 0.43324 0.430415
##
## X 1 -0.324167 -0.31890 -0.31407 -0.30925 -0.30442 -0.29960 -0.29478
## X 2 -0.333528 -0.33394 -0.33420 -0.33446 -0.33472 -0.33498 -0.33523
## X 3 -0.151598 -0.14808 -0.14459 -0.14111 -0.13762 -0.13414 -0.13066
## X 4 -0.068779 -0.06579 -0.06315 -0.06051 -0.05788 -0.05524 -0.05260
## X 5 . . . . . . .
## X 6 0.001574 . . . . . .
## X 7 0.098662 0.09710 0.09498 0.09287 0.09075 0.08863 0.08651
## X 8 0.205032 0.20283 0.20054 0.19826 0.19597 0.19369 0.19140
## X 9 0.180448 0.17684 0.17328 0.16972 0.16615 0.16259 0.15903
## X 10 0.427511 0.42361 0.41946 0.41530 0.41115 0.40699 0.40283
##
## X 1 -0.28995 -0.28513 -0.28030 -0.27548 -0.27065 -0.26583 -0.26101
## X 2 -0.33549 -0.33575 -0.33601 -0.33627 -0.33653 -0.33679 -0.33704
## X 3 -0.12717 -0.12369 -0.12020 -0.11672 -0.11323 -0.10975 -0.10626
## X 4 -0.04996 -0.04733 -0.04469 -0.04205 -0.03941 -0.03678 -0.03414
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.08439 0.08227 0.08015 0.07803 0.07591 0.07380 0.07168
## X 8 0.18912 0.18683 0.18455 0.18226 0.17998 0.17769 0.17541
## X 9 0.15547 0.15190 0.14834 0.14478 0.14122 0.13765 0.13409
## X 10 0.39868 0.39452 0.39036 0.38621 0.38205 0.37790 0.37374
##
## X 1 -0.25618 -0.25136 -0.24653 -0.24171 -0.23689 -0.23206 -0.22724
## X 2 -0.33730 -0.33756 -0.33782 -0.33808 -0.33834 -0.33860 -0.33885
## X 3 -0.10278 -0.09929 -0.09581 -0.09232 -0.08884 -0.08536 -0.08187
## X 4 -0.03150 -0.02886 -0.02623 -0.02359 -0.02095 -0.01832 -0.01568
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.06956 0.06744 0.06532 0.06320 0.06108 0.05896 0.05685
## X 8 0.17312 0.17084 0.16856 0.16627 0.16399 0.16170 0.15942
## X 9 0.13053 0.12697 0.12340 0.11984 0.11628 0.11272 0.10916
## X 10 0.36958 0.36543 0.36127 0.35712 0.35296 0.34880 0.34465
##
## X 1 -0.22241 -0.21759 -0.212764 -0.207943 -0.203122 -0.19826 -0.19326
## X 2 -0.33911 -0.33937 -0.339630 -0.339886 -0.340057 -0.34044 -0.34021
## X 3 -0.07839 -0.07490 -0.071417 -0.067934 -0.064526 -0.06088 -0.05637
## X 4 -0.01304 -0.01040 -0.007765 -0.005128 -0.002465 . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.05473 0.05261 0.050489 0.048369 0.046355 0.04405 0.04175
## X 8 0.15713 0.15485 0.152561 0.150278 0.147955 0.14574 0.14392
## X 9 0.10559 0.10203 0.098468 0.094903 0.091220 0.08789 0.08445
## X 10 0.34049 0.33633 0.332178 0.328023 0.323939 0.31965 0.31526
##
## X 1 -0.18827 -0.18327 -0.17828 -0.17328 -0.16829 -0.16329 -0.15830
## X 2 -0.33998 -0.33975 -0.33953 -0.33930 -0.33907 -0.33884 -0.33861
## X 3 -0.05185 -0.04734 -0.04283 -0.03831 -0.03380 -0.02929 -0.02478
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.03945 0.03716 0.03486 0.03256 0.03026 0.02797 0.02567
## X 8 0.14210 0.14029 0.13847 0.13665 0.13483 0.13302 0.13120
## X 9 0.08101 0.07758 0.07414 0.07070 0.06726 0.06383 0.06039
## X 10 0.31087 0.30649 0.30210 0.29771 0.29333 0.28894 0.28455
##
## X 1 -0.15330 -0.14830 -0.14331 -0.138316 -0.133279 -0.12861 -0.12407
## X 2 -0.33839 -0.33816 -0.33793 -0.337698 -0.337466 -0.33589 -0.33311
## X 3 -0.02026 -0.01575 -0.01124 -0.006728 -0.002231 . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.02337 0.02108 0.01878 0.016480 0.014268 0.01225 0.01063
## X 8 0.12938 0.12756 0.12575 0.123930 0.122091 0.12013 0.11793
## X 9 0.05695 0.05351 0.05007 0.046632 0.043104 0.03946 0.03557
## X 10 0.28017 0.27578 0.27139 0.267009 0.262663 0.25874 0.25529
##
## X 1 -0.119537 -0.115001 -0.110464 -0.10593 -0.101391 -0.0968219 -0.092283
## X 2 -0.330334 -0.327555 -0.324777 -0.32200 -0.319221 -0.3164633 -0.313607
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.009021 0.007407 0.005794 0.00418 0.002566 0.0009113 .
## X 8 0.115741 0.113548 0.111356 0.10916 0.106970 0.1047601 0.102357
## X 9 0.031689 0.027806 0.023922 0.02004 0.016156 0.0122919 0.008043
## X 10 0.251831 0.248376 0.244920 0.24146 0.238009 0.2345555 0.231215
##
## X 1 -0.087638 -0.08303 -0.07863 -0.07423 -0.06983 -0.06544 -0.06104
## X 2 -0.310784 -0.30810 -0.30588 -0.30367 -0.30145 -0.29924 -0.29703
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 0.099510 0.09636 0.09206 0.08777 0.08347 0.07917 0.07488
## X 9 0.003561 . . . . . .
## X 10 0.227934 0.22423 0.21889 0.21355 0.20821 0.20287 0.19753
##
## X 1 -0.05664 -0.05224 -0.04784 -0.04344 -0.03904 -0.03465 -0.03025
## X 2 -0.29481 -0.29260 -0.29038 -0.28817 -0.28596 -0.28374 -0.28153
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 0.07058 0.06629 0.06199 0.05769 0.05340 0.04910 0.04480
## X 9 . . . . . . .
## X 10 0.19219 0.18685 0.18151 0.17617 0.17082 0.16548 0.16014
##
## X 1 -0.02585 -0.02145 -0.01705 -0.01265 -0.008255 -0.003858 .
## X 2 -0.27931 -0.27710 -0.27488 -0.27267 -0.270457 -0.268242 -0.26579
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 0.04051 0.03621 0.03192 0.02762 0.023323 0.019028 0.01478
## X 9 . . . . . . .
## X 10 0.15480 0.14946 0.14412 0.13878 0.133440 0.128099 0.12274
##
## X 1 . . . . . . .
## X 2 -0.26166 -0.2575 -0.253385 -0.2492 -0.24504 -0.24083 -0.23663
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 0.01089 0.0070 0.003101 . . . .
## X 9 . . . . . . .
## X 10 0.11722 0.1117 0.106182 0.1004 0.09388 0.08732 0.08075
##
## X 1 . . . . . . .
## X 2 -0.23242 -0.22822 -0.22402 -0.21981 -0.21561 -0.21140 -0.2072
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 . . . . . . .
## X 9 . . . . . . .
## X 10 0.07419 0.06762 0.06106 0.05449 0.04793 0.04136 0.0348
##
## X 1 . . . . . . . .
## X 2 -0.20300 -0.19879 -0.1946 -0.190383 -0.186179 -0.1815 -0.1767 -0.1719
## X 3 . . . . . . . .
## X 4 . . . . . . . .
## X 5 . . . . . . . .
## X 6 . . . . . . . .
## X 7 . . . . . . . .
## X 8 . . . . . . . .
## X 9 . . . . . . . .
## X 10 0.02823 0.02167 0.0151 0.008539 0.001974 . . .
##
## X 1 . .
## X 2 -0.167 -0.1622
## X 3 . .
## X 4 . .
## X 5 . .
## X 6 . .
## X 7 . .
## X 8 . .
## X 9 . .
## X 10 . .
fitLasso$lambda
## [1] 0.500 0.495 0.490 0.485 0.480 0.475 0.470 0.465 0.460 0.455 0.450
## [12] 0.445 0.440 0.435 0.430 0.425 0.420 0.415 0.410 0.405 0.400 0.395
## [23] 0.390 0.385 0.380 0.375 0.370 0.365 0.360 0.355 0.350 0.345 0.340
## [34] 0.335 0.330 0.325 0.320 0.315 0.310 0.305 0.300 0.295 0.290 0.285
## [45] 0.280 0.275 0.270 0.265 0.260 0.255 0.250 0.245 0.240 0.235 0.230
## [56] 0.225 0.220 0.215 0.210 0.205 0.200 0.195 0.190 0.185 0.180 0.175
## [67] 0.170 0.165 0.160 0.155 0.150 0.145 0.140 0.135 0.130 0.125 0.120
## [78] 0.115 0.110 0.105 0.100 0.095 0.090 0.085 0.080 0.075 0.070 0.065
## [89] 0.060 0.055 0.050 0.045 0.040 0.035 0.030 0.025 0.020 0.015 0.010
## [100] 0.005 0.000
# Elastic Net
alphaEnet <- 1/3
lambdasEnet <- 3 * (lambdas)/(2 * 100)
fitEnet <- glmnet(x = learnCovars, y = learnY, standardize = F, family = "gaussian",
lambda = lambdasEnet, alpha = alphaEnet)
fitEnet$beta[, c(length(lambdas):1)]
## 10 x 101 sparse Matrix of class "dgCMatrix"
## [[ suppressing 101 column names 's100', 's99', 's98' ... ]]
##
## X 1 -0.373937 -0.36295 -0.35286 -0.34315 -0.33378 -0.32473 -0.315980
## X 2 -0.326159 -0.32735 -0.32737 -0.32715 -0.32671 -0.32607 -0.325243
## X 3 -0.175653 -0.17049 -0.16592 -0.16148 -0.15716 -0.15295 -0.148857
## X 4 -0.102547 -0.09541 -0.09167 -0.08803 -0.08449 -0.08103 -0.077655
## X 5 0.007185 . . . . . .
## X 6 0.046104 0.04283 0.03569 0.02883 0.02223 0.01589 0.009781
## X 7 0.093623 0.09535 0.09650 0.09746 0.09826 0.09890 0.099396
## X 8 0.220816 0.21579 0.21251 0.20929 0.20613 0.20302 0.199962
## X 9 0.208335 0.20484 0.20069 0.19658 0.19251 0.18847 0.184482
## X 10 0.448573 0.43897 0.43078 0.42277 0.41492 0.40722 0.399689
##
## X 1 -0.307446 -0.29984 -0.29341 -0.28712 -0.28096 -0.27494 -0.26904
## X 2 -0.324293 -0.32301 -0.32133 -0.31956 -0.31771 -0.31579 -0.31380
## X 3 -0.144909 -0.14090 -0.13707 -0.13334 -0.12969 -0.12613 -0.12265
## X 4 -0.074314 -0.07156 -0.06961 -0.06765 -0.06569 -0.06373 -0.06178
## X 5 . . . . . . .
## X 6 0.003842 . . . . . .
## X 7 0.099823 0.09928 0.09747 0.09566 0.09386 0.09206 0.09025
## X 8 0.196926 0.19389 0.19066 0.18745 0.18428 0.18114 0.17802
## X 9 0.180551 0.17681 0.17311 0.16942 0.16573 0.16205 0.15838
## X 10 0.392303 0.38473 0.37680 0.36906 0.36151 0.35414 0.34694
##
## X 1 -0.26327 -0.25761 -0.25207 -0.24663 -0.24130 -0.23606 -0.23092
## X 2 -0.31176 -0.30965 -0.30750 -0.30531 -0.30307 -0.30080 -0.29850
## X 3 -0.11925 -0.11591 -0.11265 -0.10944 -0.10630 -0.10321 -0.10018
## X 4 -0.05982 -0.05786 -0.05591 -0.05396 -0.05202 -0.05008 -0.04814
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.08845 0.08665 0.08485 0.08304 0.08124 0.07944 0.07764
## X 8 0.17494 0.17189 0.16886 0.16586 0.16289 0.15994 0.15702
## X 9 0.15473 0.15109 0.14747 0.14388 0.14031 0.13676 0.13324
## X 10 0.33990 0.33301 0.32626 0.31966 0.31319 0.30685 0.30064
##
## X 1 -0.22588 -0.22092 -0.21605 -0.21127 -0.20656 -0.20194 -0.19739
## X 2 -0.29616 -0.29381 -0.29143 -0.28902 -0.28661 -0.28417 -0.28172
## X 3 -0.09720 -0.09427 -0.09138 -0.08855 -0.08575 -0.08300 -0.08029
## X 4 -0.04622 -0.04429 -0.04237 -0.04046 -0.03856 -0.03666 -0.03477
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.07584 0.07404 0.07224 0.07044 0.06864 0.06684 0.06505
## X 8 0.15412 0.15125 0.14840 0.14558 0.14278 0.14000 0.13725
## X 9 0.12974 0.12628 0.12284 0.11943 0.11605 0.11270 0.10938
## X 10 0.29454 0.28856 0.28269 0.27693 0.27127 0.26571 0.26025
##
## X 1 -0.19291 -0.18851 -0.18417 -0.17991 -0.17570 -0.17157 -0.16749
## X 2 -0.27926 -0.27679 -0.27431 -0.27183 -0.26933 -0.26684 -0.26434
## X 3 -0.07762 -0.07498 -0.07239 -0.06982 -0.06729 -0.06479 -0.06233
## X 4 -0.03289 -0.03102 -0.02915 -0.02729 -0.02544 -0.02360 -0.02177
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.06326 0.06147 0.05968 0.05789 0.05611 0.05433 0.05255
## X 8 0.13451 0.13180 0.12912 0.12645 0.12381 0.12118 0.11858
## X 9 0.10609 0.10283 0.09960 0.09640 0.09323 0.09009 0.08698
## X 10 0.25488 0.24960 0.24441 0.23930 0.23428 0.22933 0.22447
##
## X 1 -0.16347 -0.15951 -0.15561 -0.15178 -0.14799 -0.14425 -0.140559
## X 2 -0.26184 -0.25934 -0.25684 -0.25432 -0.25182 -0.24933 -0.246834
## X 3 -0.05989 -0.05748 -0.05510 -0.05275 -0.05043 -0.04813 -0.045854
## X 4 -0.01995 -0.01813 -0.01632 -0.01453 -0.01274 -0.01096 -0.009193
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.05078 0.04901 0.04725 0.04546 0.04371 0.04195 0.040208
## X 8 0.11600 0.11343 0.11089 0.10837 0.10587 0.10338 0.100916
## X 9 0.08390 0.08085 0.07782 0.07485 0.07188 0.06895 0.066039
## X 10 0.21968 0.21496 0.21032 0.20574 0.20123 0.19679 0.192415
##
## X 1 -0.13692 -0.133331 -0.129789 -0.126294 -0.1228271 -0.11934 -0.11587
## X 2 -0.24435 -0.241861 -0.239382 -0.236908 -0.2344404 -0.23178 -0.22904
## X 3 -0.04361 -0.041383 -0.039182 -0.037004 -0.0348579 -0.03237 -0.02980
## X 4 -0.00743 -0.005677 -0.003933 -0.002198 -0.0004661 . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.03847 0.036728 0.034996 0.033268 0.0315683 0.02981 0.02808
## X 8 0.09847 0.096041 0.093631 0.091240 0.0888631 0.08663 0.08445
## X 9 0.06316 0.060308 0.057484 0.054687 0.0518968 0.04922 0.04656
## X 10 0.18810 0.183846 0.179652 0.175517 0.1714430 0.16737 0.16334
##
## X 1 -0.11244 -0.10905 -0.10570 -0.10239 -0.09912 -0.09589 -0.09270
## X 2 -0.22630 -0.22358 -0.22087 -0.21817 -0.21548 -0.21281 -0.21014
## X 3 -0.02726 -0.02474 -0.02226 -0.01980 -0.01736 -0.01495 -0.01257
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.02635 0.02463 0.02292 0.02122 0.01952 0.01783 0.01615
## X 8 0.08229 0.08013 0.07799 0.07587 0.07376 0.07166 0.06957
## X 9 0.04392 0.04131 0.03872 0.03615 0.03361 0.03110 0.02861
## X 10 0.15936 0.15544 0.15157 0.14775 0.14399 0.14027 0.13659
##
## X 1 -0.08955 -0.086428 -0.08335 -0.080299 -0.077267 -0.074310 -0.07136
## X 2 -0.20749 -0.204855 -0.20223 -0.199617 -0.197023 -0.194041 -0.19078
## X 3 -0.01021 -0.007871 -0.00556 -0.003271 -0.001005 . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.01447 0.012807 0.01115 0.009496 0.007863 0.006301 0.00482
## X 8 0.06750 0.065441 0.06339 0.061361 0.059339 0.057275 0.05518
## X 9 0.02614 0.023690 0.02127 0.018866 0.016475 0.014135 0.01182
## X 10 0.13297 0.129390 0.12586 0.122364 0.118918 0.115597 0.11239
##
## X 1 -0.068442 -0.065553 -0.0626892 -0.059845 -5.701e-02 -0.05433 -0.05167
## X 2 -0.187543 -0.184337 -0.1811580 -0.177987 -1.748e-01 -0.17189 -0.16897
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 0.003342 0.001867 0.0003943 . . . .
## X 8 0.053099 0.051034 0.0489832 0.046665 4.426e-02 0.04133 0.03844
## X 9 0.009518 0.007243 0.0049798 0.002523 6.573e-06 . .
## X 10 0.109209 0.106068 0.1029637 0.099879 9.682e-02 0.09319 0.08960
##
## X 1 -0.04904 -0.04643 -0.04385 -0.04129 -0.03876 -0.03625 -0.03377
## X 2 -0.16607 -0.16320 -0.16034 -0.15751 -0.15470 -0.15192 -0.14915
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 0.03557 0.03274 0.02993 0.02715 0.02440 0.02168 0.01898
## X 9 . . . . . . .
## X 10 0.08605 0.08255 0.07909 0.07567 0.07229 0.06896 0.06566
##
## X 1 -0.03130 -0.02886 -0.02645 -0.024053 -0.021680 -0.019329 -0.016998
## X 2 -0.14641 -0.14369 -0.14099 -0.138307 -0.135648 -0.133009 -0.130391
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 0.01631 0.01367 0.01105 0.008456 0.005889 0.003346 0.000828
## X 9 . . . . . . .
## X 10 0.06240 0.05918 0.05599 0.052843 0.049731 0.046654 0.043612
##
## X 1 -0.01477 -0.01260 -0.01044 -0.008303 -0.006182 -0.004078 -0.001991
## X 2 -0.12774 -0.12509 -0.12247 -0.119859 -0.117272 -0.114706 -0.112161
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 . . . . . . .
## X 9 . . . . . . .
## X 10 0.04040 0.03712 0.03388 0.030679 0.027517 0.024393 0.021306
##
## X 1 . . . . . . .
## X 2 -0.10962 -0.1066 -0.10368 -0.100753 -0.097853 -0.094981 -0.092135
## X 3 . . . . . . .
## X 4 . . . . . . .
## X 5 . . . . . . .
## X 6 . . . . . . .
## X 7 . . . . . . .
## X 8 . . . . . . .
## X 9 . . . . . . .
## X 10 0.01825 0.0152 0.01218 0.009192 0.006241 0.003323 0.000439
##
## X 1 . . .
## X 2 -0.0892 -0.08626 -0.08336
## X 3 . . .
## X 4 . . .
## X 5 . . .
## X 6 . . .
## X 7 . . .
## X 8 . . .
## X 9 . . .
## X 10 . . .
fitEnet$lambda
## [1] 1.500 1.485 1.470 1.455 1.440 1.425 1.410 1.395 1.380 1.365 1.350
## [12] 1.335 1.320 1.305 1.290 1.275 1.260 1.245 1.230 1.215 1.200 1.185
## [23] 1.170 1.155 1.140 1.125 1.110 1.095 1.080 1.065 1.050 1.035 1.020
## [34] 1.005 0.990 0.975 0.960 0.945 0.930 0.915 0.900 0.885 0.870 0.855
## [45] 0.840 0.825 0.810 0.795 0.780 0.765 0.750 0.735 0.720 0.705 0.690
## [56] 0.675 0.660 0.645 0.630 0.615 0.600 0.585 0.570 0.555 0.540 0.525
## [67] 0.510 0.495 0.480 0.465 0.450 0.435 0.420 0.405 0.390 0.375 0.360
## [78] 0.345 0.330 0.315 0.300 0.285 0.270 0.255 0.240 0.225 0.210 0.195
## [89] 0.180 0.165 0.150 0.135 0.120 0.105 0.090 0.075 0.060 0.045 0.030
## [100] 0.015 0.000
# degrees of freedom vs lamdas
ridgeDf <- sapply(lambdas, function(lambda) {
sum(diag(learnCovars %*% solve(t(learnCovars) %*% learnCovars + lambda *
diag(x = 1, J, J)) %*% t(learnCovars)))
})
matplot(lambdas, cbind(ridgeDf, fitLasso$df[c(length(lambdas):1)], fitEnet$df[c(length(lambdas):1)]),
type = "l", lty = 1, col = 4:7, xlab = expression(lambda), ylab = "Degrees of Freedom",
main = "", cex.lab = 0.6, cex.axis = 0.6)
legend("bottomleft", c("Ridge", "Lasso", "Elastic Net"), lty = 1, col = 4:7,
cex = 0.5, box.col = NA)
# DF for elastic net appears between ridge and Lasso as it is a compromise
# of both methods
# 3b
matplot(revLambdas, t(fitRidge$beta), type = "l", lty = 1, col = 1:12, xlab = expression(lambda),
ylab = "Fitted Coefficients - Ridge", main = "", cex.lab = 0.8, cex.axis = 0.8)
legend("top", c(paste0("X", c(1:10))), lty = 1, col = 1:12, cex = 0.6, ncol = 5)
matplot(revLambdas, t(fitLasso$beta), type = "l", lty = 1, col = 1:12, xlab = expression(lambda),
ylab = "Fitted Coefficients - Lasso", main = "", cex.lab = 0.8, cex.axis = 0.8)
legend("top", c(paste0("X", c(1:10))), lty = 1, col = 1:12, cex = 0.6, ncol = 5)
matplot(revLambdas, t(fitEnet$beta), type = "l", lty = 1, col = 1:12, xlab = expression(lambda),
ylab = "Fitted Coefficients - Enet", main = "", cex.lab = 0.8, cex.axis = 0.8)
legend("top", c(paste0("X", c(1:10))), lty = 1, col = 1:12, cex = 0.6, ncol = 5)
# MSE
yHatRidge <- predict(fitRidge, learnCovars, type = "response")
yHatRidge[1:5, 1:5]
## s0 s1 s2 s3 s4
## 1 -0.098843 -0.099877 -0.100871 -0.101879 -0.102902
## 2 0.076973 0.076919 0.076827 0.076730 0.076630
## 3 -0.862281 -0.865536 -0.868894 -0.872282 -0.875700
## 4 1.254352 1.258792 1.263349 1.267940 1.272567
## 5 -0.006145 -0.006608 -0.007129 -0.007662 -0.008206
dim(yHatRidge)
## [1] 100 101
yHatLasso <- predict(fitLasso, learnCovars, type = "response")
yHatLasso[1:5, 1:5]
## s0 s1 s2 s3 s4
## 1 0.092224 9.366e-02 0.095094 0.09653 0.097964
## 2 0.001251 -2.626e-05 -0.001303 -0.00258 -0.003857
## 3 -0.097565 -1.018e-01 -0.106010 -0.11023 -0.114455
## 4 0.069237 6.999e-02 0.070737 0.07149 0.072236
## 5 0.190413 1.948e-01 0.199137 0.20350 0.207861
dim(yHatLasso)
## [1] 100 101
yHatEnet <- predict(fitEnet, learnCovars, type = "response")
yHatEnet[1:5, 1:5]
## s0 s1 s2 s3 s4
## 1 0.06883 0.06969 0.07056 0.07098 0.06885
## 2 0.02207 0.02131 0.02053 0.02006 0.02133
## 3 -0.02871 -0.03125 -0.03381 -0.03705 -0.04397
## 4 0.05701 0.05746 0.05792 0.05918 0.06489
## 5 0.11929 0.12191 0.12456 0.12729 0.13041
dim(yHatEnet)
## [1] 100 101
mseRidge <- (learnY - yHatRidge)^2
mseLasso <- (learnY - yHatLasso)^2
mseEnet <- (learnY - yHatEnet)^2
mseRidgeMean <- apply(mseRidge, 2, mean)
mseLassoMean <- apply(mseLasso, 2, mean)
mseEnetMean <- apply(mseEnet, 2, mean)
matplot(revLambdas, cbind(mseRidgeMean, mseLassoMean, mseEnetMean), type = "l",
lty = 1, col = 4:7, xlab = expression(lambda), ylab = "MSE[Y]", main = "",
cex.lab = 0.8)
legend("topleft", c("Ridge", "Lasso", "Elastic Net"), lty = 1, col = 4:7, cex = 0.7)
# 3c Test Set w MSE
testCovars <- as.matrix(testSet[, c(1:J)])
testY <- testSet$Y
yhatRidgeTest <- predict(fitRidge, testCovars, type = "response")
yhatLassoTest <- predict(fitLasso, testCovars, type = "response")
yhatEnetTest <- predict(fitEnet, testCovars, type = "response")
mseRidgeTest <- (testY - yhatRidgeTest)^2
mseLassoTest <- (testY - yhatLassoTest)^2
mseEnetTest <- (testY - yhatEnetTest)^2
mseRidgeTestMean <- apply(mseRidgeTest, 2, mean)
mseLassoTestMean <- apply(mseLassoTest, 2, mean)
mseEnetTestMean <- apply(mseEnetTest, 2, mean)
lminRidgeTest <- lambdas[which.min(mseRidgeTestMean)]
lminLassoTest <- lambdas[which.min(mseLassoTestMean)]
lminEnetTest <- lambdas[which.min(mseEnetTestMean)]
lminRidgeTest
## [1] 100
lminLassoTest
## [1] 100
lminEnetTest
## [1] 100
matplot(revLambdas, cbind(mseRidgeMean, mseRidgeTestMean, mseLassoMean, mseLassoTestMean,
mseEnetMean, mseEnetTestMean), type = "l", col = rep(2:4, each = 2), lty = rep(2:1,
3), xlab = expression(lambda), ylab = "MSE[Y]", main = "")
legend("topleft", c("Learning Set", "Test Set"), lty = 2:1, cex = 0.5, box.col = NA)
legend("top", c("Ridge", "Lasso", "Elastic Net"), lty = 1, col = 2:4, cex = 0.5,
box.col = NA)
# 3d. bias
lambdas
## [1] 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## [18] 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
## [35] 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
## [52] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
## [69] 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
## [86] 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
ridgeBias <- sapply(lambdas, function(lambda) {
solve(t(learnCovars) %*% learnCovars + lambda * diag(x = 1, J, J)) %*% (t(learnCovars) %*%
learnCovars %*% betas) - betas
})
ridgeBias[1:5, 1:5]
## [,1] [,2] [,3] [,4] [,5]
## [1,] 2.220e-16 0.0043868 0.0086359 0.012756 0.0167533
## [2,] 2.776e-16 0.0000688 0.0002449 0.000516 0.0008713
## [3,] -3.886e-16 0.0018894 0.0037006 0.005440 0.0071122
## [4,] 3.331e-16 0.0005066 0.0009525 0.001346 0.0016949
## [5,] -2.776e-16 -0.0022431 -0.0043303 -0.006278 -0.0080987
# variance
ridgeVar <- sapply(lambdas, function(lambda) {
diag(sigma^2 * solve(t(learnCovars) %*% learnCovars + lambda * diag(x = 1,
J, J)) %*% (t(learnCovars) %*% learnCovars) %*% solve(t(learnCovars) %*%
learnCovars + lambda * diag(x = 1, J, J)))
})
ridgeVar[1:5, 1:5]
## [,1] [,2] [,3] [,4] [,5]
## X 1 0.01616 0.01549 0.01487 0.01429 0.01375
## X 2 0.01781 0.01692 0.01611 0.01536 0.01467
## X 3 0.01459 0.01402 0.01349 0.01299 0.01253
## X 4 0.01728 0.01643 0.01566 0.01496 0.01430
## X 5 0.01961 0.01836 0.01724 0.01624 0.01534
# COMPUTE MSE#
ridgeMSE <- (ridgeBias)^2 + ridgeVar
plot(ridgeMSE)
# best lambda for each Beta
minLambda <- apply(ridgeMSE, 1, which.min)
minLambda
## X 1 X 2 X 3 X 4 X 5 X 6 X 7 X 8 X 9 X 10
## 14 49 55 101 101 101 101 69 31 18
matplot(lambdas, t(ridgeBias), type = "l", lty = 1, col = 1:12, xlab = "Ridge lambda",
ylab = "Bias", main = "", cex.lab = 0.6, cex.axis = 0.6)
legend("top", c(paste0("X", c(1:10))), lty = 3, col = 1:12, cex = 0.5, ncol = 5,
box.col = NA)
matplot(lambdas, t(ridgeMSE), type = "l", lty = 1, col = 1:12, xlab = "Ridge lambda",
ylab = "MSE", main = "", cex.lab = 0.6, cex.axis = 0.6)
legend("top", c(paste0("X", c(1:10))), lty = 3, col = 1:12, cex = 0.5, ncol = 5,
box.col = NA)
# e Lasso Bias, variance MSE
# To simulate these parameters for the Lasso Betas, a MonteCarlo model can
# be made to approximate the true distribution.
newX <- learnCovars %*% betas
MonteCarlo <- function(simNum) {
Y_simNum <- rnorm(n = nLearn, mean = newX, sd = 2)
fit.simNum <- glmnet(x = learnCovars, y = Y_simNum, standardize = F, family = "gaussian",
intercept = F, lambda = lambdasLasso, alpha = alphaLasso)
return(fit.simNum$beta[, c(length(lambdas):1)])
}
resultsBetas <- function(results) {
meanBetas <- NULL
biasBetas <- NULL
varBetas <- NULL
for (i in 1:10) {
betaLassoMC <- sapply(results, function(res) res[i, ])
meanBetas_i <- t(apply(betaLassoMC, 1, mean))
biasBetas_i <- meanBetas_i - betas[i]
varBetas_i <- t(apply(betaLassoMC, 1, var))
meanBetas <- rbind(meanBetas, meanBetas_i)
biasBetas <- rbind(biasBetas, biasBetas_i)
varBetas <- rbind(varBetas, varBetas_i)
}
return(list(meanBetas = meanBetas, biasBetas = biasBetas, varBetas = varBetas))
}
MCResults <- sapply(c(1:1000), MonteCarlo) #create monte carlo model
MCLassoModelBetas <- resultsBetas(MCResults)
str(MCLassoModelBetas)
## List of 3
## $ meanBetas: num [1:10, 1:101] -0.408346 -0.304515 -0.208001 -0.088569 -0.000828 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:101] "s100" "s99" "s98" "s97" ...
## $ biasBetas: num [1:10, 1:101] -0.008346 -0.004515 -0.008001 0.011431 -0.000828 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:101] "s100" "s99" "s98" "s97" ...
## $ varBetas : num [1:10, 1:101] 0.0642 0.0695 0.0559 0.0705 0.0697 ...
## ..- attr(*, "dimnames")=List of 2
## .. ..$ : NULL
## .. ..$ : chr [1:101] "s100" "s99" "s98" "s97" ...
meanBetas <- MCLassoModelBetas$meanBetas
biasBetas <- MCLassoModelBetas$biasBetas
varBetas <- MCLassoModelBetas$varBetas
mseBetas <- (biasBetas)^2 + varBetas
mseBetas
## s100 s99 s98 s97 s96 s95 s94 s93
## [1,] 0.06431 0.06289 0.06165 0.06058 0.05967 0.05888 0.05819 0.05761
## [2,] 0.06951 0.06680 0.06441 0.06232 0.06041 0.05869 0.05717 0.05585
## [3,] 0.05595 0.05342 0.05108 0.04893 0.04693 0.04506 0.04334 0.04177
## [4,] 0.07058 0.06594 0.06164 0.05767 0.05402 0.05066 0.04758 0.04476
## [5,] 0.06969 0.06333 0.05762 0.05247 0.04783 0.04366 0.03993 0.03656
## [6,] 0.08283 0.07571 0.06922 0.06329 0.05788 0.05293 0.04846 0.04441
## [7,] 0.06644 0.06241 0.05867 0.05519 0.05198 0.04900 0.04626 0.04375
## [8,] 0.07062 0.06665 0.06304 0.05977 0.05682 0.05415 0.05174 0.04958
## [9,] 0.10415 0.09885 0.09409 0.08979 0.08598 0.08256 0.07955 0.07694
## [10,] 0.08837 0.08478 0.08161 0.07879 0.07635 0.07418 0.07234 0.07079
## s92 s91 s90 s89 s88 s87 s86 s85
## [1,] 0.05712 0.05673 0.05640 0.05617 0.05603 0.05595 0.05592 0.05591
## [2,] 0.05467 0.05360 0.05263 0.05179 0.05103 0.05033 0.04969 0.04912
## [3,] 0.04034 0.03903 0.03782 0.03672 0.03571 0.03478 0.03394 0.03319
## [4,] 0.04217 0.03979 0.03759 0.03555 0.03369 0.03197 0.03042 0.02898
## [5,] 0.03355 0.03086 0.02846 0.02632 0.02440 0.02266 0.02111 0.01971
## [6,] 0.04070 0.03732 0.03425 0.03144 0.02888 0.02654 0.02440 0.02247
## [7,] 0.04143 0.03931 0.03735 0.03555 0.03387 0.03232 0.03089 0.02959
## [8,] 0.04763 0.04587 0.04425 0.04276 0.04139 0.04012 0.03896 0.03789
## [9,] 0.07460 0.07253 0.07064 0.06896 0.06743 0.06603 0.06478 0.06369
## [10,] 0.06949 0.06840 0.06744 0.06664 0.06596 0.06534 0.06485 0.06447
## s84 s83 s82 s81 s80 s79 s78 s77
## [1,] 0.05595 0.05602 0.05613 0.05628 0.05650 0.05676 0.05706 0.05739
## [2,] 0.04860 0.04811 0.04766 0.04725 0.04687 0.04653 0.04620 0.04589
## [3,] 0.03250 0.03188 0.03129 0.03076 0.03027 0.02984 0.02946 0.02912
## [4,] 0.02765 0.02640 0.02525 0.02420 0.02320 0.02229 0.02146 0.02068
## [5,] 0.01847 0.01733 0.01631 0.01539 0.01457 0.01381 0.01312 0.01248
## [6,] 0.02072 0.01912 0.01767 0.01635 0.01513 0.01402 0.01300 0.01207
## [7,] 0.02840 0.02729 0.02627 0.02534 0.02449 0.02372 0.02301 0.02235
## [8,] 0.03694 0.03607 0.03529 0.03458 0.03394 0.03337 0.03286 0.03240
## [9,] 0.06272 0.06184 0.06108 0.06041 0.05984 0.05930 0.05883 0.05841
## [10,] 0.06416 0.06393 0.06375 0.06366 0.06366 0.06372 0.06382 0.06395
## s76 s75 s74 s73 s72 s71 s70 s69
## [1,] 0.05776 0.05818 0.058637 0.05913 0.059646 0.060198 0.060790 0.061395
## [2,] 0.04559 0.04531 0.045029 0.04477 0.044524 0.044287 0.044059 0.043834
## [3,] 0.02883 0.02856 0.028320 0.02811 0.027932 0.027771 0.027628 0.027507
## [4,] 0.01997 0.01932 0.018721 0.01817 0.017667 0.017194 0.016752 0.016342
## [5,] 0.01188 0.01132 0.010804 0.01032 0.009873 0.009445 0.009043 0.008668
## [6,] 0.01121 0.01042 0.009689 0.00900 0.008356 0.007754 0.007192 0.006673
## [7,] 0.02174 0.02118 0.020656 0.02016 0.019701 0.019271 0.018866 0.018487
## [8,] 0.03199 0.03163 0.031331 0.03106 0.030823 0.030609 0.030413 0.030234
## [9,] 0.05805 0.05773 0.057453 0.05723 0.057057 0.056908 0.056777 0.056664
## [10,] 0.06410 0.06428 0.064496 0.06475 0.065026 0.065336 0.065679 0.066053
## s68 s67 s66 s65 s64 s63 s62
## [1,] 0.062035 0.062700 0.063394 0.064115 0.064835 0.065565 0.066311
## [2,] 0.043620 0.043417 0.043222 0.043031 0.042833 0.042639 0.042450
## [3,] 0.027406 0.027321 0.027256 0.027206 0.027166 0.027136 0.027119
## [4,] 0.015977 0.015635 0.015313 0.015005 0.014718 0.014447 0.014191
## [5,] 0.008312 0.007982 0.007678 0.007393 0.007124 0.006865 0.006617
## [6,] 0.006195 0.005756 0.005350 0.004970 0.004620 0.004298 0.004007
## [7,] 0.018128 0.017787 0.017468 0.017168 0.016876 0.016594 0.016327
## [8,] 0.030077 0.029933 0.029800 0.029678 0.029565 0.029458 0.029358
## [9,] 0.056581 0.056521 0.056480 0.056458 0.056447 0.056456 0.056479
## [10,] 0.066448 0.066871 0.067311 0.067765 0.068230 0.068731 0.069255
## s61 s60 s59 s58 s57 s56 s55
## [1,] 0.067067 0.067838 0.068633 0.069458 0.070295 0.071143 0.072006
## [2,] 0.042266 0.042091 0.041921 0.041755 0.041591 0.041434 0.041285
## [3,] 0.027122 0.027135 0.027166 0.027198 0.027235 0.027284 0.027341
## [4,] 0.013945 0.013712 0.013491 0.013283 0.013085 0.012893 0.012710
## [5,] 0.006380 0.006153 0.005937 0.005730 0.005532 0.005341 0.005156
## [6,] 0.003734 0.003479 0.003240 0.003017 0.002809 0.002616 0.002435
## [7,] 0.016069 0.015826 0.015596 0.015378 0.015168 0.014965 0.014770
## [8,] 0.029268 0.029189 0.029127 0.029074 0.029033 0.029005 0.028989
## [9,] 0.056508 0.056546 0.056604 0.056685 0.056778 0.056888 0.057024
## [10,] 0.069804 0.070378 0.070976 0.071597 0.072226 0.072877 0.073563
## s54 s53 s52 s51 s50 s49 s48
## [1,] 0.072877 0.073764 0.074662 0.075554 0.076457 0.077380 0.078314
## [2,] 0.041147 0.041015 0.040891 0.040769 0.040654 0.040548 0.040447
## [3,] 0.027408 0.027481 0.027565 0.027656 0.027756 0.027859 0.027972
## [4,] 0.012534 0.012367 0.012209 0.012056 0.011910 0.011775 0.011647
## [5,] 0.004978 0.004806 0.004639 0.004479 0.004322 0.004168 0.004020
## [6,] 0.002266 0.002109 0.001961 0.001824 0.001697 0.001579 0.001469
## [7,] 0.014580 0.014397 0.014218 0.014048 0.013889 0.013736 0.013586
## [8,] 0.028978 0.028968 0.028965 0.028967 0.028972 0.028988 0.029014
## [9,] 0.057179 0.057349 0.057543 0.057755 0.057974 0.058208 0.058455
## [10,] 0.074275 0.075001 0.075739 0.076494 0.077266 0.078065 0.078886
## s47 s46 s45 s44 s43 s42 s41
## [1,] 0.079257 0.080195 0.081138 0.082097 0.083072 0.0840561 0.0850527
## [2,] 0.040349 0.040259 0.040177 0.040109 0.040049 0.0399992 0.0399625
## [3,] 0.028099 0.028236 0.028379 0.028525 0.028675 0.0288249 0.0289747
## [4,] 0.011526 0.011412 0.011306 0.011208 0.011113 0.0110236 0.0109397
## [5,] 0.003879 0.003742 0.003609 0.003479 0.003353 0.0032327 0.0031154
## [6,] 0.001368 0.001273 0.001186 0.001105 0.001029 0.0009594 0.0008957
## [7,] 0.013440 0.013300 0.013164 0.013032 0.012904 0.0127775 0.0126553
## [8,] 0.029052 0.029095 0.029146 0.029202 0.029257 0.0293164 0.0293777
## [9,] 0.058717 0.058988 0.059277 0.059577 0.059902 0.0602518 0.0606160
## [10,] 0.079736 0.080608 0.081498 0.082399 0.083317 0.0842329 0.0851670
## s40 s39 s38 s37 s36 s35 s34
## [1,] 0.0860573 0.0870654 0.0880731 0.089091 0.0901111 0.0911393 0.0921601
## [2,] 0.0399356 0.0399242 0.0399225 0.039932 0.0399567 0.0399937 0.0400370
## [3,] 0.0291295 0.0292896 0.0294513 0.029613 0.0297738 0.0299350 0.0300974
## [4,] 0.0108590 0.0107812 0.0107070 0.010634 0.0105634 0.0104938 0.0104267
## [5,] 0.0030016 0.0028912 0.0027841 0.002679 0.0025772 0.0024783 0.0023827
## [6,] 0.0008371 0.0007827 0.0007321 0.000684 0.0006389 0.0005967 0.0005574
## [7,] 0.0125368 0.0124238 0.0123121 0.012203 0.0120954 0.0119917 0.0118929
## [8,] 0.0294449 0.0295171 0.0295949 0.029675 0.0297514 0.0298289 0.0299129
## [9,] 0.0609881 0.0613838 0.0617811 0.062189 0.0625961 0.0630155 0.0634602
## [10,] 0.0861077 0.0870564 0.0880259 0.089013 0.0900010 0.0909954 0.0919864
## s33 s32 s31 s30 s29 s28
## [1,] 0.0931766 0.0941840 0.0951766 0.0961553 0.0971245 0.0980869
## [2,] 0.0400926 0.0401473 0.0402165 0.0402955 0.0403882 0.0404931
## [3,] 0.0302590 0.0304178 0.0305800 0.0307484 0.0309170 0.0310766
## [4,] 0.0103623 0.0103014 0.0102444 0.0101911 0.0101417 0.0100974
## [5,] 0.0022903 0.0022007 0.0021149 0.0020319 0.0019515 0.0018740
## [6,] 0.0005207 0.0004865 0.0004544 0.0004243 0.0003961 0.0003696
## [7,] 0.0117993 0.0117109 0.0116266 0.0115453 0.0114670 0.0113895
## [8,] 0.0300003 0.0300960 0.0301981 0.0303021 0.0304102 0.0305258
## [9,] 0.0639217 0.0643927 0.0648775 0.0653800 0.0658885 0.0663940
## [10,] 0.0929885 0.0940121 0.0950540 0.0960978 0.0971527 0.0982161
## s27 s26 s25 s24 s23 s22
## [1,] 0.0990512 0.1000130 0.1009719 0.1019312 0.1028864 0.1038519
## [2,] 0.0406137 0.0407467 0.0408867 0.0410345 0.0411932 0.0413631
## [3,] 0.0312338 0.0313908 0.0315506 0.0317109 0.0318752 0.0320414
## [4,] 0.0100557 0.0100176 0.0099800 0.0099444 0.0099084 0.0098747
## [5,] 0.0017991 0.0017272 0.0016582 0.0015914 0.0015272 0.0014652
## [6,] 0.0003447 0.0003214 0.0002997 0.0002794 0.0002603 0.0002425
## [7,] 0.0113154 0.0112444 0.0111763 0.0111105 0.0110458 0.0109838
## [8,] 0.0306452 0.0307719 0.0309042 0.0310363 0.0311707 0.0313087
## [9,] 0.0668945 0.0674014 0.0679074 0.0684161 0.0689188 0.0694171
## [10,] 0.0992904 0.1003572 0.1014383 0.1025208 0.1036114 0.1047093
## s21 s20 s19 s18 s17 s16 s15
## [1,] 0.1048147 0.1057846 0.1067562 0.1077419 0.108730 0.1097109 0.1106971
## [2,] 0.0415480 0.0417413 0.0419503 0.0421687 0.042388 0.0426094 0.0428413
## [3,] 0.0322107 0.0323856 0.0325614 0.0327375 0.032916 0.0330942 0.0332670
## [4,] 0.0098421 0.0098130 0.0097850 0.0097588 0.009735 0.0097153 0.0096969
## [5,] 0.0014055 0.0013480 0.0012930 0.0012403 0.001190 0.0011412 0.0010943
## [6,] 0.0002258 0.0002098 0.0001946 0.0001802 0.000166 0.0001527 0.0001402
## [7,] 0.0109261 0.0108717 0.0108206 0.0107710 0.010721 0.0106710 0.0106237
## [8,] 0.0314467 0.0315878 0.0317275 0.0318645 0.032005 0.0321517 0.0323004
## [9,] 0.0699050 0.0703976 0.0708943 0.0713953 0.071893 0.0723718 0.0728452
## [10,] 0.1058220 0.1069353 0.1080605 0.1091695 0.110253 0.1113498 0.1124381
## s14 s13 s12 s11 s10 s9
## [1,] 0.1116835 0.1126770 0.1136850 1.147e-01 1.157e-01 1.167e-01
## [2,] 0.0430812 0.0433359 0.0435989 4.387e-02 4.415e-02 4.445e-02
## [3,] 0.0334421 0.0336112 0.0337830 3.396e-02 3.413e-02 3.430e-02
## [4,] 0.0096796 0.0096660 0.0096523 9.639e-03 9.626e-03 9.615e-03
## [5,] 0.0010490 0.0010055 0.0009633 9.223e-04 8.818e-04 8.430e-04
## [6,] 0.0001286 0.0001179 0.0001076 9.803e-05 8.912e-05 8.082e-05
## [7,] 0.0105776 0.0105313 0.0104853 1.044e-02 1.040e-02 1.036e-02
## [8,] 0.0324562 0.0326104 0.0327631 3.292e-02 3.307e-02 3.322e-02
## [9,] 0.0733239 0.0737958 0.0742610 7.471e-02 7.517e-02 7.562e-02
## [10,] 0.1135105 0.1145886 0.1156747 1.168e-01 1.179e-01 1.189e-01
## s8 s7 s6 s5 s4 s3
## [1,] 1.176e-01 1.186e-01 1.195e-01 1.204e-01 1.214e-01 0.1222780
## [2,] 4.476e-02 4.509e-02 4.543e-02 4.578e-02 4.614e-02 0.0465072
## [3,] 3.446e-02 3.462e-02 3.478e-02 3.494e-02 3.509e-02 0.0352299
## [4,] 9.606e-03 9.599e-03 9.590e-03 9.582e-03 9.575e-03 0.0095676
## [5,] 8.058e-04 7.696e-04 7.349e-04 7.014e-04 6.683e-04 0.0006363
## [6,] 7.307e-05 6.579e-05 5.896e-05 5.258e-05 4.656e-05 0.0000410
## [7,] 1.032e-02 1.029e-02 1.025e-02 1.022e-02 1.018e-02 0.0101491
## [8,] 3.338e-02 3.354e-02 3.371e-02 3.387e-02 3.403e-02 0.0341827
## [9,] 7.606e-02 7.648e-02 7.690e-02 7.732e-02 7.775e-02 0.0781810
## [10,] 1.200e-01 1.210e-01 1.221e-01 1.231e-01 1.241e-01 0.1251157
## s2 s1 s0
## [1,] 1.232e-01 0.1240407 1.249e-01
## [2,] 4.689e-02 0.0472877 4.769e-02
## [3,] 3.538e-02 0.0355234 3.567e-02
## [4,] 9.561e-03 0.0095572 9.555e-03
## [5,] 6.053e-04 0.0005752 5.463e-04
## [6,] 3.591e-05 0.0000313 2.713e-05
## [7,] 1.011e-02 0.0100806 1.005e-02
## [8,] 3.433e-02 0.0344730 3.461e-02
## [9,] 7.861e-02 0.0790311 7.944e-02
## [10,] 1.261e-01 0.1271145 1.281e-01
lambdaLassoMC <- apply(mseBetas, 1, which.min)
lambdaLassoMC
## [1] 16 63 39 101 101 101 101 49 37 21
for (i in 1:length(lambdaLassoMC)) {
x <- paste("Beta_i=", mseBetas[i, lambdaLassoMC[i]], "maxed by lambda",
lambdaLassoMC[i])
print(x)
}
## [1] "Beta_i= 0.0559114123433861 maxed by lambda 16"
## [1] "Beta_i= 0.0399224617085651 maxed by lambda 63"
## [1] "Beta_i= 0.027118889969228 maxed by lambda 39"
## [1] "Beta_i= 0.00955513332045952 maxed by lambda 101"
## [1] "Beta_i= 0.000546275897290599 maxed by lambda 101"
## [1] "Beta_i= 2.71292588924431e-05 maxed by lambda 101"
## [1] "Beta_i= 0.0100479533432973 maxed by lambda 101"
## [1] "Beta_i= 0.0289647464793083 maxed by lambda 49"
## [1] "Beta_i= 0.0564467569740846 maxed by lambda 37"
## [1] "Beta_i= 0.0636592670456925 maxed by lambda 21"
matplot(lambdas, t(biasBetas), type = "l", lty = 1, col = 1:12, xlab = "Lasso lambda",
ylab = "Bias", main = "", cex.lab = 0.6, cex.axis = 0.6)
legend("top", c(paste("X", c(1:10))), lty = 3, col = 1:12, cex = 0.5, ncol = 5,
box.col = NA)
matplot(lambdas, t(varBetas), type = "l", lty = 1, col = 1:12, xlab = "Lasso lambda",
ylab = "Variance", main = "", cex.lab = 0.6, cex.axis = 0.6)
legend("top", c(paste("X", c(1:10))), lty = 3, col = 1:12, cex = 0.5, ncol = 5,
box.col = NA)
matplot(lambdas, t(mseBetas), type = "l", lty = 1, col = 1:12, xlab = "Lasso lambdas",
ylab = "MSE", main = "", cex.lab = 0.6, cex.axis = 0.6)
legend("top", c(paste0("X", c(1:10))), lty = 3, col = 1:12, cex = 0.5, ncol = 5,
box.col = NA)