Saltar al contenido principal

Análisis de potencia en R

Visión general

El análisis de potencia es un aspecto importante del diseño experimental. Nos permite determinar el tamaño de la muestra necesario para detectar un efecto de un tamaño determinado con un grado de confianza dado. A la inversa, nos permite determinar la probabilidad de detectar un efecto de un tamaño determinado con un nivel de confianza dado, con las limitaciones del tamaño de la muestra. Si la probabilidad es inaceptablemente baja, haríamos bien en modificar o abandonar el experimento.

Las cuatro cantidades siguientes tienen una relación íntima:

  1. tamaño de la muestra
  2. tamaño del efecto
  3. nivel de significación = P(error de tipo I) = probabilidad de encontrar un efecto que no existe
  4. potencia = 1 - P(error de tipo II) = probabilidad de encontrar un efecto que existe

Dados tres cualesquiera, podemos determinar el cuarto.

Análisis de potencia en R

El paquete pwr, desarrollado por Stéphane Champely, implementa el análisis de potencia tal y como lo describe Cohen (!988)</a >. A continuación se enumeran algunas de las funciones más importantes.

  
funcióncálculos de potencia para
pwr.2p.testdos proporciones (igual n)
pwr.2p2n.testdos proporciones (n desigual)
pwr.anova.testANOVA unidireccional equilibrado
pwr.chisq.testprueba chi-cuadrado
pwr.f2.testmodelo lineal general
pwr.p.testproporción (una muestra)
pwr.r.testcorrelación
pwr.t.testPruebas t (una muestra, 2 muestras, pareadas)
pwr.t2n.testPrueba t (dos muestras con n desigual)

Para cada una de estas funciones, introduces tres de las cuatro cantidades (tamaño del efecto, tamaño de la muestra, nivel de significación, potencia) y se calcula la cuarta.</strong >

El nivel de significación por defecto es 0,05. Por tanto, para calcular el nivel de significación, dados un tamaño del efecto, un tamaño de la muestra y una potencia, utiliza la opción "nivel.sig=NULL".

Especificar un tamaño del efecto puede ser una tarea desalentadora. A continuación se ofrecen las fórmulas ES y las sugerencias de Cohen (basadas en la investigación en ciencias sociales). Las sugerencias de Cohen sólo deben considerarse como directrices muy aproximadas. Debes aportar tu propia experiencia en la materia.

(Para explorar los intervalos de confianza y extraer conclusiones a partir de muestras, prueba este curso interactivo sobre los fundamentos de la inferencia.)</a >

Pruebas t

Para las pruebas t, utiliza las siguientes funciones:

pwr.t.test(n = , d = , nivel sig = , potencia = , tipo = c("dos.muestras", "una.muestra", "pareadas"))</strong >

donde n es el tamaño de la muestra, d es el tamaño del efecto, y el tipo indica prueba t de dos muestras, prueba t de una muestra o prueba t pareada. Si tienes tamaños de muestra desiguales, utiliza

pwr.t2n.test(n1 = , n2= , d = , sig.level =, power = )

donde n1 y n2 son los tamaños de las muestras.

Para las pruebas t, el tamaño del efecto se evalúa como

Cohen d

Cohen sugiere que los valores d de 0,2, 0,5 y 0,8 representan tamaños del efecto pequeños, medianos y grandes, respectivamente.

Puedes especificar alternative="two.sided", "less" o "greater" para indicar una prueba de dos colas o de una cola. La prueba de dos colas es la predeterminada.

ANOVA

Para un análisis de varianza unidireccional utiliza

pwr.anova.test(k = , n = , f = , sig.level = , power = )

donde k es el número de grupos y n es el tamaño de la muestra común en cada grupo.

Para un ANOVA unidireccional, el tamaño del efecto se mide por f, donde

Cohen f

Cohen sugiere que los valores f de 0,1, 0,25 y 0,4 representan tamaños del efecto pequeños, medianos y grandes, respectivamente.

Correlaciones

Para los coeficientes de correlación utiliza

pwr.r.test(n = , r = , sig.level = , power = )

donde n es el tamaño de la muestra y r es la correlación. Utilizamos el coeficiente de correlación poblacional como medida del tamaño del efecto. Cohen sugiere que los valores r de 0,1, 0,3 y 0,5 representan tamaños del efecto pequeños, medianos y grandes, respectivamente.

Modelos lineales

Para modelos lineales (por ejemplo, regresión múltiple) utiliza

pwr.f2.test(u =, v = , f2 = , sig.level = , power = )

donde u y v son los grados de libertad del numerador y del denominador. Utilizamos f2 como medida del tamaño del efecto.

cohen f2

Cohen f2 suplente

La primera fórmula es adecuada cuando evaluamos el impacto de un conjunto de predictores sobre un resultado. La segunda fórmula es adecuada cuando estamos evaluando el impacto de un conjunto de predictores por encima de un segundo conjunto de predictores (o covariables). Cohen sugiere que los valores f2 de 0,02, 0,15 y 0,35 representan tamaños del efecto pequeños, medianos y grandes.

Pruebas de proporciones

Al comparar dos proporciones utiliza

pwr.2p.test(h = , n = , sig.level =, power = )

donde h es el tamaño del efecto y n es el tamaño de la muestra común en cada grupo.

Cohen h

Cohen sugiere que los valores h de 0,2, 0,5 y 0,8 representan tamaños del efecto pequeños, medianos y grandes, respectivamente.

Para n desiguales utiliza

pwr.2p2n.test(h = , n1 = , n2 = , nivel sig = , potencia = )

Para probar una única proporción utiliza

pwr.p.test(h = , n = , sig.level = power = )

Tanto para las pruebas de proporción de dos muestras como para las de una muestra, puedes especificar alternative="two.sided", "less" o "greater" para indicar una prueba de dos colas o de una cola. La prueba de dos colas es la predeterminada.

Pruebas Chi-cuadrado

Para las pruebas chi-cuadrado utiliza

pwr.chisq.test(w =, N = , df = , sig.level =, power = )

donde w es el tamaño del efecto, N es el tamaño total de la muestra y df son los grados de libertad. El tamaño del efecto w se define como

Cohen w

Cohen sugiere que los valores w de 0,1, 0,3 y 0,5 representan tamaños del efecto pequeños, medianos y grandes, respectivamente.

Algunos ejemplos

library(pwr)

# For a one-way ANOVA comparing 5 groups, calculate the
# sample size needed in each group to obtain a power of
# 0.80, when the effect size is moderate (0.25) and a
# significance level of 0.05 is employed.

pwr.anova.test(k=5,f=.25,sig.level=.05,power=.8)

# What is the power of a one-tailed t-test, with a
# significance level of 0.01, 25 people in each group,
# and an effect size equal to 0.75?

pwr.t.test(n=25,d=0.75,sig.level=.01,alternative="greater")

# Using a two-tailed test proportions, and assuming a
# significance level of 0.01 and a common sample size of
# 30 for each proportion, what effect size can be detected
# with a power of .75?

pwr.2p.test(n=30,sig.level=0.01,power=0.75)

Crear gráficos de potencia o tamaño de la muestra

Las funciones del paquete pwr pueden utilizarse para generar gráficos de potencia y de tamaño de muestra.

# Plot sample size curves for detecting correlations of
# various sizes.

library(pwr)

# range of correlations
r <- seq(.1,.5,.01)
nr <- length(r)

# power values
p <- seq(.4,.9,.1)
np <- length(p)

# obtain sample sizes
samsize <- array(numeric(nr*np), dim=c(nr,np))
for (i in 1:np){
  for (j in 1:nr){
    result <- pwr.r.test(n = NULL, r = r[j],
    sig.level = .05, power = p[i],
    alternative = "two.sided")
    samsize[j,i] <- ceiling(result$n)
  }
}

# set up graph
xrange <- range(r)
yrange <- round(range(samsize))
colors <- rainbow(length(p))
plot(xrange, yrange, type="n",
  xlab="Correlation Coefficient (r)",
  ylab="Sample Size (n)" )

# add power curves
for (i in 1:np){
  lines(r, samsize[,i], type="l", lwd=2, col=colors[i])
}

# add annotation (grid lines, title, legend)
abline(v=0, h=seq(0,yrange[2],50), lty=2, col="grey89")
abline(h=0, v=seq(xrange[1],xrange[2],.02), lty=2,
   col="grey89")
title("Sample Size Estimation for Correlation Studies\n
  Sig=0.05 (Two-tailed)")
legend("topright", title="Power",
as.character(p),
   fill=colors)

curvas de tamaño de muestra