--- title: "Advanced examples" output: rmarkdown::html_vignette description: | Examples using advanced features of the package. vignette: > %\VignetteIndexEntry{Advanced examples} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set(collapse = TRUE, comment = "#>", eval = FALSE) library(fastcpd) ``` ```{r lasso_setup} set.seed(1) p_true <- 6 p <- 50 x <- mvtnorm::rmvnorm(480, rep(0, p), diag(p)) theta_0 <- rbind( runif(p_true, -5, -2), runif(p_true, -3, 3), runif(p_true, 2, 5), runif(p_true, -5, 5) ) theta_0 <- cbind(theta_0, matrix(0, ncol = p - p_true, nrow = 4)) y <- c( x[1:80, ] %*% theta_0[1, ] + rnorm(80, 0, 1), x[81:200, ] %*% theta_0[2, ] + rnorm(120, 0, 1), x[201:320, ] %*% theta_0[3, ] + rnorm(120, 0, 1), x[321:480, ] %*% theta_0[4, ] + rnorm(160, 0, 1) ) ``` ```{r lasso} result <- fastcpd( formula = y ~ . - 1, data = data.frame(y = y, x = x), family = "lasso", r.progress = FALSE ) summary(result) #> #> Call: #> fastcpd(formula = y ~ . - 1, data = data.frame(y = y, x = x), #> family = "lasso", r.progress = FALSE) #> #> Change points: #> 79 199 317 #> #> Cost values: #> 125.1501 155.4486 160.4363 274.2228 #> #> Parameters: #> 50 x 4 sparse Matrix of class "dgCMatrix" #> segment 1 segment 2 segment 3 segment 4 #> [1,] -2.580352409 -2.428039439 4.900559900 -2.749985232 #> [2,] -2.668688731 -2.473539196 4.198921150 3.057387294 #> [3,] -4.354248176 0.983488542 5.054325016 3.735347545 #> [4,] -4.662566697 0.279505605 2.628354481 -3.216027015 #> [5,] -4.820139326 0.496565230 4.611603593 3.231304715 #> [6,] -3.860308911 -2.576467859 3.304903523 4.577405578 #> [7,] 0.117234534 -0.219145186 -0.015091394 -0.086048806 #> [8,] 0.117552281 0.035701649 -0.127986984 -0.138807479 #> [9,] -0.188756652 0.133653604 0.038250526 -0.037807789 #> [10,] -0.074530965 0.010173561 0.021979969 -0.047707753 #> [11,] -0.061721013 -0.176769170 -0.059312332 -0.135633390 #> [12,] 0.021874954 -0.133777712 0.028889403 -0.130808437 #> [13,] 0.067777695 0.129187849 -0.026100120 0.002593292 #> [14,] -0.122270920 0.110865328 0.084858637 0.233903944 #> [15,] -0.014192027 0.086100909 0.030268607 0.243927135 #> [16,] -0.135970691 -0.043211895 -0.032229963 -0.134840827 #> [17,] 0.007608049 -0.079445537 -0.013675459 0.102010778 #> [18,] -0.010343806 0.132392790 -0.151237533 -0.123955960 #> [19,] 0.252797503 0.253113165 -0.197620792 0.099319824 #> [20,] -0.044505498 -0.049962311 0.233024977 0.176211754 #> [21,] 0.084292730 0.366833682 -0.220176991 -0.035984666 #> [22,] -0.373913824 -0.060767726 0.036430343 -0.105248408 #> [23,] 0.316816197 -0.191114879 -0.127549606 -0.112775343 #> [24,] 0.008174405 0.158066938 -0.121000263 0.232613924 #> [25,] -0.388590727 0.098542973 -0.045207238 0.003838229 #> [26,] -0.109916673 0.042028223 0.031122592 -0.173521656 #> [27,] -0.040845604 0.023057708 0.067839093 0.084198705 #> [28,] 0.080696347 -0.097192796 0.099373268 -0.166716428 #> [29,] -0.117530646 0.002589360 0.051425084 0.098244052 #> [30,] -0.037935138 -0.091390269 0.154099931 0.100237663 #> [31,] 0.109674339 0.158620750 -0.181802621 -0.112714822 #> [32,] 0.069971569 -0.425139230 -0.020032195 -0.193571920 #> [33,] 0.050674415 0.050518682 -0.010950361 -0.068936556 #> [34,] 0.065490413 0.142178491 0.174034864 0.072663828 #> [35,] -0.045676268 -0.057128729 0.050522160 -0.165689753 #> [36,] 0.368217440 0.096573493 0.120128008 0.020252183 #> [37,] 0.037286542 -0.056101952 -0.018563948 0.263830281 #> [38,] 0.094379823 -0.263914331 -0.002747609 -0.010850423 #> [39,] 0.153890231 0.071449851 -0.075881371 -0.060456457 #> [40,] -0.146742186 -0.117294226 -0.255229801 -0.124537184 #> [41,] -0.274840831 0.009051742 0.124862149 0.074433697 #> [42,] -0.008508998 0.110465493 0.215727137 0.269240087 #> [43,] 0.014213371 -0.041499271 0.097848087 0.105722611 #> [44,] -0.080890432 0.094198355 0.004240823 -0.187634605 #> [45,] 0.051925330 -0.007981636 0.044460236 -0.066537564 #> [46,] 0.213031014 0.168676929 0.097190703 0.046563300 #> [47,] 0.175716867 0.045500673 0.175902385 -0.030590597 #> [48,] -0.040155598 -0.120432098 -0.137764051 -0.088812037 #> [49,] 0.164103981 0.024976184 0.015955563 -0.232780151 #> [50,] -0.103164763 -0.135032022 0.029553283 0.267389634 ``` # Multiple epochs ```{r lasso_multiple_epochs_setup, include = FALSE} set.seed(1) p_true <- 6 p <- 50 x <- mvtnorm::rmvnorm(480, rep(0, p), diag(p)) theta_0 <- rbind( runif(p_true, -5, -2), runif(p_true, -3, 3), runif(p_true, 2, 5), runif(p_true, -5, 5) ) theta_0 <- cbind(theta_0, matrix(0, ncol = p - p_true, nrow = 4)) y <- c( x[1:80, ] %*% theta_0[1, ] + rnorm(80, 0, 1), x[81:200, ] %*% theta_0[2, ] + rnorm(120, 0, 1), x[201:320, ] %*% theta_0[3, ] + rnorm(120, 0, 1), x[321:480, ] %*% theta_0[4, ] + rnorm(160, 0, 1) ) ``` ```{r lasso_multiple_epochs} result_multiple_epochs <- fastcpd( formula = y ~ . - 1, data = data.frame(y = y, x = x), family = "lasso", multiple_epochs = function(segment_length) if (segment_length < 20) 1 else 0, r.progress = FALSE ) summary(result_multiple_epochs) #> #> Call: #> fastcpd(formula = y ~ . - 1, data = data.frame(y = y, x = x), #> family = "lasso", multiple_epochs = function(segment_length) if (segment_length < #> 20) 1 else 0, r.progress = FALSE) #> #> Change points: #> 79 199 320 #> #> Cost values: #> 125.1501 155.4486 164.1284 177.9478 #> #> Parameters: #> 50 x 4 sparse Matrix of class "dgCMatrix" #> segment 1 segment 2 segment 3 segment 4 #> [1,] -2.580352409 -2.428039439 4.898713954 -3.006202485 #> [2,] -2.668688731 -2.473539196 4.209460633 3.096081968 #> [3,] -4.354248176 0.983488542 5.011651466 3.718141515 #> [4,] -4.662566697 0.279505605 2.623742216 -3.130632564 #> [5,] -4.820139326 0.496565230 4.616444609 3.175562645 #> [6,] -3.860308911 -2.576467859 3.336301862 4.342890940 #> [7,] 0.117234534 -0.219145186 -0.039861426 -0.016395368 #> [8,] 0.117552281 0.035701649 -0.075921029 -0.022022294 #> [9,] -0.188756652 0.133653604 0.052907904 0.070683538 #> [10,] -0.074530965 0.010173561 0.003352400 0.012791767 #> [11,] -0.061721013 -0.176769170 -0.044814526 -0.166042077 #> [12,] 0.021874954 -0.133777712 0.103526247 0.077820866 #> [13,] 0.067777695 0.129187849 -0.072098209 0.077436979 #> [14,] -0.122270920 0.110865328 0.095306898 0.114046507 #> [15,] -0.014192027 0.086100909 0.006037145 -0.015966855 #> [16,] -0.135970691 -0.043211895 0.026749332 -0.095751983 #> [17,] 0.007608049 -0.079445537 -0.003130812 -0.010689927 #> [18,] -0.010343806 0.132392790 -0.156866781 -0.138057246 #> [19,] 0.252797503 0.253113165 -0.167436237 0.158967697 #> [20,] -0.044505498 -0.049962311 0.177560915 0.030169316 #> [21,] 0.084292730 0.366833682 -0.224849869 -0.181503446 #> [22,] -0.373913824 -0.060767726 0.003860114 0.045649997 #> [23,] 0.316816197 -0.191114879 -0.118941359 -0.025305755 #> [24,] 0.008174405 0.158066938 -0.135680402 -0.137396624 #> [25,] -0.388590727 0.098542973 -0.064383316 0.022336212 #> [26,] -0.109916673 0.042028223 0.017815134 -0.059782090 #> [27,] -0.040845604 0.023057708 0.053296378 0.030431412 #> [28,] 0.080696347 -0.097192796 0.122665492 -0.080706668 #> [29,] -0.117530646 0.002589360 0.062791240 -0.051542901 #> [30,] -0.037935138 -0.091390269 0.122976438 0.048892128 #> [31,] 0.109674339 0.158620750 -0.181785506 0.075434045 #> [32,] 0.069971569 -0.425139230 0.030472706 0.033375101 #> [33,] 0.050674415 0.050518682 0.034305534 0.070983107 #> [34,] 0.065490413 0.142178491 0.164899160 0.032575571 #> [35,] -0.045676268 -0.057128729 0.022794426 -0.134534869 #> [36,] 0.368217440 0.096573493 0.114099285 -0.020673038 #> [37,] 0.037286542 -0.056101952 -0.023029273 0.102043216 #> [38,] 0.094379823 -0.263914331 0.003288922 -0.052763017 #> [39,] 0.153890231 0.071449851 -0.097509620 -0.120642848 #> [40,] -0.146742186 -0.117294226 -0.208865036 -0.045775725 #> [41,] -0.274840831 0.009051742 0.127312770 0.123910218 #> [42,] -0.008508998 0.110465493 0.118453225 -0.005505113 #> [43,] 0.014213371 -0.041499271 0.113699538 -0.056131976 #> [44,] -0.080890432 0.094198355 0.051912519 0.013524984 #> [45,] 0.051925330 -0.007981636 0.085966205 -0.033628617 #> [46,] 0.213031014 0.168676929 0.035738422 -0.029655833 #> [47,] 0.175716867 0.045500673 0.175504506 0.119507574 #> [48,] -0.040155598 -0.120432098 -0.139162874 -0.054349982 #> [49,] 0.164103981 0.024976184 0.029374949 -0.056092814 #> [50,] -0.103164763 -0.135032022 0.047475507 -0.032491294 ``` # Vanilla percentage ```{r lasso_vanilla_percentage_setup, include = FALSE} set.seed(1) p_true <- 6 p <- 50 x <- mvtnorm::rmvnorm(480, rep(0, p), diag(p)) theta_0 <- rbind( runif(p_true, -5, -2), runif(p_true, -3, 3), runif(p_true, 2, 5), runif(p_true, -5, 5) ) theta_0 <- cbind(theta_0, matrix(0, ncol = p - p_true, nrow = 4)) y <- c( x[1:80, ] %*% theta_0[1, ] + rnorm(80, 0, 1), x[81:200, ] %*% theta_0[2, ] + rnorm(120, 0, 1), x[201:320, ] %*% theta_0[3, ] + rnorm(120, 0, 1), x[321:480, ] %*% theta_0[4, ] + rnorm(160, 0, 1) ) ``` ```{r lasso_vanilla_percentage} result_vanilla_percentage <- fastcpd( formula = y ~ . - 1, data = data.frame(y = y, x = x), family = "lasso", vanilla_percentage = 0.2, r.progress = FALSE ) summary(result_vanilla_percentage) #> #> Call: #> fastcpd(formula = y ~ . - 1, data = data.frame(y = y, x = x), #> family = "lasso", vanilla_percentage = 0.2, r.progress = FALSE) #> #> Change points: #> 79 199 317 #> #> Cost values: #> 125.1501 155.4486 160.4363 274.2228 #> #> Parameters: #> 50 x 4 sparse Matrix of class "dgCMatrix" #> segment 1 segment 2 segment 3 segment 4 #> [1,] -2.580352409 -2.428039439 4.900559900 -2.749985232 #> [2,] -2.668688731 -2.473539196 4.198921150 3.057387294 #> [3,] -4.354248176 0.983488542 5.054325016 3.735347545 #> [4,] -4.662566697 0.279505605 2.628354481 -3.216027015 #> [5,] -4.820139326 0.496565230 4.611603593 3.231304715 #> [6,] -3.860308911 -2.576467859 3.304903523 4.577405578 #> [7,] 0.117234534 -0.219145186 -0.015091394 -0.086048806 #> [8,] 0.117552281 0.035701649 -0.127986984 -0.138807479 #> [9,] -0.188756652 0.133653604 0.038250526 -0.037807789 #> [10,] -0.074530965 0.010173561 0.021979969 -0.047707753 #> [11,] -0.061721013 -0.176769170 -0.059312332 -0.135633390 #> [12,] 0.021874954 -0.133777712 0.028889403 -0.130808437 #> [13,] 0.067777695 0.129187849 -0.026100120 0.002593292 #> [14,] -0.122270920 0.110865328 0.084858637 0.233903944 #> [15,] -0.014192027 0.086100909 0.030268607 0.243927135 #> [16,] -0.135970691 -0.043211895 -0.032229963 -0.134840827 #> [17,] 0.007608049 -0.079445537 -0.013675459 0.102010778 #> [18,] -0.010343806 0.132392790 -0.151237533 -0.123955960 #> [19,] 0.252797503 0.253113165 -0.197620792 0.099319824 #> [20,] -0.044505498 -0.049962311 0.233024977 0.176211754 #> [21,] 0.084292730 0.366833682 -0.220176991 -0.035984666 #> [22,] -0.373913824 -0.060767726 0.036430343 -0.105248408 #> [23,] 0.316816197 -0.191114879 -0.127549606 -0.112775343 #> [24,] 0.008174405 0.158066938 -0.121000263 0.232613924 #> [25,] -0.388590727 0.098542973 -0.045207238 0.003838229 #> [26,] -0.109916673 0.042028223 0.031122592 -0.173521656 #> [27,] -0.040845604 0.023057708 0.067839093 0.084198705 #> [28,] 0.080696347 -0.097192796 0.099373268 -0.166716428 #> [29,] -0.117530646 0.002589360 0.051425084 0.098244052 #> [30,] -0.037935138 -0.091390269 0.154099931 0.100237663 #> [31,] 0.109674339 0.158620750 -0.181802621 -0.112714822 #> [32,] 0.069971569 -0.425139230 -0.020032195 -0.193571920 #> [33,] 0.050674415 0.050518682 -0.010950361 -0.068936556 #> [34,] 0.065490413 0.142178491 0.174034864 0.072663828 #> [35,] -0.045676268 -0.057128729 0.050522160 -0.165689753 #> [36,] 0.368217440 0.096573493 0.120128008 0.020252183 #> [37,] 0.037286542 -0.056101952 -0.018563948 0.263830281 #> [38,] 0.094379823 -0.263914331 -0.002747609 -0.010850423 #> [39,] 0.153890231 0.071449851 -0.075881371 -0.060456457 #> [40,] -0.146742186 -0.117294226 -0.255229801 -0.124537184 #> [41,] -0.274840831 0.009051742 0.124862149 0.074433697 #> [42,] -0.008508998 0.110465493 0.215727137 0.269240087 #> [43,] 0.014213371 -0.041499271 0.097848087 0.105722611 #> [44,] -0.080890432 0.094198355 0.004240823 -0.187634605 #> [45,] 0.051925330 -0.007981636 0.044460236 -0.066537564 #> [46,] 0.213031014 0.168676929 0.097190703 0.046563300 #> [47,] 0.175716867 0.045500673 0.175902385 -0.030590597 #> [48,] -0.040155598 -0.120432098 -0.137764051 -0.088812037 #> [49,] 0.164103981 0.024976184 0.015955563 -0.232780151 #> [50,] -0.103164763 -0.135032022 0.029553283 0.267389634 ``` # Notes The evaluation of this vignette is set to be `FALSE`. # Appendix: all code snippets ```{r ref.label = knitr::all_labels(), echo = TRUE, eval = FALSE} ```