14.2 Random-Effects Model

For power analyses under the random-effects model, the formula to calculate the variance of my true mean effect looks slightly different:

\[V_{\delta}^*=\frac{V_Y+\tau^2}{k}\]

We see that again, \(tau^2\) has to be included to take the between-study heterogeneity into account (see Chapter 4.2 for more details). However, i do not know the between-study heterogeneity of my analysis before i perform it, so what value should i assume?

According to Hedges and Pigott (Hedges and Pigott 2004), the follwing formulae may be used to calculate the power in the random-effect model assuming small, moderate or high heterogeneity:

Small heterogeneity:

\[V_{\delta}^*=1.33\times\frac{V_Y}{k}\]

Moderate heterogeneity:

\[V_{\delta}^*=1.67\times\frac{V_Y}{k}\]

Large heterogeneity:

\[V_{\delta}^*=2\times\frac{V_Y}{k}\]

Again, you don’t have to worry about the statistical details here. We have put the entire calculations into the power.analysis.random function, which can be found below.

Again, R doesn’t know this function yet, so we have to let R learn it by copying and pasting the code underneath in its entirety into the console on the bottom left pane of RStudio, and then hit Enter ⏎.

power.analysis.random<-function(d,k,n1,n2,p,heterogeneity){

  n1<-n1
  n2<-n2
  d<-d
  k<-k
  p<-p
  heterogeneity<-heterogeneity
  
  if(heterogeneity=="low"){

  v.d<-((n1+n2)/(n1*n2))+((d*d)/(2*(n1+n2)))
  v.m<-v.d/k
  v.m<-1.33*v.m
  lambda<-(d/sqrt(v.m))
  plevel<-1-(p/2)
  zval<-qnorm(p=plevel, 0,1)
  power<-1-(pnorm(zval-lambda))+(pnorm(-zval-lambda))
  return(power)
  }
  
  if(heterogeneity=="moderate"){
    
      v.d<-((n1+n2)/(n1*n2))+((d*d)/(2*(n1+n2)))
  v.m<-v.d/k
  v.m<-1.67*v.m
  lambda<-(d/sqrt(v.m))
  plevel<-1-(p/2)
  zval<-qnorm(p=plevel, 0,1)
  power<-1-(pnorm(zval-lambda))+(pnorm(-zval-lambda))
  return(power)
  }
    
    if(heterogeneity=="high"){
    
      v.d<-((n1+n2)/(n1*n2))+((d*d)/(2*(n1+n2)))
  v.m<-v.d/k
  v.m<-2*v.m
  lambda<-(d/sqrt(v.m))
  plevel<-1-(p/2)
  zval<-qnorm(p=plevel, 0,1)
  power<-1-(pnorm(zval-lambda))+(pnorm(-zval-lambda))
  return(power)
  }
    
}

Now you are set and ready to use the function. I will assume the same parameters from before, but this time i will also have to specify the heterogeneity in the function, which can take the values "low", "moderate" and "high". I will choose "moderate" for this example.

power.analysis.random(d=0.30,k=10,n1=25,n2=25,p=0.05,
                      heterogeneity = "moderate")

The output i get is:

## [1] 0.7327163

Interestingly, we see that this value is 73%, which is smaller than the value of 91% which was calculated using the fixed-effect model. The value is also below 80%, meaning that i would not have optimal power to find the desired effect of \(d=0.30\) to be statistically significant if it exists.

This has to do with the larger heterogeneity i assume in this simulation, which decreases the precision of my effect size estimate, and thus increases my need for statistical power.

The graph below visualizes this relationship:

Power in the random-effects-model. Darker colors indicate higher heterogeneity

Figure 14.1: Power in the random-effects-model. Darker colors indicate higher heterogeneity


References

Hedges, Larry V, and Therese D Pigott. 2004. “The Power of Statistical Tests for Moderators in Meta-Analysis.” Psychological Methods 9 (4). American Psychological Association: 426.

banner