library(gglasso)
# load bardet data set
data(bardet)
group1 <- rep(1:20, each = 5)
fit_ls <- gglasso(x = bardet$x, y = bardet$y, group = group1, loss = "ls")
plot(fit_ls)## s89 s90 s91 s92 s93
## (Intercept) 8.099354325 8.098922472 8.098531366 8.098175719 8.097849146
## V1 -0.119580203 -0.120877799 -0.122079683 -0.123223779 -0.124310183
## V2 -0.113742329 -0.114834411 -0.115853997 -0.116837630 -0.117782854
## V3 -0.002584792 -0.003487571 -0.004328519 -0.005134215 -0.005904892
## V4 -0.084771705 -0.088304073 -0.091674509 -0.094978960 -0.098212775
## s94 s95 s96 s97 s98
## (Intercept) 8.097574095 8.097295166 8.097058895 8.096833259 8.096637676
## V1 -0.125274109 -0.126284595 -0.127173301 -0.128011016 -0.128738414
## V2 -0.118630121 -0.119526679 -0.120326451 -0.121086672 -0.121754134
## V3 -0.006593702 -0.007323107 -0.007970047 -0.008583011 -0.009116809
## V4 -0.101161988 -0.104349829 -0.107241330 -0.110045942 -0.112543755
## s99
## (Intercept) 8.096455264
## V1 -0.129453437
## V2 -0.122415680
## V3 -0.009645386
## V4 -0.115058449
## 1
## (Intercept) 8.280851e+00
## V1 1.196239e-02
## V2 -2.452787e-02
## V3 1.241058e-02
## V4 3.920318e-03
## V5 -4.806131e-02
## V6 0.000000e+00
## V7 0.000000e+00
## V8 0.000000e+00
## V9 0.000000e+00
## V10 0.000000e+00
## V11 0.000000e+00
## V12 0.000000e+00
## V13 0.000000e+00
## V14 0.000000e+00
## V15 0.000000e+00
## V16 1.845315e-02
## V17 2.924708e-02
## V18 -1.455200e-02
## V19 -4.419086e-03
## V20 -6.832689e-02
## V21 9.629999e-02
## V22 7.437571e-02
## V23 -6.394427e-02
## V24 -7.591950e-03
## V25 -2.461518e-01
## V26 4.541678e-02
## V27 4.109632e-02
## V28 5.474245e-04
## V29 1.438106e-03
## V30 -1.113444e-01
## V31 0.000000e+00
## V32 0.000000e+00
## V33 0.000000e+00
## V34 0.000000e+00
## V35 0.000000e+00
## V36 2.232783e-02
## V37 -1.594426e-02
## V38 4.398460e-03
## V39 6.166751e-03
## V40 -4.316958e-02
## V41 0.000000e+00
## V42 0.000000e+00
## V43 0.000000e+00
## V44 0.000000e+00
## V45 0.000000e+00
## V46 -2.395057e-03
## V47 -8.104642e-05
## V48 5.196593e-03
## V49 2.213853e-03
## V50 5.226833e-04
## V51 -1.469723e-02
## V52 -2.402427e-02
## V53 7.414392e-02
## V54 1.068612e-01
## V55 3.447876e-02
## V56 0.000000e+00
## V57 0.000000e+00
## V58 0.000000e+00
## V59 0.000000e+00
## V60 0.000000e+00
## V61 -4.015909e-03
## V62 -1.852845e-03
## V63 3.589544e-03
## V64 7.403202e-03
## V65 9.800909e-03
## V66 -1.161557e-02
## V67 -3.441500e-03
## V68 2.662527e-02
## V69 1.912621e-02
## V70 2.041546e-03
## V71 -7.293704e-04
## V72 -1.009915e-03
## V73 2.494211e-03
## V74 4.880232e-04
## V75 1.643744e-03
## V76 0.000000e+00
## V77 0.000000e+00
## V78 0.000000e+00
## V79 0.000000e+00
## V80 0.000000e+00
## V81 0.000000e+00
## V82 0.000000e+00
## V83 0.000000e+00
## V84 0.000000e+00
## V85 0.000000e+00
## V86 1.370881e-03
## V87 -2.029708e-03
## V88 6.253484e-04
## V89 9.353505e-04
## V90 -4.162946e-03
## V91 0.000000e+00
## V92 0.000000e+00
## V93 0.000000e+00
## V94 0.000000e+00
## V95 0.000000e+00
## V96 0.000000e+00
## V97 0.000000e+00
## V98 0.000000e+00
## V99 0.000000e+00
## V100 0.000000e+00
We can also perform weighted least-squares regression by specifying
loss='wls', and providing a \(n
\times n\) weight matrix in the weights argument,
where \(n\) is the number of
observations. Note that cross-validation is NOT
IMPLEMENTED for loss='wls'.
# generate weight matrix
times <- seq_along(bardet$y)
rho <- 0.5
sigma <- 1
H <- abs(outer(times, times, "-"))
V <- sigma * rho^H
p <- nrow(V)
V[cbind(1:p, 1:p)] <- V[cbind(1:p, 1:p)] * sigma
# reduce eps to speed up convergence for vignette build
fit_wls <- gglasso(x = bardet$x, y = bardet$y, group = group1, loss = "wls",
weight = V, eps = 1e-4)
plot(fit_wls)## s89 s90 s91 s92 s93
## (Intercept) 8.09429262 8.09340481 8.09254573 8.09170743 8.09089247
## V1 -0.13922372 -0.14077803 -0.14222609 -0.14359110 -0.14487482
## V2 -0.15966042 -0.16117772 -0.16261019 -0.16397683 -0.16527730
## V3 0.03917529 0.03880296 0.03847035 0.03816594 0.03788642
## V4 -0.16548208 -0.17057112 -0.17546237 -0.18021267 -0.18481370
## s94 s95 s96 s97 s98
## (Intercept) 8.09011527 8.08935394 8.08862146 8.08793054 8.08727098
## V1 -0.14606257 -0.14719352 -0.14824987 -0.14921624 -0.15011520
## V2 -0.16649386 -0.16766459 -0.16877053 -0.16979410 -0.17075592
## V3 0.03763241 0.03739356 0.03717453 0.03697953 0.03680099
## V4 -0.18919074 -0.19347289 -0.19758499 -0.20145156 -0.20513769
## s99
## (Intercept) 8.08664325
## V1 -0.15094837
## V2 -0.17165664
## V3 0.03663899
## V4 -0.20863833