Design Experiment – randomizr package

randomizr is a package for experiment design and random sampling.

library(formattable)
library(randomizr)
library(readxl)
data <- read_excel("~/Desktop/TankAssignment.xlsx",sheet = "Adjusted_Data")
head(data,30)    
## # A tibble: 30 x 6
##     Tank Group_Weight Individual Location Location2 Treatment
##    <dbl>        <dbl>      <dbl> <chr>    <chr>     <chr>    
##  1     1         35.5       5.07 Top      Right     D        
##  2     2         33.8       4.83 Top      Right     P        
##  3     3         38         5.43 Top      Right     Ctrl 2   
##  4     4         34.4       4.91 Top      Right     Q        
##  5     5         36.9       5.27 Top      Right     F        
##  6     6         37.5       5.36 Top      Right     A        
##  7     7         38.2       5.46 Top      Right     Y        
##  8     8         38.2       5.46 Top      Right     Q        
##  9     9         37.2       5.31 Top      Right     H        
## 10    10         36.9       5.27 Top      Right     D        
## # … with 20 more rows

Complete Random Assignment

Two-arm Designs

Z <- complete_ra(N = 200)
table(Z)
## Z
##   0   1 
## 100 100
Z <- complete_ra(N = 200, m = 50) #1 is 50
table(Z)
## Z
##   0   1 
## 150  50
Z <- complete_ra(N = 1000, m_unit = rep(50, 1000)) #950 vs 50
table(Z)
## Z
##   0   1 
## 950  50
Z <- complete_ra(N = 1000, prob = .111) #889 vs 111
table(Z)
## Z
##   0   1 
## 889 111
Z <- complete_ra(N = 1000, prob_unit = rep(0.1, 1000)) #900 vs 100
table(Z)
## Z
##   0   1 
## 900 100
Z <- complete_ra(N = 1000, conditions = c("control", "treatment")) #new label
table(Z)
## Z
##   control treatment 
##       500       500

Multi-arm Designs

Z <- complete_ra(N = 144, num_arms = 18)
table(Z)
## Z
##  T1  T2  T3  T4  T5  T6  T7  T8  T9 T10 T11 T12 T13 T14 T15 T16 T17 T18 
##   8   8   8   8   8   8   8   8   8   8   8   8   8   8   8   8   8   8
Z <- complete_ra(N = 1000, m_each = c(300, 300, 400))
table(Z)
## Z
##  T1  T2  T3 
## 300 300 400
Z <- complete_ra(N = 1000, prob_each = c(.1, .2, .7))
table(Z)
## Z
##  T1  T2  T3 
## 100 200 700
Z <- complete_ra(N = 144, conditions = c("A","B","C","D","E","F","G","Ctrl_1", "Ctrl_2","H","K","L","P","Q","R","X","Y","Z"))
table(Z)
## Z
##      A      B      C      D      E      F      G Ctrl_1 Ctrl_2      H 
##      8      8      8      8      8      8      8      8      8      8 
##      K      L      P      Q      R      X      Y      Z 
##      8      8      8      8      8      8      8      8

Block Random Assignment

Two-arm Designs

blocks <- rep(c("A", "B","C"), times = c(50, 100, 200))
Z <- block_ra(blocks = blocks)
table(blocks, Z)
##       Z
## blocks   0   1
##      A  25  25
##      B  50  50
##      C 100 100
Z <- block_ra(blocks = blocks, prob = .3) #30% on 1, 70% on 0
table(blocks, Z)
##       Z
## blocks   0   1
##      A  35  15
##      B  70  30
##      C 140  60
Z <- block_ra(blocks = blocks, block_prob = c(.1, .2, .3)) #10%, 20%,30% on 1
table(blocks, Z)
##       Z
## blocks   0   1
##      A  45   5
##      B  80  20
##      C 140  60
Z <- block_ra(blocks = blocks, m = 20)#20 on 1, rest on 0
table(blocks, Z)
##       Z
## blocks   0   1
##      A  30  20
##      B  80  20
##      C 180  20
Z <- block_ra(blocks = blocks, block_m = c(20, 30, 40)) #20,30,40 on 1, rest on 0
table(blocks, Z)
##       Z
## blocks   0   1
##      A  30  20
##      B  70  30
##      C 160  40
Z <- block_ra(blocks = blocks,
              m_unit = rep(c(20, 30, 40),
              times = c(50, 100, 200))) #Assigned for 1
table(blocks, Z)
##       Z
## blocks   0   1
##      A  30  20
##      B  70  30
##      C 160  40
block_m_each <- rbind(c(10, 40),
                      c(30, 70),
                    c(50, 150)) #all assigned with label
Z <- block_ra(blocks = blocks, block_m_each = block_m_each,
conditions = c("control", "treatment"))
table(blocks, Z)
##       Z
## blocks control treatment
##      A      10        40
##      B      30        70
##      C      50       150

Multi-arm Designs

blocks <- rep(c("Left_Top", "Left_Bottom","Right_Top","Right_Bottom"), times = c(36,36,36,36))
Z <- block_ra(blocks = blocks, num_arms = 18,conditions = c("A","B","C","D","E","F","G","Ctrl_1", "Ctrl_2","H","K","L","P","Q","R","X","Y","Z"))
table(blocks, Z)
##               Z
## blocks         A B C D E F G Ctrl_1 Ctrl_2 H K L P Q R X Y Z
##   Left_Bottom  2 2 2 2 2 2 2      2      2 2 2 2 2 2 2 2 2 2
##   Left_Top     2 2 2 2 2 2 2      2      2 2 2 2 2 2 2 2 2 2
##   Right_Bottom 2 2 2 2 2 2 2      2      2 2 2 2 2 2 2 2 2 2
##   Right_Top    2 2 2 2 2 2 2      2      2 2 2 2 2 2 2 2 2 2
dt <- data.frame(blocks,Z)
formattable(head(dt),align="l")
blocks Z
Left_Top B
Left_Top Y
Left_Top C
Left_Top H
Left_Top Q
Left_Top Ctrl_1
# Multi-arm Designs with Different Ratio
blocks <- rep(c("A", "B","Control"), times = c(50, 100, 200))
block_m_each <- rbind(c(10, 20, 20),
                        c(30, 50, 20),
                        c(50, 75, 75))
Z <- block_ra(blocks = blocks, block_m_each = block_m_each,
conditions = c("control", "placebo", "treatment"))
table(blocks, Z)
##          Z
## blocks    control placebo treatment
##   A            10      20        20
##   B            30      50        20
##   Control      50      75        75
Z <- block_ra(blocks = blocks, prob_each = c(.1, .1, .8)) #probabilty that each unit is assigned to each condition
table(blocks, Z)
##          Z
## blocks     T1  T2  T3
##   A         5   5  40
##   B        10  10  80
##   Control  20  20 160

Dahee Kim

January 4,2020