Last updated: 2018-12-06

workflowr checks: (Click a bullet for more information)
Expand here to see past versions:


Set up environment

Load the ggplot2 and cowplot packages, and the functions definining the mean and variances used to simulate the data.

library(ggplot2)
library(cowplot)
source("../code/signals.R")

Generate the ground-truth signals

Here, n specifies the length of the signals.

n = 1024
t = 1:n/n

Define the Spikes mean function.

mu.s = spike.f(t)

Define the Bumps variance function.

pos = c(0.1, 0.13, 0.15, 0.23, 0.25, 0.4, 0.44, 0.65, 0.76, 0.78, 0.81)
hgt = 2.97/5 * c(4, 5, 3, 4, 5, 4.2, 2.1, 4.3, 3.1, 5.1, 4.2)
wth = c(0.005, 0.005, 0.006, 0.01, 0.01, 0.03, 0.01, 0.01, 0.005, 0.008, 0.005)
mu.b = rep(0, n)
for (j in 1:length(pos))
  mu.b = mu.b + hgt[j]/((1 + (abs(t - pos[j])/wth[j]))^4)

Define the Doppler mean function.

mu.dop     = dop.f(t)
mu.dop     = 3/(max(mu.dop) - min(mu.dop)) * (mu.dop - min(mu.dop))
mu.dop.var = 10 * dop.f(t)
mu.dop.var = mu.dop.var - min(mu.dop.var)

Define the Angle mean function.

sig = ((2 * t + 0.5) * (t <= 0.15)) +
      ((-12 * (t - 0.15) + 0.8) * (t > 0.15 & t <= 0.2)) +
      0.2 * (t > 0.2 & t <= 0.5) + 
      ((6 * (t - 0.5) + 0.2) * (t > 0.5 & t <= 0.6)) +
      ((-10 * (t - 0.6) + 0.8) * (t > 0.6 & t <= 0.65)) +
      ((-0.5 * (t - 0.65) + 0.3) * (t > 0.65 & t <= 0.85)) +
      ((2 * (t - 0.85) + 0.2) * (t > 0.85))
mu.ang = 3/5 * ((5/(max(sig) - min(sig))) * sig - 1.6) - 0.0419569

Define the Block mean and variance functions.

pos    = c(0.1, 0.13, 0.15, 0.23, 0.25, 0.4, 0.44, 0.65, 0.76, 0.78, 0.81)
hgt    = 2.88/5 * c(4, (-5), 3, (-4), 5, (-4.2), 2.1, 4.3, (-3.1), 2.1, (-4.2))
mu.blk = rep(0, n)
for (j in 1:length(pos))
  mu.blk = mu.blk + (1 + sign(t - pos[j])) * (hgt[j]/2)
mu.cblk = mu.blk
mu.cblk[mu.cblk < 0] = 0

Define the Blip mean function.

mu.blip = (0.32 + 0.6 * t +
           0.3 * exp(-100 * (t - 0.3)^2)) * (t >= 0 & t <= 0.8) +
  (-0.28 + 0.6 * t + 0.3 * exp(-100 * (t - 1.3)^2)) * (t > 0.8 & t <= 1)

Define the Corner mean function.

mu.cor = 623.87 * t^3 * (1 - 2 * t) * (t >= 0 & t <= 0.5) +
         187.161 * (0.125 - t^3) * t^4 * (t > 0.5 & t <= 0.8) +
         3708.470441 * (t - 1)^3 * (t > 0.8 & t <= 1)
mu.cor = (0.6/(max(mu.cor) - min(mu.cor))) * mu.cor
mu.cor = mu.cor - min(mu.cor) + 0.2

Define the rest of the mean functions.

mu.sp   = (1 + mu.s)/5
mu.bump = (1 + mu.b)/5
mu.blk  = 0.2 + 0.6 * (mu.blk - min(mu.blk))/max(mu.blk - min(mu.blk))
mu.ang  = (1 + mu.ang)/5
mu.dop  = (1 + mu.dop)/5

Define the variance functions.

var1 = rep(1, n)
var2 = (1e-02 + 4 * (exp(-550 * (t - 0.2)^2) +
                     exp(-200 * (t - 0.5)^2) +
                     exp(-950 * (t - 0.8)^2)))
var3 = (1e-02 + 2 * mu.dop.var)
var4 = 1e-02 + mu.b
var5 = 1e-02 + 1 * (mu.cblk - min(mu.cblk))/max(mu.cblk)
var1 = var1/2
var2 = var2/max(var2)
var3 = var3/max(var3)
var4 = var4/max(var4)
var5 = var5/max(var5)

Plot the signal means

These plots show each of the mean functions used in generating the Gaussian data sets.

plot_grid(qplot(t,mu.sp,  geom="line",xlab="",ylab="",main="Spikes (sp)"),
          qplot(t,mu.bump,geom="line",xlab="",ylab="",main="Bumps (bump)"),
          qplot(t,mu.blk, geom="line",xlab="",ylab="",main="Blocks (blk)"),
          qplot(t,mu.ang, geom="line",xlab="",ylab="",main="Angles (ang)"),
          qplot(t,mu.dop, geom="line",xlab="",ylab="",main="Doppler (dop)"),
          qplot(t,mu.blip,geom="line",xlab="",ylab="",main="Blip (blip)"),
          qplot(t,mu.cor, geom="line",xlab="",ylab="",main="Corner (cor)"),
          nrow = 4,ncol = 2)

Expand here to see past versions of plot-mean-functions-1.png:
Version Author Date
1fe523e Peter Carbonetto 2018-12-04
dc4c6cd Peter Carbonetto 2018-12-04

Plot the signal variances

These plots show the variance functions used in generating the Gaussian data sets. In practice, these functions are rescaled in the simulations to achieve the desired signal-to-noise ratios (see the paper for a more detailed explanation).

plot_grid(
  qplot(t,var1,geom="line",xlab="",ylab="",main="Constant variance (v1)"),
  qplot(t,var2,geom="line",xlab="",ylab="",main="Triple exponential (v2)"),
  qplot(t,var3,geom="line",xlab="",ylab="",main="Doppler (v3)"),
  qplot(t,var4,geom="line",xlab="",ylab="",main="Bumps (v4)"),
  qplot(t,var5,geom="line",xlab="",ylab="",main="Clipped (v5)"),
  nrow = 3,ncol = 2)

Expand here to see past versions of plot-variance-functions-1.png:
Version Author Date
abc74e5 Peter Carbonetto 2018-12-04

Session information

sessionInfo()
# R version 3.4.3 (2017-11-30)
# Platform: x86_64-apple-darwin15.6.0 (64-bit)
# Running under: macOS High Sierra 10.13.6
# 
# Matrix products: default
# BLAS: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRblas.0.dylib
# LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
# 
# locale:
# [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
# 
# attached base packages:
# [1] stats     graphics  grDevices utils     datasets  methods   base     
# 
# other attached packages:
# [1] cowplot_0.9.3 ggplot2_3.1.0
# 
# loaded via a namespace (and not attached):
#  [1] Rcpp_1.0.0        compiler_3.4.3    pillar_1.2.1     
#  [4] git2r_0.23.0      plyr_1.8.4        workflowr_1.1.1  
#  [7] bindr_0.1.1       R.methodsS3_1.7.1 R.utils_2.6.0    
# [10] tools_3.4.3       digest_0.6.17     evaluate_0.11    
# [13] tibble_1.4.2      gtable_0.2.0      pkgconfig_2.0.2  
# [16] rlang_0.2.2       yaml_2.2.0        bindrcpp_0.2.2   
# [19] withr_2.1.2       stringr_1.3.1     dplyr_0.7.6      
# [22] knitr_1.20        rprojroot_1.3-2   grid_3.4.3       
# [25] tidyselect_0.2.4  glue_1.3.0        R6_2.2.2         
# [28] rmarkdown_1.10    purrr_0.2.5       magrittr_1.5     
# [31] whisker_0.3-2     backports_1.1.2   scales_0.5.0     
# [34] htmltools_0.3.6   assertthat_0.2.0  colorspace_1.4-0 
# [37] labeling_0.3      stringi_1.2.4     lazyeval_0.2.1   
# [40] munsell_0.4.3     R.oo_1.21.0

This reproducible R Markdown analysis was created with workflowr 1.1.1