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.
Codigo:
#Gráfica 1
#Se necesita el paquete pwr
if(!require(pwr)){install.packages("pwr");library("pwr")}
## Loading required package: pwr
# 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)
## Warning in par(fig = c(0, 0.8, 0, 1), new = TRUE): calling par(new=TRUE) with
## no plot
#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))
codigo
#library(dplyr)
#library(tidyr) #Para manipulación de datos: separate, gather, spread
#library(ggplot2)
#library(plotly) #Para curvas de potencias interactivas
#library(pwr) #Para cálculo de las potencias
#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")
De acuerdo a los casos expuestos anteriormente se puede inferir que: