summarize.estimator <- function(df, suffix='naive', coefname='x'){ part <- df[,c('N', 'm', 'Bxy', paste0('B',coefname,'y.est.',suffix), paste0('B',coefname,'y.ci.lower.',suffix), paste0('B',coefname,'y.ci.upper.',suffix), 'y_explained_variance', 'Bzx', 'Bzy', 'accuracy_imbalance_difference' ), with=FALSE] true.in.ci <- as.integer((part$Bxy >= part[[paste0('B',coefname,'y.ci.lower.',suffix)]]) & (part$Bxy <= part[[paste0('B',coefname,'y.ci.upper.',suffix)]])) zero.in.ci <- as.integer(0 >= part[[paste0('B',coefname,'y.ci.lower.',suffix)]]) & (0 <= part[[paste0('B',coefname,'y.ci.upper.',suffix)]]) bias <- part$Bxy - part[[paste0('B',coefname,'y.est.',suffix)]] sign.correct <- as.integer(sign(part$Bxy) == sign(part[[paste0('B',coefname,'y.est.',suffix)]])) part <- part[,':='(true.in.ci = true.in.ci, zero.in.ci = zero.in.ci, bias=bias, sign.correct =sign.correct)] part.plot <- part[, .(p.true.in.ci = mean(true.in.ci), mean.bias = mean(bias), mean.est = mean(.SD[[paste0('B',coefname,'y.est.',suffix)]]), var.est = var(.SD[[paste0('B',coefname,'y.est.',suffix)]]), est.upper.95 = quantile(.SD[[paste0('B',coefname,'y.est.',suffix)]],0.95,na.rm=T), est.lower.95 = quantile(.SD[[paste0('B',coefname,'y.est.',suffix)]],0.05,na.rm=T), N.sims = .N, p.sign.correct = mean(as.integer(sign.correct & (! zero.in.ci))), variable=coefname, method=suffix ), by=c("N","m",'y_explained_variance','Bzx', 'Bzy', 'accuracy_imbalance_difference') ] return(part.plot) }