Caso 1
# Gráfica 1
# Se necesita el paquete pwr
if(!require(pwr)){install.packages("pwr"); library("pwr")}
## Cargando paquete requerido: 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”) o (0, 1, 2, 3, 4, 5, 6).
# Note que lty = “solid” es 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): llamada par(new=TRUE) sin
## gráfico
# 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 líneas
for(i in 1:length(columnas)) {
lines(1:150,
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 línea
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)
##
## Adjuntando el paquete: 'plotly'
## The following object is masked from 'package:reshape':
##
## rename
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
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() +
scale_color_discrete(name = "Tamaño del efecto")
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
# Interactive plot
plotly::ggplotly(p)
Cambio en el nivel de significancia a 0.01:
# Gráfica 1
# Se necesita el paquete pwr
if(!require(pwr)){install.packages("pwr"); library("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.01, 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”) o (0, 1, 2, 3, 4, 5, 6).
# Note que lty = “solid” es 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): llamada par(new=TRUE) sin
## gráfico
# 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 líneas
for(i in 1:length(columnas)) {
lines(1:150,
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 línea
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() +
scale_color_discrete(name = "Tamaño del efecto")
# Interactive plot
plotly::ggplotly(p)
Con cambios en la muestra:
# Gráfica 1
# Se necesita el paquete pwr
if(!require(pwr)){install.packages("pwr");library("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 <- c(20, 60, 100, 140) # Tamaños muestrales específicos
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” es 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): llamada par(new=TRUE) sin
## gráfico
# 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 líneas
for(i in 1:length(columnas)) # length(columnas) = 20
{
lines(n,
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 línea
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 = n, 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 = length(n)))
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")
## Scale for fill is already present.
## Adding another scale for fill, which will replace the existing scale.
# Interactive plot
plotly::ggplotly(p)
Caso 2:
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following object is masked from 'package:reshape':
##
## rename
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(tidyr) #Para manipulación de datos: separate, gather, spread
##
## Adjuntando el paquete: 'tidyr'
## The following objects are masked from 'package:reshape':
##
## expand, smiths
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")
#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)
5 valores distintos de nivel de significancia centrandose en n1=28 y n2=1406
#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 = 28, n2 = 1406,
sig.level = 0.04, power = NULL,
d = i, alternative="two.sided")
pwrt3 <- pwr.t2n.test(n1 = 28, n2 = 1406,
sig.level = 0.03, power = NULL,
d = i, alternative="two.sided")
pwrt4 <- pwr.t2n.test(n1 = 28, n2 = 1406,
sig.level = 0.02, power = NULL,
d = i, alternative="two.sided")
pwrt5 <- pwr.t2n.test(n1 = 28, n2 = 1406,
sig.level = 0.01, power = NULL,
d = i, alternative="two.sided")
pwrt6 <- pwr.t2n.test(n1 = 28, n2 = 1406,
sig.level = 0.06, 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)
Conclusión caso 1: Observamos que al aumentar el numero de la muestra la potencia también aumenta de tal mono que aumental la probabilidad de detectar algún error, al aumentar la significancia, tambien aumentamos el tamaño minimo de la muestra para obtener un resultado con potencia significante, cosa que podemos ver cunado editamos los valores individuales de las muestras.
Conclusión caso 2: En la priemra grafica al observar n1: 28 y N2: 1406 podemos observar cómo el valor de un tamaño de efecto para obtener una potencia significativa es decir mayor o igual a 80 aumenta conforme lo hace el valor de significancia, esto quiere decir que para dos muestras desequilibradas para obtener una potencia deseada debe aumentar la significancia.