--- title: "Model fitting for variable domain functional data" output: rmarkdown::html_vignette: toc: yes fig_width: 6 vignette: > %\VignetteIndexEntry{Model fitting for variable domain functional data} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ## Introduction The VDPO package provides, among other tools, methods for analyzing variable domain functional data. This vignette demonstrates how to fit variable domain functional regression models using the `vd_fit` function, which is designed to handle various types of functional and non-functional covariates in a flexible framework. ## Data Generation ``` r library(VDPO) ``` We'll start by generating sample data using the `data_generator_vd` function. This function creates simulated data with variable domain functional covariates and additional non-functional covariates if specified. ``` r # Generate data with functional and non-functional covariates data <- data_generator_vd(beta_index = 1, use_x = TRUE, use_f = TRUE) ``` ## Model Fitting The `vd_fit` function is the main tool for fitting variable domain functional regression models. It supports various model specifications through a formula interface. ### Basic Model with Single Functional Covariate Let's start with a basic model using only the functional covariate: ``` r data <- data_generator_vd(beta_index = 1, use_x = FALSE, use_f = FALSE) formula <- y ~ ffvd(X_se, nbasis = c(10, 10, 10)) res <- vd_fit(formula = formula, data = data) ``` ### Model with Multiple Functional Covariates If your data contains multiple functional covariates, you can include them in the model: ``` r data <- data_generator_vd( beta_index = 1, use_x = FALSE, use_f = FALSE, multivariate = TRUE ) formula <- y ~ ffvd(X_se, nbasis = c(10, 10, 10)) + ffvd(Y_se, nbasis = c(10, 20, 10)) res_multi <- vd_fit(formula = formula, data = data) ``` ### Model with Functional and Non-Functional Covariates The `vd_fit` function also supports including non-functional covariates, both linear and smooth terms: ``` r data <- data_generator_vd(beta_index = 1, use_x = TRUE, use_f = TRUE) formula <- y ~ ffvd(X_se, nbasis = c(10, 10, 10)) + f(x2, nseg = 30, pord = 2, degree = 3) + x1 res_complex <- vd_fit(formula = formula, data = data) ``` In this model: - `ffvd(X_se, nbasis = c(10, 10, 10))` specifies the functional covariate - `f(x2, nseg = 30, pord = 2, degree = 3)` adds a smooth effect for `x2` - `x1` is included as a linear term ## Model Summary You can obtain a summary of the fitted model using the `summary` function: ``` r summary(res_complex) #> #> Family: gaussian #> Link function: identity #> #> #> Formula: #> NULL #> #> #> Fixed terms: #> x2 #> 1.4678062 0.9742174 -0.1430355 -3.5265899 5.2136636 -10.5801911 #> #> 6.0838833 #> #> #> Estimated degrees of freedom: #> Total edf Total #> 4.9380 4.5461 0.0001 9.4842 16.4842 #> #> R-sq.(adj) = 0.958 Deviance explained = 97.5% n = 100 #> #> Number of iterations: 1 ``` ## Working with Non-Aligned Data The `vd_fit` function can handle both aligned and non-aligned functional data. Here's an example with non-aligned data: ``` r data_not_aligned <- data_generator_vd(aligned = FALSE, beta_index = 1) formula <- y ~ ffvd(X_se, nbasis = c(10, 10, 10)) res_not_aligned <- vd_fit(formula = formula, data = data_not_aligned) ``` ## Additional functionality If you need to include an offset in your model, you can use the `offset` argument: ``` r offset <- rnorm(nrow(data$X_se)) res_with_offset <- vd_fit(formula = formula, data = data, offset = offset) ``` ### Plotting the betas A heatmap for a specific beta of the model can be obtained by using the plot function: ``` r plot(res) ``` ![](includes/VDPO-02-unnamed-chunk-9-1.png) ## Final remarks The `vd_fit` function in the VDPO package provides a flexible and powerful tool for fitting variable domain functional regression models. It supports a wide range of model specifications, including multiple functional covariates, non-functional covariates, and various distribution families. By leveraging the formula interface, users can easily specify complex models tailored to their specific analysis needs.