From cc57a367d9bc028e289e438dd59090b76622248f Mon Sep 17 00:00:00 2001 From: njtierney Date: Thu, 12 Dec 2024 13:10:17 +1100 Subject: [PATCH] add more detail to README and use same as README in "getting started" vignette --- .gitignore | 1 + DESCRIPTION | 3 + README.Rmd | 86 +++++--- README.md | 192 +++++++++++++++--- man/figures/README-greta-fit-show-preds-1.png | Bin 0 -> 76925 bytes .../README-mgcv-generate-and-fit-1.png | Bin 0 -> 36450 bytes vignettes/.gitignore | 2 + vignettes/getting-started.Rmd | 127 ++++++++++++ 8 files changed, 359 insertions(+), 52 deletions(-) create mode 100644 man/figures/README-greta-fit-show-preds-1.png create mode 100644 man/figures/README-mgcv-generate-and-fit-1.png create mode 100644 vignettes/.gitignore create mode 100644 vignettes/getting-started.Rmd diff --git a/.gitignore b/.gitignore index 234f028..0d7f03b 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ .RData .Ruserdata docs +inst/doc diff --git a/DESCRIPTION b/DESCRIPTION index fb2f1fe..b7ffa63 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -38,6 +38,8 @@ Depends: greta (>= 0.5.0), R (>= 4.1.0) Suggests: + knitr, + rmarkdown, testthat (>= 3.0.0) Encoding: UTF-8 LazyData: true @@ -46,3 +48,4 @@ Config/testthat/edition: 3 URL: https://github.com/greta-dev/greta.gam, https://greta-dev.github.io/greta.gam/ BugReports: https://github.com/greta-dev/greta.gam/issues Roxygen: list(markdown = TRUE) +VignetteBuilder: knitr diff --git a/README.Rmd b/README.Rmd index 01c4ce5..a600fe8 100644 --- a/README.Rmd +++ b/README.Rmd @@ -20,12 +20,10 @@ knitr::opts_chunk$set( [![Codecov test coverage](https://codecov.io/gh/greta-dev/greta.gam/branch/main/graph/badge.svg)](https://app.codecov.io/gh/greta-dev/greta.gam?branch=main) -greta.gam lets you use [mgcv](https://CRAN.R-project.org/package=mgcv)'s smoother functions and formula syntax to define smooth terms for use in a [greta](https://greta-stats.org/) model. -You can then define your own likelihood to complete the model, and fit it by MCMC. +greta.gam lets you use [mgcv](https://CRAN.R-project.org/package=mgcv)'s smoother functions and formula syntax to define smooth terms for use in a [greta](https://greta-stats.org/) model. You can then define your own likelihood to complete the model, and fit it by MCMC. The design and architecture of the package was done by [Nick Golding](https://github.com/goldingn), and [David L Miller](https://github.com/dill). - # Installation You can install the development version of `greta.gam` from the [R-universe](https://greta-dev.r-universe.dev/greta.gam) with: @@ -40,57 +38,93 @@ Or you can install from CRAN with: install.packages("greta.gam") ``` - ## Example -Here's a simple example adapted from the `mgcv` `?gam` help file: - -In `mgcv`: +Here's a simple example adapted from the `mgcv` `?gam` help file. In `mgcv`: ```{r mgcv-generate-and-fit} library(mgcv) -set.seed(2) +set.seed(2024 - 12 - 12) # simulate some data... dat <- gamSim(1, n = 400, dist = "normal", scale = 0.3) - +head(dat) # fit a model using gam() -b <- gam(y ~ s(x2), data = dat) +mgcv_fit <- gam(y ~ s(x2), data = dat) +mgcv_fit +summary(mgcv_fit) +## show partial residuals +plot(mgcv_fit, scheme = 1, shift = coef(mgcv_fit)[1]) ``` -Now fitting the same model in `greta`: +Now fitting the same model in `greta`. We first start by setting up the linear predictor for the smooth. That is, the right hand side of the formula: ```{r greta-fit} library(greta.gam) set.seed(2024 - 02 - 09) # setup the linear predictor for the smooth -z <- smooths(~ s(x2), data = dat) +linear_predictor <- smooths(~ s(x2), data = dat) +linear_predictor +``` -# set the distribution of the response -distribution(dat$y) <- normal(z, 1) +Now we specify the distribution of the response: -# make some prediction data -pred_dat <- data.frame(x2 = seq(0, 1, length.out = 100)) +```{r greta-fit-add-distribution} +distribution(dat$y) <- normal(mean = linear_predictor, sd = 1) +``` -# z_pred stores the predictions -z_pred <- evaluate_smooths(z, newdata = pred_dat) +Now let's make some prediction data -# build model -m <- model(z_pred) +```{r greta-fit-make-preds} +pred_dat <- data.frame( + x2 = seq(0, 1, length.out = 100) + ) + +head(pred_dat) +``` + +We run `evaluate_smooths` on the linear predicting with the new prediction data + +```{r greta-fit-eval-preds} +linear_preds <- evaluate_smooths(linear_predictor, newdata = pred_dat) +linear_preds +``` + +Now we specify that as a model object and then fit with MCMC as we do with greta normally: +```{r greta-fit-mcmc} +# build model +m <- model(linear_preds) +m # draw from the posterior -draws <- mcmc(m, n_samples = 200) +draws <- mcmc(m, n_samples = 200, verbose = FALSE) +class(draws) +# 4 chains +length(draws) + +# 200 draws, 100 predictors +dim(draws[[1]]) + +# look at the top corner +draws[[1]][1:5, 1:5] +``` -# plot the mgcv fit -plot(b, scheme = 1, shift = coef(b)[1]) + +Now let's compare the `mgcv` model fit to the `greta.gam` fit: + +```{r greta-fit-show-preds} +plot(mgcv_fit, scheme = 1, shift = coef(mgcv_fit)[1]) # add in a line for each posterior sample -apply(draws[[1]], 1, lines, x = pred_dat$x2, col = "blue") +apply(draws[[1]], 1, lines, x = pred_dat$x2, + col = adjustcolor("firebrick", alpha.f = 0.1)) # plot the data points(dat$x2, dat$y, pch = 19, cex = 0.2) ``` +The `mgcv` predictions are in the grey ribbon, and the `greta.gam` ones are in red - we can see that the greta predictions are within the range of the mgcv, which is good news! + ## Brief technical details `greta.gam` uses a few tricks from the `jagam` (Wood, 2016) routine in `mgcv` to get things to work. Here are some brief details for those interested in the internal workings. @@ -103,12 +137,10 @@ GAMs are models with Bayesian interpretations (even when fitted using "frequenti There is a slight difficulty in the Bayesian interpretation of the GAM in that, in their naïve form the priors are improper as the nullspace of the penalty (in the 1D case, usually the linear term). To get proper priors we can use one of the "tricks" employed in Marra & Wood (2011) -- that is to somehow penalise the parts of the penalty that lead to the improper prior. We take the option provided by `jagam` and create an additional penalty matrix for these terms (from an eigen-decomposition of the penalty matrix; see Marra & Wood, 2011). - -### References +# References Marra, G and Wood, SN (2011) Practical variable selection for generalized additive models. Computational Statistics and Data Analysis, 55, 2372–2387. Miller DL (2021). Bayesian views of generalized additive modelling. arXiv. Wood, SN (2016) Just Another Gibbs Additive Modeler: Interfacing JAGS and mgcv. Journal of Statistical Software 75, no. 7 - diff --git a/README.md b/README.md index 7146ad6..59fa760 100644 --- a/README.md +++ b/README.md @@ -36,25 +36,78 @@ install.packages("greta.gam") ## Example -Here’s a simple example adapted from the `mgcv` `?gam` help file: - -In `mgcv`: +Here’s a simple example adapted from the `mgcv` `?gam` help file. In +`mgcv`: ``` r library(mgcv) #> Loading required package: nlme #> This is mgcv 1.9-1. For overview type 'help("mgcv-package")'. -set.seed(2) +set.seed(2024 - 12 - 12) # simulate some data... dat <- gamSim(1, n = 400, dist = "normal", scale = 0.3) #> Gu & Wahba 4 term additive model - +head(dat) +#> y x0 x1 x2 x3 f f0 f1 +#> 1 6.189450 0.1965959 0.4034173 0.7343655 0.7300751 5.759744 1.158200 2.240804 +#> 2 11.198472 0.7164260 0.8771072 0.1027748 0.6644855 11.004222 1.555243 5.778906 +#> 3 5.100980 0.3620857 0.4601120 0.8524531 0.9341949 4.681517 1.815195 2.509852 +#> 4 7.441910 0.3910775 0.5848327 0.7292472 0.5560306 7.557107 1.884044 3.220915 +#> 5 7.617724 0.8133072 0.6959593 0.7285362 0.6814503 7.594086 1.106920 4.022560 +#> 6 7.668790 0.4279599 0.3961759 0.5802106 0.3974592 7.235281 1.948997 2.208585 +#> f2 f3 +#> 1 2.3607405 0 +#> 2 3.6700722 0 +#> 3 0.3564696 0 +#> 4 2.4521485 0 +#> 5 2.4646055 0 +#> 6 3.0776995 0 # fit a model using gam() -b <- gam(y ~ s(x2), data = dat) +mgcv_fit <- gam(y ~ s(x2), data = dat) +mgcv_fit +#> +#> Family: gaussian +#> Link function: identity +#> +#> Formula: +#> y ~ s(x2) +#> +#> Estimated degrees of freedom: +#> 8.04 total = 9.04 +#> +#> GCV score: 3.829468 +summary(mgcv_fit) +#> +#> Family: gaussian +#> Link function: identity +#> +#> Formula: +#> y ~ s(x2) +#> +#> Parametric coefficients: +#> Estimate Std. Error t value Pr(>|t|) +#> (Intercept) 8.08745 0.09673 83.6 <2e-16 *** +#> --- +#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +#> +#> Approximate significance of smooth terms: +#> edf Ref.df F p-value +#> s(x2) 8.036 8.749 91.18 <2e-16 *** +#> --- +#> Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 +#> +#> R-sq.(adj) = 0.667 Deviance explained = 67.4% +#> GCV = 3.8295 Scale est. = 3.743 n = 400 +## show partial residuals +plot(mgcv_fit, scheme = 1, shift = coef(mgcv_fit)[1]) ``` -Now fitting the same model in `greta`: + + +Now fitting the same model in `greta`. We first start by setting up the +linear predictor for the smooth. That is, the right hand side of the +formula: ``` r library(greta.gam) @@ -71,40 +124,129 @@ library(greta.gam) #> tapply set.seed(2024 - 02 - 09) # setup the linear predictor for the smooth -z <- smooths(~ s(x2), data = dat) +linear_predictor <- smooths(~ s(x2), data = dat) #> ℹ Initialising python and checking dependencies, this may take a moment. #> ✔ Initialising python and checking dependencies ... done! +linear_predictor +#> greta array +#> [,1] +#> [1,] ? +#> [2,] ? +#> [3,] ? +#> [4,] ? +#> [5,] ? +#> [6,] ? +#> [7,] ? +#> [8,] ? +#> [9,] ? +#> [10,] ? +#> +#> ℹ 390 more values +#> Use `print(n = ...)` to see more values +``` + +Now we specify the distribution of the response: + +``` r +distribution(dat$y) <- normal(mean = linear_predictor, sd = 1) +``` -# set the distribution of the response -distribution(dat$y) <- normal(z, 1) +Now let’s make some prediction data -# make some prediction data -pred_dat <- data.frame(x2 = seq(0, 1, length.out = 100)) +``` r +pred_dat <- data.frame( + x2 = seq(0, 1, length.out = 100) + ) + +head(pred_dat) +#> x2 +#> 1 0.00000000 +#> 2 0.01010101 +#> 3 0.02020202 +#> 4 0.03030303 +#> 5 0.04040404 +#> 6 0.05050505 +``` -# z_pred stores the predictions -z_pred <- evaluate_smooths(z, newdata = pred_dat) +We run `evaluate_smooths` on the linear predicting with the new +prediction data -# build model -m <- model(z_pred) +``` r +linear_preds <- evaluate_smooths(linear_predictor, newdata = pred_dat) +linear_preds +#> greta array +#> +#> [,1] +#> [1,] ? +#> [2,] ? +#> [3,] ? +#> [4,] ? +#> [5,] ? +#> [6,] ? +#> [7,] ? +#> [8,] ? +#> [9,] ? +#> [10,] ? +#> +#> ℹ 90 more values +#> Use `print(n = ...)` to see more values +``` + +Now we specify that as a model object and then fit with MCMC as we do +with greta normally: +``` r +# build model +m <- model(linear_preds) +m +#> greta model # draw from the posterior -draws <- mcmc(m, n_samples = 200) -#> running 4 chains simultaneously on up to 8 CPU cores -#> warmup 0/1000 | eta: ?s warmup == 50/1000 | eta: 29s warmup ==== 100/1000 | eta: 16s warmup ====== 150/1000 | eta: 11s warmup ======== 200/1000 | eta: 9s warmup ========== 250/1000 | eta: 7s warmup =========== 300/1000 | eta: 6s warmup ============= 350/1000 | eta: 5s warmup =============== 400/1000 | eta: 5s warmup ================= 450/1000 | eta: 4s warmup =================== 500/1000 | eta: 4s warmup ===================== 550/1000 | eta: 3s warmup ======================= 600/1000 | eta: 3s warmup ========================= 650/1000 | eta: 2s warmup =========================== 700/1000 | eta: 2s warmup ============================ 750/1000 | eta: 2s warmup ============================== 800/1000 | eta: 1s warmup ================================ 850/1000 | eta: 1s warmup ================================== 900/1000 | eta: 1s warmup ==================================== 950/1000 | eta: 0s warmup ====================================== 1000/1000 | eta: 0s -#> sampling 0/200 | eta: ?s sampling ========== 50/200 | eta: 0s sampling =================== 100/200 | eta: 0s sampling ============================ 150/200 | eta: 0s sampling ====================================== 200/200 | eta: 0s +draws <- mcmc(m, n_samples = 200, verbose = FALSE) +class(draws) +#> [1] "greta_mcmc_list" "mcmc.list" +# 4 chains +length(draws) +#> [1] 4 + +# 200 draws, 100 predictors +dim(draws[[1]]) +#> [1] 200 100 + +# look at the top corner +draws[[1]][1:5, 1:5] +#> linear_preds[1,1] linear_preds[2,1] linear_preds[3,1] linear_preds[4,1] +#> 1 3.584717 3.965028 4.346026 4.729800 +#> 2 3.685425 4.068849 4.452934 4.839685 +#> 3 3.685425 4.068849 4.452934 4.839685 +#> 4 3.461360 3.880266 4.299797 4.721838 +#> 5 3.597318 4.008570 4.420449 4.834854 +#> linear_preds[5,1] +#> 1 5.120307 +#> 2 5.232892 +#> 3 5.232892 +#> 4 5.149939 +#> 5 5.255362 +``` + +Now let’s compare the `mgcv` model fit to the `greta.gam` fit: -# plot the mgcv fit -plot(b, scheme = 1, shift = coef(b)[1]) +``` r +plot(mgcv_fit, scheme = 1, shift = coef(mgcv_fit)[1]) # add in a line for each posterior sample -apply(draws[[1]], 1, lines, x = pred_dat$x2, col = "blue") +apply(draws[[1]], 1, lines, x = pred_dat$x2, + col = adjustcolor("firebrick", alpha.f = 0.1)) #> NULL # plot the data points(dat$x2, dat$y, pch = 19, cex = 0.2) ``` - + + +The `mgcv` predictions are in the grey ribbon, and the `greta.gam` ones +are in red - we can see that the greta predictions are within the range +of the mgcv, which is good news! ## Brief technical details @@ -131,7 +273,7 @@ improper prior. We take the option provided by `jagam` and create an additional penalty matrix for these terms (from an eigen-decomposition of the penalty matrix; see Marra & Wood, 2011). -### References +# References Marra, G and Wood, SN (2011) Practical variable selection for generalized additive models. Computational Statistics and Data Analysis, diff --git a/man/figures/README-greta-fit-show-preds-1.png b/man/figures/README-greta-fit-show-preds-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c92a69ebced95cc162d0104d7f5a85ce27dfa2d GIT binary patch literal 76925 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 Q8NiR3v87R&f#dD}0tuhMp8x;= literal 0 HcmV?d00001 diff --git a/man/figures/README-mgcv-generate-and-fit-1.png b/man/figures/README-mgcv-generate-and-fit-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d772e71cea6aa8f60f43d3faffc0fb75991636a GIT binary patch literal 36450 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%0DB)DQDMqrfm425+8Y;y&Zwz_^=7TojV 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 RFADsps-&e@e#Ip4{{SfE<$VAE literal 0 HcmV?d00001 diff --git a/vignettes/.gitignore b/vignettes/.gitignore new file mode 100644 index 0000000..097b241 --- /dev/null +++ b/vignettes/.gitignore @@ -0,0 +1,2 @@ +*.html +*.R diff --git a/vignettes/getting-started.Rmd b/vignettes/getting-started.Rmd new file mode 100644 index 0000000..6c6fa76 --- /dev/null +++ b/vignettes/getting-started.Rmd @@ -0,0 +1,127 @@ +--- +title: "Getting Started" +output: rmarkdown::html_vignette +vignette: > + %\VignetteIndexEntry{getting-started} + %\VignetteEngine{knitr::rmarkdown} + %\VignetteEncoding{UTF-8} +--- + +```{r, include = FALSE} +knitr::opts_chunk$set( + eval = greta:::check_tf_version("message"), + fig.height = 5, + fig.width = 7 +) +``` + +greta.gam lets you use [mgcv](https://CRAN.R-project.org/package=mgcv)'s smoother functions and formula syntax to define smooth terms for use in a [greta](https://greta-stats.org/) model. You can then define your own likelihood to complete the model, and fit it by MCMC. + +The design and architecture of the package was done by [Nick Golding](https://github.com/goldingn), and [David L Miller](https://github.com/dill). + +## Example + +Here's a simple example adapted from the `mgcv` `?gam` help file. In `mgcv`: + +```{r mgcv-generate-and-fit} +library(mgcv) +set.seed(2024 - 12 - 12) + +# simulate some data... +dat <- gamSim(1, n = 400, dist = "normal", scale = 0.3) +head(dat) +# fit a model using gam() +mgcv_fit <- gam(y ~ s(x2), data = dat) +mgcv_fit +summary(mgcv_fit) +## show partial residuals +plot(mgcv_fit, scheme = 1, shift = coef(mgcv_fit)[1]) +``` + +Now fitting the same model in `greta`. We first start by setting up the linear predictor for the smooth. That is, the right hand side of the formula: + +```{r greta-fit} +library(greta.gam) +set.seed(2024 - 02 - 09) +# setup the linear predictor for the smooth +linear_predictor <- smooths(~ s(x2), data = dat) +linear_predictor +``` + +Now we specify the distribution of the response: + +```{r greta-fit-add-distribution} +distribution(dat$y) <- normal(mean = linear_predictor, sd = 1) +``` + +Now let's make some prediction data + +```{r greta-fit-make-preds} +pred_dat <- data.frame( + x2 = seq(0, 1, length.out = 100) + ) + +head(pred_dat) +``` + +We run `evaluate_smooths` on the linear predicting with the new prediction data + +```{r greta-fit-eval-preds} +linear_preds <- evaluate_smooths(linear_predictor, newdata = pred_dat) +linear_preds +``` + +Now we specify that as a model object and then fit with MCMC as we do with greta normally: + +```{r greta-fit-mcmc} +# build model +m <- model(linear_preds) +m +# draw from the posterior +draws <- mcmc(m, n_samples = 200, verbose = FALSE) +class(draws) +# 4 chains +length(draws) + +# 200 draws, 100 predictors +dim(draws[[1]]) + +# look at the top corner +draws[[1]][1:5, 1:5] +``` + + +Now let's compare the `mgcv` model fit to the `greta.gam` fit: + +```{r greta-fit-plot-greta-v-mgcv} +plot(mgcv_fit, scheme = 1, shift = coef(mgcv_fit)[1]) + +# add in a line for each posterior sample +apply(draws[[1]], 1, lines, x = pred_dat$x2, + col = adjustcolor("firebrick", alpha.f = 0.1)) + +# plot the data +points(dat$x2, dat$y, pch = 19, cex = 0.2) +``` + +The `mgcv` predictions are in the grey ribbon, and the `greta.gam` ones are in red - we can see that the greta predictions are within the range of the mgcv, which is good news! + +## Brief technical details + +`greta.gam` uses a few tricks from the `jagam` (Wood, 2016) routine in `mgcv` to get things to work. Here are some brief details for those interested in the internal workings. + +### Bayesian interpretation of the GAM + +GAMs are models with Bayesian interpretations (even when fitted using "frequentist" methods). One can think of the smoother penalty matrix as a prior precision matrix in a Bayesian random effects model. Design matrices are constructed exactly as in the frequentist case. See [Miller (2021)](https://arxiv.org/abs/1902.01330) for more background on this. + +### Penalty matrices + +There is a slight difficulty in the Bayesian interpretation of the GAM in that, in their naïve form the priors are improper as the nullspace of the penalty (in the 1D case, usually the linear term). To get proper priors we can use one of the "tricks" employed in Marra & Wood (2011) -- that is to somehow penalise the parts of the penalty that lead to the improper prior. We take the option provided by `jagam` and create an additional penalty matrix for these terms (from an eigen-decomposition of the penalty matrix; see Marra & Wood, 2011). + +# References + +Marra, G and Wood, SN (2011) Practical variable selection for generalized additive models. Computational Statistics and Data Analysis, 55, 2372–2387. + +Miller DL (2021). Bayesian views of generalized additive modelling. arXiv. + +Wood, SN (2016) Just Another Gibbs Additive Modeler: Interfacing JAGS and mgcv. Journal of Statistical Software 75, no. 7