--- title: "SLSEdesign" subtitle: "Optimal Design under Second-order Least Squares Estimator" author: | | Chi-Kuang Yeh and Julie Zhou | University of Waterloo and University of Victoria date: "`r Sys.Date()`" output: rmarkdown::html_vignette: toc: true fig_caption: yes vignette: > %\VignetteIndexEntry{SLSEdesign} %\VignetteEncoding{UTF-8} %\VignetteEngine{knitr::rmarkdown} --- \newcommand{\cv}{\operatorname{cv}} ```{r setup, include = FALSE} knitr::opts_chunk$set( collapse = TRUE, comment = "#>", cache = TRUE ) original <- options(digits = 3) ``` # Installation ```{r load package} # required dependencies require(SLSEdesign) require(CVXR) ``` # Specify the input for the program 1. **N**: Number of design points 2. **S**: The design space 3. **tt**: The level of skewness 4. **$\theta$**: The parameter vector 5. **FUN**: The function for calculating the derivatives of the given model ```{r Define inputs, cache = TRUE} N <- 21 S <- c(-1, 1) tt <- 0 theta <- rep(1, 4) poly3 <- function(xi,theta){ matrix(c(1, xi, xi^2, xi^3), ncol = 1) } u <- seq(from = S[1], to = S[2], length.out = N) res <- Aopt(N = N, u = u, tt = tt, FUN = poly3, theta = theta) ``` ## Manage the outputs Showing the optimal design and the support points ```{r output} res$design ``` Or we can plot them ```{r weight} plot_weight(res$design) ``` ## Plot the directional derivative to use the equivalence theorem for 3rd order polynomial models ### D-optimal design ```{r} poly3 <- function(xi,theta){ matrix(c(1, xi, xi^2, xi^3), ncol = 1) } design <- data.frame(location = c(-1, -0.447, 0.447, 1), weight = rep(0.25, 4)) u = seq(-1, 1, length.out = 201) plot_direction_Dopt(u, design, tt=0, FUN = poly3, theta = rep(0, 4)) ``` ### A-optimal design ```{r} poly3 <- function(xi, theta){ matrix(c(1, xi, xi^2, xi^3), ncol = 1) } design <- data.frame(location = c(-1, -0.464, 0.464, 1), weight = c(0.151, 0.349, 0.349, 0.151)) u = seq(-1, 1, length.out = 201) plot_direction_Aopt(u, design, tt=0, FUN = poly3, theta = rep(0,4)) ``` ```{r include = FALSE} options(original) # reset to old settings ```