# Installation

# required dependencies
require(SLSEdesign)
#> Loading required package: SLSEdesign
require(CVXR)
#>
#> Attaching package: 'CVXR'
#> The following object is masked from 'package:stats':
#>
#>     power

# 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

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

res$design #> location weight #> 1 -1.0 0.182 #> 8 -0.3 0.313 #> 14 0.3 0.313 #> 21 1.0 0.182 Or we can plot them plot_weight(res$design)

## Plot the directional derivative to use the equivalence theorem for 3rd order polynomial models

### D-optimal design

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

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))