knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The goal of the OSplines
package is to efficiently implement model-based smoothing with the integrated Wiener's process, within a variety of Bayesian hierarchical models.
You can install the development version of OSplines from GitHub with:
# install.packages("devtools") devtools::install_github("https://github.com/Smoothing-IWP/OSplines/tree/development")
This is a basic example which shows you how to use OSplines
to fit and
analyze some models, we consider the following data set of COVID-19 mortality in Canada, which is available in the package:
library(OSplines) ## basic example code head(covid_canada)
We can fit a model with $\text{IWP}_3(\sigma)$ prior using the function model_fit
:
fit_result <- model_fit(new_deaths ~ weekdays1 + weekdays2 + weekdays3 + weekdays4 + weekdays5 + weekdays6 + f(smoothing_var = t, model = "IWP", order = 3, k = 30), data = covid_canada, method = "aghq", family = "Poisson")
We can take a look at the posterior summary of this model:
summary(fit_result)
We can also see the inferred function $f$:
plot(fit_result)
We can use the predict
function to obtain the posterior summary of $f$ or its derivative at new_data
.
For the function $f$:
predict_f <- predict(fit_result, variable = "t", newdata = data.frame(t = seq(from = 605, to = 617, by = 0.1))) predict_f %>% ggplot(aes(x = x)) + geom_line(aes(y = mean), lty = "solid") + geom_line(aes(y = plower), lty = "dashed") + geom_line(aes(y = pupper), lty = "dashed") + theme_classic()
For the first derivative:
predict_f1st <- predict(fit_result, variable = "t", newdata = data.frame(t = seq(from = 605, to = 617, by = 0.1)), degree = 1) predict_f1st %>% ggplot(aes(x = x)) + geom_line(aes(y = mean), lty = "solid") + geom_line(aes(y = plower), lty = "dashed") + geom_line(aes(y = pupper), lty = "dashed") + theme_classic()
For the second derivative:
predict_f2nd <- predict(fit_result, variable = "t", newdata = data.frame(t = seq(from = 605, to = 617, by = 0.1)), degree = 2) predict_f2nd %>% ggplot(aes(x = x)) + geom_line(aes(y = mean), lty = "solid") + geom_line(aes(y = plower), lty = "dashed") + geom_line(aes(y = pupper), lty = "dashed") + theme_classic()
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.