Learn R Programming

optedr

Overview

The package optedr is an optimal experimental design suite for calculating optimal designs, D-augmenting designs and efficiently rounding approximate design. Among its capabilities are:

  • Calculating D-, Ds-, A- and I-optimal designs for non-linear models.
  • D-augment designs controlling the loss of efficiency.
  • Evaluate the efficiency of a given design against the optimum.
  • Efficiently rounding approximate designs to exact designs.

Installation

You can install the released version of optedr from CRAN with:

install.packages("optedr")

You can install the latest version of the package from GitHub with:

devtools::install_github("kezrael/optedr")

Functions

The user available functions are:

  • opt_des() calculates optimal designs.
  • design_efficiency() evaluates the efficiency of a design against the optimum.
  • augment_design() augments designs, allowing the user to add points controlling the D-efficiency.
  • efficient_round() efficiently round approximate designs.
  • shiny_optimal() demo of optimal designs calculation with a graphical interface, applied to Antoine’s Equation.
  • shiny_augment() demo of augmenting design with a graphical interface, usable for a handful of models.

The optdes object generated by opt_des() has its own implementation of print(), summary() and plot().

Usage

library(optedr)
#> ℹ Loading optedr

The calculation of an optimal design requires a to specify the criterion, the model, the parameters and their initial values and the design_space.

resArr.D <- opt_des(criterion = "D-Optimality",
                    model = y ~ a*exp(-b/x),
                    parameters = c("a", "b"),
                    par_values = c(1, 1500),
                    design_space = c(212, 422))
#> 
#> ℹ Stop condition not reached, max iterations performed
#> ⠙ Calculating optimal design 22 done (27/s) | 812msℹ The lower bound for efficiency is 99.9986396401789%
#>                                                     

resArr.D$optdes
#>      Point    Weight
#> 1 329.2966 0.5000068
#> 2 422.0000 0.4999932
resArr.D$sens
resArr.D$convergence

After calculating the D-optimal design, the user might want to add points to the design to fit their needs:

aug_arr <- augment_design("D-Optimality", resArr.D$optdes, 0.3, y ~ a * exp(-b/x),
               parameters = c("a", "b"),
               par_values = c(1, 1500),
               design_space = c(212, 422),
               F)
aug_arr
#> [1] NA

This new design can be rounded to the desired number of points:

(exact_design <- efficient_round(aug_arr, 20))
#>      Point Weight
#> 1 329.2966      7
#> 2 422.0000      7
#> 3 260.0000      3
#> 4 380.0000      3

And its efficiency compared against the optimum:

aprox_design <- exact_design
aprox_design$Weight <- aprox_design$Weight / sum(aprox_design$Weight)

design_efficiency(aprox_design, resArr.D)
#> ℹ The efficiency of the design is 86.0744360399533%
#> [1] 0.8607444

Copy Link

Version

Install

install.packages('optedr')

Monthly Downloads

206

Version

2.2.0

License

GPL-3

Issues

Pull Requests

Stars

Forks

Maintainer

Carlos de la Calle-Arroyo

Last Published

February 11th, 2025

Functions in optedr (2.2.0)

delete_points

Remove low weight points
dsaugment_design

Ds-Augment Design
crosspoints

Calculate crosspoints
dscrit

Criterion function for Ds-Optimality
dssens

Sensitivity function for Ds-Optimality
getCross2

Give effective limits to candidate points region
get_daugment_region

Get D-augment region
findminval

Find Minimum Value
isens

Sensitivity function for I-Optimality
laugment_design

L-Augment Design
findmaxval

Find Maximum Value
daugment_design

D-Augment Design
get_dsaugment_region

Get Ds-augment region
plot.optdes

Plot function for optdes
opt_des

Calculates the optimal design for a specified criterion
plot_sens

Plot sensitivity function
plot_convergence

Plot Convergence of the algorithm
efficient_round

Efficient Round
icrit

Criterion function for I-Optimality and L-Optimality
update_weightsDS

Update weight Ds-Optimality
get_augment_region

Get Augment Regions
shiny_augment

Shiny D-augment
getStart

Find where the candidate points region starts
shiny_optimal

Shiny Optimal
findmax

Find Maximum
get_laugment_region

Get L-augment region
gradient22

Gradient function for a subset of variables
update_design_total

Merge close points of a design
update_design

Update Design with new point
update_weightsI

Update weight I-Optimality
summary.optdes

Summary function for optdes
inf_mat

Information Matrix
integrate_reg_int

Integrate IM
update_sequence

Deletes duplicates points
getPar

Parity of the crosspoints
tr

Trace
update_weights

Update weight D-Optimality
gradient

Gradient function
print.optdes

Print function for optdes
sens

Master function to calculate the sensitivity function
weight_function

Weight function per distribution
add_design

Add two designs
combinatorial_round

Combinatorial round
check_inputs

Check Inputs
add_points

Update design given crosspoints and alpha
IWFMult

Cocktail Algorithm implementation for L-, I- and A-Optimality (with matB = diag(k))
DsWFMult

Cocktail Algorithm implementation for Ds-Optimality
WFMult

Master function for the cocktail algorithm, that calls the appropriate one given the criterion.
augment_design

Augment Design
crit

Master function for the criterion function
DWFMult

Cocktail Algorithm implementation for D-Optimality
dcrit

Criterion function for D-Optimality
design_efficiency

Efficiency between optimal design and a user given design
dsens

Sensitivity function for D-Optimality
eff

Efficiency between two Information Matrices