Last updated: 2018-05-08
workflowr checks: (Click a bullet for more information) ✔ R Markdown file: up-to-date
Great! Since the R Markdown file has been committed to the Git repository, you know the exact version of the code that produced these results.
✔ Environment: empty
Great job! The global environment was empty. Objects defined in the global environment can affect the analysis in your R Markdown file in unknown ways. For reproduciblity it’s best to always run the code in an empty environment.
✔ Seed:
set.seed(20180501)
The command set.seed(20180501)
was run prior to running the code in the R Markdown file. Setting a seed ensures that any results that rely on randomness, e.g. subsampling or permutations, are reproducible.
✔ Session information: recorded
Great job! Recording the operating system, R version, and package versions is critical for reproducibility.
✔ Repository version: ee5a02b
wflow_publish
or wflow_git_commit
). workflowr only checks the R Markdown file, but you know if there are other scripts or data files that it depends on. Below is the status of the Git repository when the results were generated:
Ignored files:
Ignored: .Rhistory
Ignored: .Rproj.user/
Ignored: log/
Untracked files:
Untracked: analysis/overdis.Rmd
Untracked: docs/figure/iter1.Rmd/
Unstaged changes:
Modified: analysis/nugget.Rmd
Note that any generated files, e.g. HTML, png, CSS, etc., are not included in this status report because it is ok for generated content to have uncommitted changes.
#' smash generaliation function
#' A modified version. Instead of input \sigma^2+s_t^2 and estiamte \mu_t, we simply input s_t^2 and after convergence, input both to estimate the final \mu_t.
#' This function is for $Y_t=\mu_t+N(0,s_t^2)+N(0,\sigma^2)$ with known $s_t^2$ and $\sigma^2$.
#' @param x: a vector of observations
#' @param sigma: standard deviations, scalar.
#' @param family: choice of wavelet basis to be used, as in wavethresh.
#' @param niter: number of iterations for IRLS
#' @param tol: tolerance of the criterion to stop the iterations
smash.gen=function(x,sigma,family='DaubExPhase',niter=30,tol=1e-2){
mu=c()
s=c()
y=c()
munorm=c()
mu=rbind(mu,rep(mean(x),length(x)))
s=rbind(s,rep(1/mu[1],length(x)))
y=rbind(y,log(mean(x))+(x-mean(x))/mean(x))
for(i in 1:niter){
vars=ifelse(s[i,]<0,1e-8,s[i,])
mu.hat=smash.gaus(y[i,],sigma=sqrt(vars))#mu.hat is \mu_t+E(u_t|y)
mu=rbind(mu,mu.hat)
munorm[i]=norm(mu.hat-mu[i,],'2')
if(munorm[i]<tol){
break
}
#update m and s_t
mt=exp(mu.hat)
s=rbind(s,1/mt)
y=rbind(y,log(mt)+(x-mt)/mt)
}
mu.hat=smash.gaus(y[i,],sigma = sqrt(sigma^2+ifelse(s[i,]<0,1e-8,s[i,])))
return(list(mu.hat=mu.hat,mu=mu,s=s,y=y,munorm=munorm))
}
#' Simulation study comparing smash and smashgen
simu_study=function(m,sigma,seed=1234,
niter=1,family='DaubExPhase',tol=1e-2,
reflect=FALSE){
set.seed(seed)
lamda=exp(m+rnorm(length(m),0,sigma))
x=rpois(length(m),lamda)
#fit data
smash.out=smash.poiss(x,reflect=reflect)
smash.gen.out=smash.gen(x,sigma=sigma,niter=niter,family = family,tol=tol)
return(list(smash.out=smash.out,smash.gen.out=exp(smash.gen.out$mu.hat),smash.gen.est=smash.gen.out,x=x,loglik=smash.gen.out$loglik))
}
library(smashr)
m=rep(3,256)
simu.out=simu_study(m,0.01)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m))
legend("topright", # places a legend at the appropriate place
c("truth","smash-gen"), # puts text in the legend
lty=c(1,1), # gives the legend appropriate symbols (lines)
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m))
legend("topright",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
simu.out=simu_study(m,0.1)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m))
legend("topright",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m))
legend("topright",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
simu.out=simu_study(m,0.5)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m),col='gray80')
legend("topright",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m),col='gray80')
legend("topright",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
simu.out=simu_study(m,1)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m),col='black')
legend("topleft",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m),col='black')
legend("topleft",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
m=c(rep(3,128), rep(5, 128), rep(6, 128), rep(3, 128))
simu.out=simu_study(m,0.01)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m))
legend("topright",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m))
legend("topright",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
simu.out=simu_study(m,0.1)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m))
legend("topright",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m))
legend("topright",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
simu.out=simu_study(m,0.5)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m))
legend("topright",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m))
legend("topright",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
simu.out=simu_study(m,1)
#par(mfrow = c(1,2))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.gen.out, col = "red", lwd = 2)
lines(exp(m))
legend("topleft",
c("truth","smash-gen"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black","red", "blue"))
plot(simu.out$x,col = "gray80" ,ylab = '')
lines(simu.out$smash.out, col = "blue", lwd = 2)
lines(exp(m))
legend("topleft",
c("truth", "smash"),
lty=c(1,1),
lwd=c(1,1),
cex = 1,
col=c("black", "blue"))
sessionInfo()
R version 3.4.0 (2017-04-21)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 16299)
Matrix products: default
locale:
[1] LC_COLLATE=English_United States.1252
[2] LC_CTYPE=English_United States.1252
[3] LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C
[5] LC_TIME=English_United States.1252
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] smashr_1.1-1
loaded via a namespace (and not attached):
[1] Rcpp_0.12.16 knitr_1.20 whisker_0.3-2
[4] magrittr_1.5 workflowr_1.0.1 REBayes_1.3
[7] MASS_7.3-47 pscl_1.4.9 doParallel_1.0.11
[10] SQUAREM_2017.10-1 lattice_0.20-35 foreach_1.4.3
[13] ashr_2.2-7 stringr_1.3.0 caTools_1.17.1
[16] tools_3.4.0 parallel_3.4.0 grid_3.4.0
[19] data.table_1.10.4-3 R.oo_1.21.0 git2r_0.21.0
[22] iterators_1.0.8 htmltools_0.3.5 assertthat_0.2.0
[25] yaml_2.1.19 rprojroot_1.3-2 digest_0.6.13
[28] Matrix_1.2-9 bitops_1.0-6 codetools_0.2-15
[31] R.utils_2.6.0 evaluate_0.10 rmarkdown_1.8
[34] wavethresh_4.6.8 stringi_1.1.6 compiler_3.4.0
[37] Rmosek_8.0.69 backports_1.0.5 R.methodsS3_1.7.1
[40] truncnorm_1.0-7
This reproducible R Markdown analysis was created with workflowr 1.0.1