43 lines
2.0 KiB
R
43 lines
2.0 KiB
R
|
|
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)
|
|
}
|