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