Dear R-community,
I am trying to get a function for a weighted averaging of d's and var(d)
(within study) to output properly. When I average one study at a time the
output is precise. When using the function with multiple studies
simultaneously the weighted average of d is precise but var(d) is
inaccurate. Been struggling with this for some time. Any help is much
appreciated--thanks!
AC Del Re
# function for a weighted average of d & var(d)
Agg_d <- function(d) {
N<- mean(n)
N_ES <- length(d)
corr.mat <- matrix (rep(.5, N_ES^2), nrow=N_ES)
diag(corr.mat) <- 1
d1d2 <- cbind(d) %*% d
PSI <- (8*corr.mat + d1d2*corr.mat^2)/(2*N)
PSI.inv <- solve(PSI)
a <- rowSums(PSI.inv)/sum(PSI.inv)
var_d.agg <- 1/sum(PSI.inv)
d.agg <- sum(d*a)
out<-cbind(d.agg,var_d.agg)
return(out)
}
# weighted average of d's & var(d) for study 1 (Output is correct)
id<-c(1,1)
n<-c(19,19)
d<-c(0.984,0.764)
dagg1<-tapply(d,id,Agg_d)
dagg1
$`1`
d.agg var_d.agg
[1,] 0.86939 0.1704719
# weighted average of d's and var(d) for study 2 (Output is correct)
id<-c(2,2,2)
n<-c(40,40,40)
d<-c(0.823,0.863,0.823)
dagg2<-tapply(d,id,Agg_d)
dagg2
$`2`
d.agg var_d.agg
[1,] 0.8361852 0.0710382
# weighted average of d's and var(d) for both study 1 & 2 simultaneously
(Output is WRONG for var!)
id<-c(1,1,2,2,2)
n<-c(19,19,40,40,40)
d<-c(0.984,0.764,0.823,0.863,0.823)
dagg3<-tapply(d,id,Agg_d)
dagg3
$`1`
d.agg var_d.agg
[1,] 0.86939 0.1024989
$`2`
d.agg var_d.agg
[1,] 0.8361852 0.08992177
[[alternative HTML version deleted]]