La función de potencia de una prueba estadística es una medida de la capacidad de la prueba para detectar un efecto o una diferencia cuando esta realmente existe en la población subyacente. Se define como la probabilidad de rechazar la hipótesis nula cuando la hipótesis alternativa es verdadera.
DISTRIBUCIÓN UNIFORME
# Instala y carga las librerías necesarias# install.packages(c("ggplot2", "pwr"))library(ggplot2)library(pwr)# Función para calcular la potencia de la prueba chi-cuadrado para la distribución uniformecalcular_potencia_chi_cuadrado_uniforme <-function(tamano_muestra, nivel_significancia, desviacion_uniforme) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución uniforme con desviación datos_observados <-runif(tamano_muestra) + desviacion_uniforme# Realiza la prueba chi-cuadrado resultado_prueba <-chisq.test(datos_observados)# Calcula la potencia de la prueba potencia <-pwr.chisq.test(w = resultado_prueba$statistic, df = resultado_prueba$parameter, N = tamano_muestra, sig.level = nivel_significancia)$powerreturn(potencia)}# Parámetrostamano_muestra <-100nivel_significancia <-0.05desviacion_uniforme <-0.2# Modifica según la magnitud de la desviación que deseas detectar# Calcula la potencia para diferentes desviacionespotencias <-sapply(seq(0, 0.5, by =0.1), function(desviacion) {calcular_potencia_chi_cuadrado_uniforme(tamano_muestra, nivel_significancia, desviacion)})
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
# Crea un gráfico de la potencia en función de la desviación uniformedf <-data.frame(Desviacion =seq(0, 0.5, by =0.1), Potencia = potencias)ggplot(df, aes(x = Desviacion, y = Potencia)) +geom_line() +labs(title ="Potencia de la prueba chi-cuadrado para distribución uniforme",x ="Desviación uniforme",y ="Potencia") +theme_minimal()
# Instala y carga la librería necesaria#install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba KS para la distribución uniformecalcular_potencia_ks_manual <-function(tamano_muestra, nivel_significancia, desviacion_uniforme) {# Configura la semilla para reproducibilidadset.seed(123)# Número de simulaciones para calcular la potencia num_simulaciones <-1000# Almacena los resultados de las pruebas resultados_pruebas <-numeric(num_simulaciones)for (i in1:num_simulaciones) {# Genera datos de muestra de una distribución uniforme con desviación datos_observados <-runif(tamano_muestra) + desviacion_uniforme# Realiza la prueba KS resultado_prueba <-ks.test(datos_observados, "punif")# Almacena el estadístico de la prueba resultados_pruebas[i] <- resultado_prueba$statistic }# Calcula la potencia de la prueba como la proporción de veces que el estadístico es mayor al valor crítico potencia <-mean(resultados_pruebas >qnorm(1- nivel_significancia))return(potencia)}# Parámetrostamano_muestra <-100nivel_significancia <-0.05# Calcula la potencia para diferentes desviacionesdesviaciones <-seq(0, 0.5, by =0.1)potencias <-sapply(desviaciones, function(desviacion) {calcular_potencia_ks_manual(tamano_muestra, nivel_significancia, desviacion)})# Crea un gráfico de la potencia en función de la desviación uniformedf <-data.frame(Desviacion = desviaciones, Potencia = potencias)ggplot(df, aes(x = Desviacion, y = Potencia)) +geom_line() +labs(title ="Potencia de la prueba KS para distribución uniforme",x ="Desviación uniforme",y ="Potencia") +theme_minimal()
Bajo la hipótesis nula la potencia es de 0.03, ahora veamos la prueba bajo un sesgo de datos
# Instala y carga la librería necesaria#install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba KS para la distribución uniformecalcular_potencia_ks_manual <-function(tamano_muestra, nivel_significancia, desviacion_uniforme) {# Configura la semilla para reproducibilidadset.seed(123)# Número de simulaciones para calcular la potencia num_simulaciones <-1000# Almacena los resultados de las pruebas resultados_pruebas <-numeric(num_simulaciones)for (i in1:num_simulaciones) {# Genera datos de muestra de una distribución uniforme con desviación datos_observados <-runif(tamano_muestra) + desviacion_uniforme# Realiza la prueba KS resultado_prueba <-ks.test(datos_observados, "punif")# Almacena el estadístico de la prueba resultados_pruebas[i] <- resultado_prueba$statistic }# Calcula la potencia de la prueba como la proporción de veces que el estadístico es mayor al valor crítico potencia <-mean(resultados_pruebas >qnorm(1- nivel_significancia))return(potencia)}# Parámetrostamano_muestra <-100nivel_significancia <-0.05# Calcula la potencia para diferentes desviacionesdesviaciones <-seq(0, 0.5, by =0.1)potencias <-sapply(desviaciones, function(desviacion) {calcular_potencia_ks_manual(tamano_muestra, nivel_significancia, desviacion)})# Crea un gráfico de la potencia en función de la desviación uniformedf <-data.frame(Desviacion = desviaciones, Potencia = potencias)ggplot(df, aes(x = Desviacion, y = Potencia)) +geom_line() +labs(title ="Potencia de la prueba KS para distribución uniforme",x ="Desviación uniforme",y ="Potencia") +theme_minimal()
Gráfica para KS
#ggplot(c(), aes(x = 1:tamano_muestra, y = pks)) +# geom_line() +#$ labs(title = "Potencia prueba Kolmogorov Smirnov",# x = "sesgo",# y = "Potencia")
CHI CUADRADO - GAMMA
Como la distribución chi cudrado es un caso particular de la gamma, se tiene
# Instala y carga las librerías necesarias#install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba chi-cuadrado para distribución gammacalcular_potencia_chi_cuadrado_gamma <-function(tamano_muestra, nivel_significancia, forma, escala) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución gamma datos_observados <-rgamma(tamano_muestra, shape = forma, scale = escala)# Realiza la prueba chi-cuadrado resultado_prueba <-chisq.test(datos_observados)# Calcula la potencia de la prueba potencia <-1-pchisq(resultado_prueba$statistic, df = tamano_muestra -1)return(potencia)}# Parámetros de la distribución gammaforma <-2escala <-1# Parámetros para la potenciatamano_muestra <-seq(50, 200, by =10)nivel_significancia <-0.05# Calcula la potencia para diferentes tamaños de muestrapotencias <-sapply(tamano_muestra, function(n) {calcular_potencia_chi_cuadrado_gamma(n, nivel_significancia, forma, escala)})
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
# Crea un gráfico de la potencia en función del tamaño de muestradf <-data.frame(N = tamano_muestra, Potencia = potencias)ggplot(df, aes(x = N, y = Potencia)) +geom_line() +labs(title ="Potencia de la prueba chi-cuadrado para distribución gamma",x ="Tamaño de la muestra",y ="Potencia") +theme_minimal()
# Instala y carga las librerías necesarias#install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba KS para distribución gammacalcular_potencia_ks_gamma <-function(tamano_muestra, nivel_significancia, forma, escala) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución gamma datos_observados <-rgamma(tamano_muestra, shape = forma, scale = escala)# Realiza la prueba Kolmogorov-Smirnov resultado_prueba <-ks.test(datos_observados, "pgamma", shape = forma, scale = escala)# Calcula la potencia de la prueba potencia <- resultado_prueba$p.valuereturn(potencia)}# Parámetros de la distribución gammaforma <-2escala <-1# Parámetros para la potenciatamano_muestra <-seq(50, 200, by =10)nivel_significancia <-0.05# Calcula la potencia para diferentes tamaños de muestrapotencias <-sapply(tamano_muestra, function(n) {calcular_potencia_ks_gamma(n, nivel_significancia, forma, escala)})# Crea un gráfico de la potencia en función del tamaño de muestradf <-data.frame(N = tamano_muestra, Potencia = potencias)ggplot(df, aes(x = N, y = Potencia)) +geom_line() +labs(title ="Potencia de la prueba KS para distribución gamma",x ="Tamaño de la muestra",y ="Potencia") +theme_minimal()
ANÁLISIS COMPARATIVO
# Instala y carga las librerías necesarias# install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba chi-cuadrado para distribución gammacalcular_potencia_chi_cuadrado_gamma <-function(tamano_muestra, nivel_significancia, forma, escala) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución gamma datos_observados <-rgamma(tamano_muestra, shape = forma, scale = escala)# Realiza la prueba chi-cuadrado resultado_prueba <-chisq.test(datos_observados)# Calcula la potencia de la prueba potencia <-1-pchisq(resultado_prueba$statistic, df = tamano_muestra -1)return(potencia)}# Función para calcular la potencia de la prueba KS para distribución gammacalcular_potencia_ks_gamma <-function(tamano_muestra, nivel_significancia, forma, escala) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución gamma datos_observados <-rgamma(tamano_muestra, shape = forma, scale = escala)# Realiza la prueba Kolmogorov-Smirnov resultado_prueba <-ks.test(datos_observados, "pgamma", shape = forma, scale = escala)# Calcula la potencia de la prueba potencia <- resultado_prueba$p.valuereturn(potencia)}# Parámetros de la distribución gammaforma <-2escala <-1# Parámetros para la potenciatamano_muestra <-seq(50, 200, by =10)nivel_significancia <-0.05# Calcula la potencia para diferentes tamaños de muestra para chi-cuadradopotencias_chi_cuadrado <-sapply(tamano_muestra, function(n) {calcular_potencia_chi_cuadrado_gamma(n, nivel_significancia, forma, escala)})
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
# Calcula la potencia para diferentes tamaños de muestra para KSpotencias_ks <-sapply(tamano_muestra, function(n) {calcular_potencia_ks_gamma(n, nivel_significancia, forma, escala)})# Crea un dataframe con los resultadosdf_chi_cuadrado <-data.frame(N = tamano_muestra, Potencia = potencias_chi_cuadrado, Prueba ="Chi-Cuadrado")df_ks <-data.frame(N = tamano_muestra, Potencia = potencias_ks, Prueba ="Kolmogorov-Smirnov")df <-rbind(df_chi_cuadrado, df_ks)# Crea un gráfico de línea para visualizar las potenciasggplot(df, aes(x = N, y = Potencia, color = Prueba, linetype = Prueba)) +geom_line() +labs(title ="Comparación de Potencias entre Chi-Cuadrado y Kolmogorov-Smirnov",x ="Tamaño de la muestra",y ="Potencia") +theme_minimal() +scale_color_manual(values =c("Chi-Cuadrado"="blue", "Kolmogorov-Smirnov"="red"))
En este caso la chi cudrado resulta ser más potente para la bondad de la gamma, como la chi es un caso particular de la gamma, la chi queda más potente con la prueba de bondad chi
POISSON
Prueba Chi-Cuadrado para Distribución Poisson:
# Instala y carga las librerías necesarias# install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba chi-cuadrado para distribución Poissoncalcular_potencia_chi_cuadrado_poisson <-function(tamano_muestra, nivel_significancia, lambda) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución Poisson datos_observados <-rpois(tamano_muestra, lambda)# Realiza la prueba chi-cuadrado resultado_prueba <-chisq.test(table(datos_observados))# Calcula la potencia de la prueba potencia <-1-pchisq(resultado_prueba$statistic, df = resultado_prueba$parameter)return(potencia)}# Parámetros de la distribución Poissonlambda <-3# Parámetros para la potenciatamano_muestra <-seq(50, 200, by =10)nivel_significancia <-0.05# Calcula la potencia para diferentes tamaños de muestra para chi-cuadradopotencias_chi_cuadrado <-sapply(tamano_muestra, function(n) {calcular_potencia_chi_cuadrado_poisson(n, nivel_significancia, lambda)})
Prueba Kolmogorov-Smirnov para Distribución Poisson:
# Instala y carga las librerías necesarias#install.packages("ggplot2")library(ggplot2)# Función para calcular la potencia de la prueba KS para distribución Poissoncalcular_potencia_ks_poisson <-function(tamano_muestra, nivel_significancia, lambda) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución Poisson datos_observados <-rpois(tamano_muestra, lambda)# Realiza la prueba Kolmogorov-Smirnov resultado_prueba <-ks.test(datos_observados, "ppois", lambda = lambda)# Calcula la potencia de la prueba potencia <- resultado_prueba$p.valuereturn(potencia)}# Parámetros de la distribución Poissonlambda <-3# Parámetros para la potenciatamano_muestra <-seq(50, 200, by =10)nivel_significancia <-0.05# Calcula la potencia para diferentes tamaños de muestra para KSpotencias_ks <-sapply(tamano_muestra, function(n) {calcular_potencia_ks_poisson(n, nivel_significancia, lambda)})
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
Warning in ks.test.default(datos_observados, "ppois", lambda = lambda): ties
should not be present for the Kolmogorov-Smirnov test
ANÁLISIS COMPARATIVO
# Instala y carga las librerías necesarias#install.packages("ggplot2")library(ggplot2)# Combina las potencias en un único dataframedf_chi_cuadrado <-data.frame(N = tamano_muestra, Potencia = potencias_chi_cuadrado, Prueba ="Chi-Cuadrado")df_ks <-data.frame(N = tamano_muestra, Potencia = potencias_ks, Prueba ="Kolmogorov-Smirnov")# Crea un dataframe con datos adicionales para la prueba bondad de ajustedf_bondad <-data.frame(N = tamano_muestra,Potencia =pmin(potencias_chi_cuadrado, potencias_ks),Prueba ="Bondad de Ajuste")# Combina todos los dataframesdf <-rbind(df_chi_cuadrado, df_ks, df_bondad)# Crea un gráfico de línea para visualizar las potenciasggplot(df, aes(x = N, y = Potencia, color = Prueba, linetype = Prueba)) +geom_line() +labs(title ="Comparación de Potencias para Prueba de Bondad de Ajuste",x ="Tamaño de la muestra",y ="Potencia") +theme_minimal() +scale_color_manual(values =c("Chi-Cuadrado"="blue", "Kolmogorov-Smirnov"="red", "Bondad de Ajuste"="green"))
# Instala y carga las librerías necesariasinstall.packages("ggplot2")
Warning: package 'ggplot2' is in use and will not be installed
library(ggplot2)# Función para calcular la potencia de la prueba chi-cuadrado para distribución gammacalcular_potencia_chi_cuadrado_gamma <-function(tamano_muestra, nivel_significancia, forma, escala) {# Configura la semilla para reproducibilidadset.seed(123)# Genera datos de muestra de una distribución gamma datos_observados <-rgamma(tamano_muestra, shape = forma, scale = escala)# Realiza la prueba chi-cuadrado resultado_prueba <-chisq.test(datos_observados)# Calcula la potencia de la prueba potencia <-1-pchisq(resultado_prueba$statistic, df = tamano_muestra -1)return(potencia)}# Parámetros de la distribución gammaforma <-2escala <-1# Parámetros para la potenciatamano_muestra <-seq(50, 200, by =10)nivel_significancia <-0.05# Calcula la potencia para diferentes tamaños de muestra para chi-cuadradopotencias_chi_cuadrado <-sapply(tamano_muestra, function(n) {calcular_potencia_chi_cuadrado_gamma(n, nivel_significancia, forma, escala)})
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
Warning in chisq.test(datos_observados): Chi-squared approximation may be
incorrect
# Crea un gráfico de línea para visualizar las potencias de chi-cuadradodf_chi_cuadrado <-data.frame(N = tamano_muestra, Potencia = potencias_chi_cuadrado, Prueba ="Chi-Cuadrado")ggplot(df_chi_cuadrado, aes(x = N, y = Potencia)) +geom_line() +labs(title ="Potencia de la prueba chi-cuadrado para distribución gamma",x ="Tamaño de la muestra",y ="Potencia") +theme_minimal()
Potencia de la prueba de Shapiro Wilk
# Instala y carga la librería para generar gráficos#install.packages("ggplot2")library(ggplot2)# Establece la semilla para reproducibilidadset.seed(123)# Número de iteracionesnum_iteraciones <-1000# Tamaño de la muestratamano_muestra <-50# Nivel de significancianivel_significancia <-0.05# Vector para almacenar los resultados de las pruebasresultados <-numeric(num_iteraciones)# Realiza las iteracionesfor (i in1:num_iteraciones) {# Genera datos de muestra de una distribución normal muestra <-rnorm(tamano_muestra)# Realiza la prueba de Kolmogorov-Smirnov resultado_prueba <-shapiro.test(muestra)# Almacena el p-valor en el vector de resultados resultados[i] <- resultado_prueba$p.value}# Calcula la potencia de la prueba (1 - tasa de error tipo II)potencia <-sum(resultados < nivel_significancia) / num_iteraciones# Imprime la potencia de la pruebacat("Potencia de la prueba de shapiro para la normalidad:", potencia, "\n")
Potencia de la prueba de shapiro para la normalidad: 0.046
# Crea un gráfico de densidad de los p-valoresggplot() +geom_density(aes(x = resultados), fill ="blue", alpha =0.5) +geom_vline(xintercept = nivel_significancia, linetype ="dashed", color ="red") +labs(title ="Distribución de p-valores de la prueba de Shapiro",x ="p-valor",y ="Densidad") +theme_minimal()
Potencia para la prueba Shapiro
tamano_muestra <-50psw<-rep(0,tamano_muestra)for(j in1:50){ potencia <-0for (i in1:num_iteraciones) {# Genera datos de muestra de una distribución normal muestra <-c(rnorm(tamano_muestra-j),rgamma(j,3,2))# Realiza la prueba de shapiro.test resultado_prueba <-shapiro.test(muestra)# Almacena el p-valor en el vector de resultados resultados[i] <- resultado_prueba$p.value}# Calcula la potencia de la prueba (1 - tasa de error tipo II)potencia <-sum(resultados < nivel_significancia) / num_iteracionespsw[j]<-potencia}psw
Para un tamaño de muestra n=50, es más potente el test de Kolmogorov Smirnov que el test de Shapiro
Test de Anderson-Darling
# Potencia de la prueba de Anderson-Darling
#install.packages("cramer")#install.packages("boot")library(nortest)# Instala y carga la librería para generar gráficos#install.packages("ggplot2")library(ggplot2)# Establece la semilla para reproducibilidadset.seed(123)# Número de iteracionesnum_iteraciones <-1000# Tamaño de la muestratamano_muestra <-50# Nivel de significancianivel_significancia <-0.05# Vector para almacenar los resultados de las pruebasresultados <-numeric(num_iteraciones)# Realiza las iteracionesfor (i in1:num_iteraciones) {# Genera datos de muestra de una distribución normal muestra <-rnorm(tamano_muestra)# Realiza la prueba de Kolmogorov-Smirnov resultado_prueba <-ad.test(muestra)# Almacena el p-valor en el vector de resultados resultados[i] <- resultado_prueba$p.value}# Calcula la potencia de la prueba (1 - tasa de error tipo II)potencia <-sum(resultados < nivel_significancia) / num_iteraciones# Imprime la potencia de la pruebacat("Potencia de la prueba de shapiro para la normalidad:", potencia, "\n")
Potencia de la prueba de shapiro para la normalidad: 0.051
# Crea un gráfico de densidad de los p-valoresggplot() +geom_density(aes(x = resultados), fill ="blue", alpha =0.5) +geom_vline(xintercept = nivel_significancia, linetype ="dashed", color ="red") +labs(title ="Distribución de p-valores de la prueba de AD",x ="p-valor",y ="Densidad") +theme_minimal()
Potencia para la prueba AD
tamano_muestra <-50pad<-rep(0,tamano_muestra)for(j in1:50){ potencia <-0for (i in1:num_iteraciones) {# Genera datos de muestra de una distribución normal muestra <-c(rnorm(tamano_muestra-j),rgamma(j,3,2))# Realiza la prueba de shapiro.test resultado_prueba <-ad.test(muestra)# Almacena el p-valor en el vector de resultados resultados[i] <- resultado_prueba$p.value}# Calcula la potencia de la prueba (1 - tasa de error tipo II)potencia <-sum(resultados < nivel_significancia) / num_iteracionespad[j]<-potencia}pad
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
# Instala y carga la librería para generar gráficos#install.packages("ggplot2")library(ggplot2)# Establece la semilla para reproducibilidadset.seed(123)# Número de iteracionesnum_iteraciones <-1000# Tamaño de la muestratamano_muestra <-50# Nivel de significancianivel_significancia <-0.05# Vector para almacenar los resultados de las pruebasresultados <-numeric(num_iteraciones)# Realiza las iteracionesfor (i in1:num_iteraciones) {# Genera datos de muestra de una distribución normal muestra <-rnorm(tamano_muestra)# Realiza la prueba de Kolmogorov-Smirnov resultado_prueba <-jarque.bera.test(muestra)# Almacena el p-valor en el vector de resultados resultados[i] <- resultado_prueba$p.value}# Calcula la potencia de la prueba (1 - tasa de error tipo II)potencia <-sum(resultados < nivel_significancia) / num_iteraciones# Imprime la potencia de la pruebacat("Potencia de la prueba de Jarque para la normalidad:", potencia, "\n")
Potencia de la prueba de Jarque para la normalidad: 0.033
# Crea un gráfico de densidad de los p-valoresggplot() +geom_density(aes(x = resultados), fill ="blue", alpha =0.5) +geom_vline(xintercept = nivel_significancia, linetype ="dashed", color ="red") +labs(title ="Distribución de p-valores de la prueba de JV",x ="p-valor",y ="Densidad") +theme_minimal()
Potencia para la prueba JV
tamano_muestra <-50pjv<-rep(0,tamano_muestra)for(j in1:50){ potencia <-0for (i in1:num_iteraciones) {# Genera datos de muestra de una distribución normal muestra <-c(rnorm(tamano_muestra-j),rgamma(j,3,2))# Realiza la prueba de shapiro.test resultado_prueba <-jarque.bera.test(muestra)# Almacena el p-valor en el vector de resultados resultados[i] <- resultado_prueba$p.value}# Calcula la potencia de la prueba (1 - tasa de error tipo II)potencia <-sum(resultados < nivel_significancia) / num_iteracionespjv[j]<-potencia}pjv
# Instala y carga la librería ggplot2 si aún no lo has hecholibrary(ggplot2)# Crea datos de ejemplo con múltiples trayectoriasnum_trayectorias <-3num_puntos <-50datos <-data.frame(x =1:tamano_muestra,y =as.matrix(c(psw,pad,pjv),ncol = num_trayectorias))# Crea el gráfico con ggplot2ggplot(datos, aes(x = x, y = y, group =rep(1:num_trayectorias, each = num_puntos), color =factor(rep(1:num_trayectorias, each = num_puntos)))) +geom_line() +geom_line() +labs(title ="Trayectorias múltiples",x ="Eje X",y ="Eje Y",color ="Trayectoria") +theme_minimal()