Introducción
El presente trabajo hace parte del programa de Maestría en Ciencia de Datos de la Pontificia Universidad Javeriana Cali de la asignatura Métodos y Simulación estadística. El documento contiene el desarrollo del problema 5 de la actividad número 2 como evaluación de la temática Probabilidad e Inferencia Estadística.
Problema 5
Relaciones entre la potencia, el tamaño de los efectos y el tamaño de la muestra
El “efecto del tamaño” (o “tamaño del efecto”, en inglés “effect size”) en el contexto de la prueba de hipótesis se refiere a la magnitud de la diferencia o la fuerza de la relación que se está investigando entre las variables. En otras palabras, mide la cantidad de cambio o la importancia práctica de los resultados, más allá de simplemente determinar si una diferencia es estadísticamente significativa. El tamaño del efecto es crucial porque, incluso si una prueba estadística muestra que un resultado es significativo (es decir, rechazas la hipótesis nula), el tamaño del efecto te dice si esa diferencia es realmente importante en un sentido práctico o clínico. Por ejemplo, un estudio podría encontrar que un nuevo medicamento reduce la presión arterial de manera estadísticamente significativa, pero el tamaño del efecto te indicaría si la reducción es lo suficientemente grande como para tener relevancia clínica. En resumen, el tamaño del efecto proporciona una medida complementaria a la significancia estadística, ayudando a interpretar el verdadero impacto o importancia de los resultados encontrados.
En este problema, nos centraremos en una aplicación que requiere la aplicación de la prueba t de Student para comparar las medias entre dos grupos. En este contexto evaluaremos cómo el efecto de los tamaños o las diferencias en los tamaños muestrales de los grupos influyen en la potencia de la prueba. De manera formal, la potencia se define como la probabilidad de rechazar la hipótesis nula cuando la hipótesis alternativa es verdadera. De forma más coloquial, la potencia es la capacidad de una prueba estadística para identificar un efecto si este realmente existe. En general, desequilibrios muy marcados en los tamaños de muestra tienden a reducir la potencia estadística, incluso cuando se asocian con tamaños de efecto considerables, lo que aumenta la probabilidad de cometer un error de tipo II. Para fundamentar esta afirmación, debes analizar diferentes resultados computacionales que se presentan a continuación.
Caso 1: Variando los tamaños de los efectos (\(d\)) En los códigos del archivo llamado caso1.R, para cada tamaño fijo de los efectos \(d\), se modela la relación entre el tamaño muestral y la potencia (manteniendo constante el nivel de significancia \(\alpha=0.05\)). En las figuras se visualizan los resultados para tamaño de efecto muy pequeño (\(d=0.1\)), pequeño (\(d=0.2\)), mediano (\(d=0.5\)) y grande (\(d=0.8\)). Repite el análisis usando 5 valores distintos del nivel de significancia. ¿Cambian los resultados? ¿Qué ocurre cuando el tamaño de muestra de los grupos que se comparan es de 20, 60, 100 y 140? Analiza y compara los resultados.
# t-TEST
# Se aplicará power.t.test del paquete stats (ya en R). Calcula la potencia de la prueba t de una o dos muestras, o determina los parámetros para obtener un valor particular de la potencia.
d<-seq(.1,2,by=.1) # 20 tamaños de los efectos
n<-1:150 # Tamaños muestrales
t.test.power.effect <-as.data.frame(do.call("cbind",lapply(1:length(d),function(i)
{
sapply(1:length(n),function(j)
{
power.t.test(n=n[j],d=d[i],sig.level=0.05,power=NULL,type= "two.sample")$power
})
})))
# Si algunas potencias no se pueden calcular, se ajustan a cero:
t.test.power.effect[is.na(t.test.power.effect)] <- 0
colnames(t.test.power.effect)<-paste (d,"effect size")
#Graficando los resultados
prueba <-t.test.power.effect #data frame de 150 X 20 (para graficar)
cuts_num<-c(2,5,8) # cortes
#Cortes basados en: Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences (2nd ed.). Hillsdale, NJ: Lawrence Erlbaum Associates, Publishers.
cuts_cat<-c("pequeño","medio","grande")
columnas <- 1:ncol(prueba) #Lista de los valores 1:20
color_linea<-rainbow(length(columnas), alpha=.5) # Lista de 20 colores
grosor_linea=3 # Grosor de la línea
#Para el tipo de línea: (“blank”, “solid”, “dashed”, “dotted”, “dotdash”, “longdash”, “twodash”) ó (0, 1, 2, 3, 4, 5, 6).
#Note que lty = “solid” is idéntica a lty=1.
tipo_linea <- rep(1,length(color_linea)) #Repetir length(color)=20 veces el 1
tipo_linea[cuts_num]<-c(2:(length(cuts_num)+1)) #Asignar 2, 3, 4 en las posiciones 2, 5, 8 de tipo_linea
#Resaltar posiciones importantes
cuts_num<-c(2,5,8) # Cortes
#Cortes basados en: Cohen, J. (1988). Statistical Power Analysis for the Behavioral Sciences (2nd ed.). Hillsdale, NJ: Lawrence Erlbaum Associates, Publishers.
cuts_cat<-c("pequeño","medio","grande")
color_linea[cuts_num]<-c("black")
efecto <- d # Listado de los 20 valores de 20
efecto[cuts_num] <- cuts_cat #Reemplazar en "efecto" las posiciones cuts_num (2, 5, 8) por las categorías de cuts_cat
par(fig=c(0,.8,0,1),new=TRUE)
#Gráfica
plot(1, type="n", #no produce puntos ni líneas
frame.plot=FALSE,
xlab="Tamaño muestral", ylab="Potencia",
xlim=c(1,150), ylim=c(0,1),
main="t-Test", axes = FALSE)
#Editando los ejes, grid, etc.
abline(v=seq(0,150,by=10), col = "lightgray", lty = "dotted") # Grid vertical
abline(h=seq(0,1,by=.05), col = "lightgray", lty = "dotted") # Grid horizontal
axis(1,seq(0,150,by=10)) # Números en eje X
axis(2,seq(0,1,by=.05)) # Números en eje Y
#Plot de las lineas
#columnas <- 1:ncol(prueba) # lista de los valores 1:20
for(i in 1:length(columnas)) #length(columnas)=20
{
lines(1:150,
#prueba (data frame de 150 X 20, para graficar)
#columna <- 1:ncol(prueba) listado de valores 1:20
prueba[,columnas[i]], #filtrar "prueba" para valor de columna
col=color_linea[i], #color_linea[cuts_num]<-c("black")
lwd=grosor_linea, #grosor de cada linea
lty=tipo_linea[i] #tipo_linea[cuts_num]<-c(2:(length(cuts_num)+1))
)
}
#Leyendas
par(fig=c(.65,1,0,1),new=TRUE)
plot.new()
legend("top",legend=efecto, col=color_linea, lwd=3, lty=tipo_linea, title="Tamaño efecto",
bty="n" #Opciones: o (complete box), n (no box), 7, L, C, U
)
#Gráfica 2
#plot using ggplot2
library(ggplot2)
#library(reshape)
#library(plotly)
obj <- cbind(size=1:150, prueba) #Agregando el tamaño al data frame "prueba"
# Usar melt y unir con "effect" para el mapeo
#El data frame "obj" se reconstruye con respecto al parámetro id="size".
melted <- cbind(reshape::melt(obj, id="size"), effect=rep(d,each=150))
p<- ggplot(data=melted, aes(x=size, y=value, color=as.factor(effect))) +
geom_line(size=0.7,alpha=.5) +
ylab("Potencia") +
xlab("Tamaño muestral") +
ggtitle("t-Test")+
theme_bw() +
#guides(fill=guide_legend(title="Efecto"))
#scale_fill_discrete(name = "Efecto")
#labs(fill='Efecto')
#scale_fill_manual("Efecto"#,values=c("orange","red")
scale_color_discrete(name = "Tamaño del efecto")
# Interactive plot
plotly::ggplotly(p)
Caso 2: Variando los tamaños muestrales En los códigos del archivo llamado caso2.R, se modela la relación entre el tamaño del efecto \(d\) y la potencia (manteniendo constante el nivel de significancia α=0.05). Para ello, se considera los siguientes tamaños de muestra, donde \(n_1\) es el número de sujetos en el grupo 1 y \(n_2\) es el número de sujetos en el grupo 2:
- \(n_1 = 28\), \(n_2 = 1406\): \(n_1\) representa el 2% del tamaño total de la muestra de 1434.
- \(n_1 = 144\), \(n_2 = 1290\): \(n_1\) representa el 10% del tamaño total de la muestra de 1434.
- \(n_1 = 287\), \(n_2 = 1147\): \(n_1\) representa el 20% del tamaño total de la muestra de 1434.
- \(n_1 = 430\), \(n_2 = 1004\): \(n_1\) representa el 30% del tamaño total de la muestra de 1434.
- \(n_1 = 574\), \(n_2 = 860\): \(n_1\) representa el 40% del tamaño total de la muestra de 1434.
- \(n_1 = 717\), \(n_2 = 717\): grupos de igual tamaño (esto es óptimo porque conduce a la potencia más alta para un tamaño de efecto dado).
En la figura resultante, se trazaron las curvas de potencia para la prueba t de Student, en función del tamaño del efecto, asumiendo una tasa de error Tipo I del 5%. La comparación de diferentes curvas de potencia (basadas en el tamaño de la muestra de cada grupo) en el mismo gráfico es una representación visual útil de este análisis. En la figura también se trazó una línea discontinua horizontal en un nivel de potencia aceptable del 80% y una línea vertical en el tamaño del efecto que tendría que estar presente en nuestros datos para alcanzar el 80 % de potencia. Se observa que el tamaño del efecto debe ser superior a 0.54 para alcanzar un nivel de potencia aceptable dados tamaños de grupo altamente desequilibrados de \(n_1\)=28 y \(n_2\)=1406, en comparación con todos los demás escenarios que conducen al 100% de potencia. Repite el análisis usando 5 valores distintos del nivel de significancia. ¿Cambian los resultados? ¿Qué ocurre cuando \(n_1\)=28 y \(n_2\)=1406? Analiza y compara los resultados.
#Generar cálculos de las potencias con la funcion pwr.t2n.test.
#Es un t-test para 2 muestras con tamaños diferentes
#Aquí: d es el tamaño del efecto, Power= potencia de la prueba= 1-beta):
#pwr.t2n.test(n1 = NULL, n2= NULL, d = NULL, sig.level = 0.05, power = NULL, alternative = c("two.sided", "less","greater"))
ptab <- cbind(NULL, NULL)
for (i in seq(0,1, length.out = 200)){
pwrt1 <- pwr.t2n.test(n1 = 28, n2 = 1406,
sig.level = 0.05, power = NULL,
d = i, alternative="two.sided")
pwrt2 <- pwr.t2n.test(n1 = 144, n2 = 1290,
sig.level = 0.05, power = NULL,
d = i, alternative="two.sided")
pwrt3 <- pwr.t2n.test(n1 = 287, n2 = 1147,
sig.level = 0.05, power = NULL,
d = i, alternative="two.sided")
pwrt4 <- pwr.t2n.test(n1 = 430, n2 = 1004,
sig.level = 0.05, power = NULL,
d = i, alternative="two.sided")
pwrt5 <- pwr.t2n.test(n1 = 574, n2 = 860,
sig.level = 0.05, power = NULL,
d = i, alternative="two.sided")
pwrt6 <- pwr.t2n.test(n1 = 717, n2 = 717,
sig.level = 0.05, power = NULL,
d = i, alternative="two.sided")
#Es un data frame de tamaño 200 por 12:
ptab <- rbind(ptab, cbind(pwrt1$d, pwrt1$power,
pwrt2$d, pwrt2$power,
pwrt3$d, pwrt3$power,
pwrt4$d, pwrt4$power,
pwrt5$d, pwrt5$power,
pwrt6$d, pwrt6$power))
}
#Es un data frame de tamaño 200 por 13 (la 1ra columna es ID)
ptab <- cbind(seq_len(nrow(ptab)), ptab)
colnames(ptab) <- c("id","n1=28, n2=1406;effect size","n1=28, n2=1406;power",
"n1=144, n2=1290;effect size","n1=144, n2=1290;power",
"n1=287, n2=1147;effect size","n1=287, n2=1147;power",
"n1=430, n2=1004;effect size","n1=430, n2=1004;power",
"n1=574, n2=860;effect size","n1=574, n2=860;power",
"n1=717, n2=717;effect size","n1=717, n2=717;power")
#gather se usa para "reunir" un par key-value. En este caso, en 3 columnas: ID, variables y respuestas numericas
temp1 <- ptab %>% as.data.frame() %>% gather(key = name, value = val, 2:13)
#Separar celdas en columnas, de acuerdo a una condición (sep=). En este caso, se separó "name" en dos columnas: samples y pruebas
temp2 <- temp1 %>% separate(col = name, into = c("samples", "pruebas"), sep = ";")
#La función spread hace lo opuesto a gather. Son funciones complementarias.
#Es decir, si al resultado de aplicar la función spread le aplicamos la función gather llegamos al dataset original.
temp3 <- temp2 %>% spread(key = pruebas, value = val)
#Convertir la variable "samples" a factor.
temp3$samples <- factor(temp3$samples,
levels = c("n1=28, n2=1406", "n1=144, n2=1290",
"n1=287, n2=1147", "n1=430, n2=1004",
"n1=574, n2=860", "n1=717, n2=717")
)
#Gráfica
p<- ggplot(temp3, aes(x = `effect size`, y = power, color = samples)) +
geom_line(size=1) +
theme_bw() +
theme(axis.text=element_text(size=10),
axis.title=element_text(size=10),
legend.text=element_text(size=10)) +
geom_vline(xintercept = .54, linetype = 2) +
geom_hline(yintercept = 0.80, linetype = 2)+
labs(x="Effect size", y="Power") +
scale_color_discrete(name = "Sampling size")
# so simple to make interactive plots
plotly::ggplotly(p)
Solución
Caso 1
Para dar respuesta al caso 1, definimos los tamaños de los efectos y niveles de significancia de la siguiente manera:
- Tamaños de efecto a analizar: 0.1, 0.2, 0.5, 0.8.
- Niveles de significancia: 0.01, 0.05, 0.1, 0.2, 0.5.
- Tamaños muestrales: 20, 60, 100, 140.
# Definir parámetros
d <- c(0.1, 0.2, 0.5, 0.8) # Tamaños de efecto
alpha <- c(0.01, 0.05, 0.1, 0.2, 0.5) # Niveles de significancia
n <- c(20, 60, 100, 140) # Tamaños muestrales
# Crear un data frame vacío para almacenar resultados
results <- data.frame()
# Calcular la potencia para cada combinación de parámetros
for (effect_size in d) {
for (sig_level in alpha) {
for (sample_size in n) {
power <- power.t.test(n = sample_size, d = effect_size, sig.level = sig_level, power = NULL, type = "two.sample")$power
results <- rbind(results, data.frame(effect_size = effect_size, sig_level = sig_level, sample_size = sample_size, power = power))
}
}
}
# Resumen de los resultados
print(head(results))
effect_size sig_level sample_size power
1 0.1 0.01 20 0.01151187
2 0.1 0.01 60 0.02088787
3 0.1 0.01 100 0.03042242
4 0.1 0.01 140 0.04056670
5 0.1 0.05 20 0.04930484
6 0.1 0.05 60 0.07828753
# Crear gráficos para visualizar los resultados
# Gráfico 1: Usando ggplot2
p <- ggplot(data = results, aes(x = sample_size, y = power, color = as.factor(effect_size), linetype = as.factor(sig_level))) +
geom_line(size = 0.5) + # Hacemos las líneas más delgadas
ylab("Potencia") +
xlab("Tamaño muestral") +
ggtitle("Potencia de la Prueba t para Diferentes Tamaños de Efecto y Niveles de Significancia") +
theme_bw() +
theme(
plot.title = element_text(family = "Arial", size = 12) # Ajusta la fuente y tamaño del título
) +
scale_color_discrete(name = "Tamaño del efecto") +
scale_linetype_discrete(name = "Nivel de Significancia")
# Mostrar gráfico interactivo con plotly
plotly::ggplotly(p)
Caso 2
Para dar respuesta al caso 2, se definieron los tamaños de muestra indicados en el enunciado y adicionalmente se definieron 5 niveles de significancia \(\alpha\) diferentes. Posteriormente, para cada combinación de tamaño de efecto y nivel de significancia se calculó la potencia utilizando la función pwr.t2n.test, para finalmente obtener la visualización de los resultados que muestre la relación entre el tamaño del efecto y la potencia para cada nivel de significancia, incluyendo las líneas horizontales y verticales.
Resultados y análisis
Caso 1
La solución planteada calcula la potencia de una prueba t de dos muestras para diferentes tamaños de efecto y tamaños muestrales. Aquí se genera una gráfica para cada combinación de tamaño de efecto con el objetivo de visualizar cómo cambia la potencia en función del tamaño de la muestra. Las gráficas son generadas para los siguientes tamaños de efecto: muy pequeño (d=0.1), pequeño (d=0.2), mediano (d=0.5) y grande (d=0.8), y se utilizan diferentes configuraciones de tamaño de muestra y niveles de significancia para crear líneas en la gráfica.
Tamaño del Efecto (\(d\)) vs. Potencia:
La potencia es una medida de la capacidad de una prueba para detectar un efecto verdadero cuando existe uno. A medida que el tamaño del efecto aumenta, la potencia de la prueba también tiende a aumentar para el mismo tamaño de muestra y nivel de significancia.
Efecto Grande (d=0.8): Tendrá una alta potencia incluso con tamaños de muestra relativamente pequeños.
Efecto Pequeño (d=0.1): La potencia es mucho más baja y se necesita un tamaño de muestra mucho mayor para alcanzar una potencia aceptable (por lo general, ≥ 0.80).
Tamaño de Muestra vs. Potencia:
A medida que aumenta el tamaño de la muestra, la potencia de la prueba aumenta para un tamaño de efecto fijo. Esto se debe a que una mayor muestra proporciona más información y reduce el error estándar.
En la gráfica, veremos líneas que se alejan hacia arriba a medida que el tamaño de muestra aumenta, mostrando que se necesita menos tamaño de muestra para alcanzar un nivel deseado de potencia si el tamaño del efecto es grande.
Nivel de Significancia (α) vs. Potencia:
La relación entre el nivel de significancia y la potencia es inversa. Un nivel de significancia más bajo (más estricto) significa que la prueba requiere evidencia más fuerte para rechazar la hipótesis nula, lo que resulta en una potencia más baja. En la gráfica, un aumento en el nivel de significancia llevará a una curva de potencia más alta (mayor potencia) para el mismo tamaño de muestra y tamaño del efecto, mientras que una disminución en el nivel de significancia reducirá la potencia.
Conclusiones
Caso 1
Al repetir el análisis usando 5 valores distintos del nivel de significancia se determinó que los resultados cambian con diferentes niveles de significancia. Como se mencionó anteriormente, un nivel de significancia más bajo (por ejemplo, 0.01) se asocia con una menor potencia para un tamaño de muestra y tamaño de efecto fijos, mientras que un nivel de significancia más alto (por ejemplo, 0.5) se asocia con una mayor potencia. Esto es porque:
Niveles de Significancia Más Bajos (α más pequeño): Se requiere una evidencia más fuerte para rechazar la hipótesis nula, lo que resulta en una menor potencia. La prueba se vuelve más conservadora.
Niveles de Significancia Más Altos (α más grande): Se requiere una evidencia menos fuerte para rechazar la hipótesis nula, lo que resulta en una mayor potencia. La prueba se vuelve menos conservadora.
Adicionalmente, se observó lo siguiente cuando el tamaño de muestra de los grupos que se comparan es de 20, 60, 100 y 140
Tamaño de Muestra Pequeño (n = 20): La potencia es baja, especialmente para tamaños de efecto pequeños. Se necesitan tamaños de muestra mucho mayores para lograr una potencia aceptable.
Tamaño de Muestra Intermedio (n = 60 o 100): La potencia aumenta considerablemente en comparación con el tamaño de muestra pequeño. Se comienza a alcanzar niveles de potencia más aceptables.
Tamaño de Muestra Grande (n = 140): La potencia es alta y se requiere menos tamaño de efecto para alcanzar una potencia aceptable. Esto es especialmente útil para detectar efectos pequeños con mayor confianza.
En resumen, al aumentar el tamaño de muestra, se mejora la capacidad de la prueba para detectar efectos verdaderos, haciendo que la potencia sea más alta. La relación entre el tamaño del efecto, el tamaño de la muestra y el nivel de significancia debe ser cuidadosamente considerada al diseñar estudios estadísticos para asegurar que las pruebas sean suficientemente potentes para detectar efectos relevantes.