--- title: "TensorMCMC: Introduction and Examples" author: "Ritwick Mondal" output: rmarkdown::html_vignette vignette: > %\VignetteIndexEntry{TensorMCMC} %\VignetteEngine{knitr::rmarkdown} %\VignetteEncoding{UTF-8} --- ```{r, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>" ) options(rmarkdown.html_vignette.check_title = FALSE) ``` # Introduction **TensorMCMC** provides low-rank tensor regression for tensor predictors and scalar covariates. The package uses simple stochastic updates (inspired by MCMC) and includes fast C++ acceleration for coefficient updates and predictions.This vignette demonstrates how to fit a tensor regression model, make predictions, and evaluate performance using cross-validation. # Installation (GitHub) install.packages("devtools") devtools::install_github("Ritwick2012/TensorMCMC") # Load the package ```{r setup} library(TensorMCMC) ``` # Example ```{r example, echo=TRUE, eval=TRUE} set.seed(2026) n <- 100 # number of observations p <- 7 # first tensor dimension d <- 5 # second tensor dimension pgamma <- 2 # number of scalar covariates x <- array(rnorm(n*p*d), dim = c(n,p,d)) #Tensor predictor array z <- matrix(rnorm(n*pgamma), n, pgamma) #Scalar covariates y <- rnorm(n) #Response ``` ```{r} ## Fitting Tensor Regression fit <- tensor.reg(z, x, y, nsweep = 10, rank = 2) fit ## Predictions pred <- predict_tensor_reg(fit, x, z) head(pred) ## Cross-Validation cv <- cv.tensor.reg(x, z, y, ranks = 1:2, nsweep = 5) cv ``` ```{r plot-pred, fig.width=8, fig.height=6} ## Scatter plot of predicted vs actual plot(y, pred, pch = 19, col = "blue", main = "Predicted vs Actual Response", xlab = "Actual y", ylab = "Predicted y") abline(a = 0, b = 1, col = "red", lty = 2) ``` ```{r scatter-x1-pred, fig.width=8, fig.height=6} x1 <- x[,1,1] ## Scatter plot of Predicted vs Tensor Covariate plot(x1, pred, pch = 19, col = "purple", main = "Predicted vs Tensor Covariate", xlab = "Tensor Covariate", ylab = "Predicted y") abline(lm(pred ~ x1), col = "green", lty = 2) ```