library(RVAideMemoire)
## *** Package RVAideMemoire v 0.9-83-12 ***
library(LePage)
library(dplyr)
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
#2. PARÁMETROS GENERALES
set.seed(12345)
alpha <- 0.05
B <- 1000
fisher_method <- function(p){
stat <- -2 * sum(log(p))
p_value <- 1 - pchisq(
stat,
df = 2 * length(p)
)
return(p_value)
}
aplicar_pruebas <- function(x,y){
p1 <- wilcox.test(
x,
y,
exact = FALSE
)$p.value
p2 <- ansari.test(
x,
y
)$p.value
p3 <- lepage(
x,
y
)["pvalue","L0"]
p4 <- fp.test(
x,
y,
delta = 0,
alternative = "two.sided"
)$p.value
p5 <- fisher_method(
c(p1,p2,p3,p4)
)
return(
c(
Wilcoxon = p1,
Ansari = p2,
Lepage = p3,
Fligner_Policello = p4,
Fisher = p5
)
)
}
generar_datos <- function(
distribucion,
n,
varianza,
escenario
){
sd2 <- sqrt(varianza)
############################################################
# NORMAL
############################################################
if(distribucion=="Normal"){
x <- rnorm(n,0,1)
if(escenario=="H0")
y <- rnorm(n,0,1)
if(escenario=="localizacion")
y <- rnorm(n,0.5,1)
if(escenario=="dispersion")
y <- rnorm(n,0,sd2)
if(escenario=="combinado")
y <- rnorm(n,0.5,sd2)
}
############################################################
# EXPONENCIAL
############################################################
if(distribucion=="Exponencial"){
x <- rexp(n,1)
if(escenario=="H0")
y <- rexp(n,1)
if(escenario=="localizacion")
y <- rexp(n,1)+0.5
if(escenario=="dispersion")
y <- rexp(n,1/sd2)
if(escenario=="combinado")
y <- rexp(n,1/sd2)+0.5
}
############################################################
# LOG-NORMAL
############################################################
if(distribucion=="Log-normal"){
x <- rlnorm(n,0,1)
if(escenario=="H0")
y <- rlnorm(n,0,1)
if(escenario=="localizacion")
y <- rlnorm(n,0.5,1)
if(escenario=="dispersion")
y <- rlnorm(n,0,sd2)
if(escenario=="combinado")
y <- rlnorm(n,0.5,sd2)
}
############################################################
# CONTAMINADA
############################################################
if(distribucion=="Contaminada"){
if(escenario=="H0"){
x <- rnorm(n,0,1)
y <- rnorm(n,0,1)
}
if(escenario=="localizacion"){
x <- rnorm(n,0,1)
y <- rnorm(n,0.5,1)
}
if(escenario=="dispersion"){
x <- rnorm(n,0,1)
y <- rnorm(n,0,sd2)
}
if(escenario=="combinado"){
x <- rnorm(n,0,1)
y <- rnorm(n,0.5,sd2)
}
k <- ceiling(0.10*n)
ind_x <- sample(1:n,k)
ind_y <- sample(1:n,k)
x[ind_x] <- x[ind_x] + rnorm(k,0,8)
y[ind_y] <- y[ind_y] + rnorm(k,0,8)
}
return(
list(
x=x,
y=y
)
)
}
simular <- function(
distribucion,
n,
varianza,
escenario,
B=1000
){
resultados <- matrix(
NA,
nrow=B,
ncol=5
)
colnames(resultados) <- c(
"Wilcoxon",
"Ansari",
"Lepage",
"Fligner_Policello",
"Fisher"
)
for(i in 1:B){
datos <- generar_datos(
distribucion,
n,
varianza,
escenario
)
resultados[i,] <- aplicar_pruebas(
datos$x,
datos$y
)
}
return(
colMeans(
resultados < alpha,
na.rm=TRUE
)
)
}
tabla_error <- data.frame()
for(dist in c(
"Normal",
"Exponencial",
"Log-normal",
"Contaminada"
)){
for(v in c(1,2,4)){
for(n in c(10,20,50)){
resultado <- simular(
distribucion = dist,
n = n,
varianza = v,
escenario = "H0",
B = B
)
tabla_error <- rbind(
tabla_error,
data.frame(
Distribucion = dist,
Varianza = paste0("1:",v),
n = n,
Wilcoxon = resultado["Wilcoxon"],
Ansari = resultado["Ansari"],
Lepage = resultado["Lepage"],
Fligner_Policello = resultado["Fligner_Policello"],
Fisher = resultado["Fisher"]
)
)
}
}
}
rownames(tabla_error) <- NULL
cat("\n")
cat("=========================================\n")
## =========================================
cat("TABLA 1. ERROR TIPO I\n")
## TABLA 1. ERROR TIPO I
cat("=========================================\n")
## =========================================
print(tabla_error)
## Distribucion Varianza n Wilcoxon Ansari Lepage Fligner_Policello Fisher
## 1 Normal 1:1 10 0.034 0.039 0.035 0.066 0.131
## 2 Normal 1:1 20 0.046 0.045 0.044 0.052 0.105
## 3 Normal 1:1 50 0.043 0.056 0.049 0.044 0.111
## 4 Normal 1:2 10 0.039 0.036 0.042 0.074 0.109
## 5 Normal 1:2 20 0.055 0.051 0.045 0.065 0.112
## 6 Normal 1:2 50 0.042 0.043 0.036 0.045 0.095
## 7 Normal 1:4 10 0.048 0.038 0.046 0.068 0.109
## 8 Normal 1:4 20 0.056 0.052 0.058 0.064 0.132
## 9 Normal 1:4 50 0.045 0.049 0.053 0.048 0.117
## 10 Exponencial 1:1 10 0.041 0.043 0.034 0.080 0.123
## 11 Exponencial 1:1 20 0.052 0.057 0.056 0.061 0.122
## 12 Exponencial 1:1 50 0.052 0.041 0.040 0.057 0.115
## 13 Exponencial 1:2 10 0.041 0.028 0.035 0.071 0.115
## 14 Exponencial 1:2 20 0.045 0.048 0.037 0.053 0.114
## 15 Exponencial 1:2 50 0.052 0.050 0.050 0.053 0.115
## 16 Exponencial 1:4 10 0.037 0.051 0.045 0.074 0.119
## 17 Exponencial 1:4 20 0.044 0.053 0.046 0.047 0.105
## 18 Exponencial 1:4 50 0.057 0.046 0.052 0.063 0.129
## 19 Log-normal 1:1 10 0.056 0.036 0.040 0.073 0.115
## 20 Log-normal 1:1 20 0.052 0.047 0.053 0.063 0.129
## 21 Log-normal 1:1 50 0.056 0.049 0.058 0.057 0.131
## 22 Log-normal 1:2 10 0.041 0.047 0.044 0.063 0.112
## 23 Log-normal 1:2 20 0.028 0.050 0.037 0.036 0.106
## 24 Log-normal 1:2 50 0.051 0.057 0.055 0.052 0.115
## 25 Log-normal 1:4 10 0.037 0.052 0.051 0.054 0.110
## 26 Log-normal 1:4 20 0.053 0.049 0.049 0.065 0.130
## 27 Log-normal 1:4 50 0.053 0.048 0.038 0.055 0.107
## 28 Contaminada 1:1 10 0.036 0.022 0.025 0.061 0.092
## 29 Contaminada 1:1 20 0.052 0.023 0.029 0.063 0.105
## 30 Contaminada 1:1 50 0.042 0.034 0.038 0.046 0.089
## 31 Contaminada 1:2 10 0.039 0.019 0.025 0.060 0.085
## 32 Contaminada 1:2 20 0.049 0.027 0.033 0.058 0.097
## 33 Contaminada 1:2 50 0.049 0.034 0.047 0.052 0.108
## 34 Contaminada 1:4 10 0.043 0.020 0.030 0.068 0.091
## 35 Contaminada 1:4 20 0.050 0.027 0.033 0.061 0.102
## 36 Contaminada 1:4 50 0.043 0.023 0.027 0.045 0.077
tabla_potencia <- data.frame()
for(dist in c(
"Normal",
"Exponencial",
"Log-normal",
"Contaminada"
)){
for(v in c(1,2,4)){
for(n in c(10,20,50)){
for(esc in c(
"localizacion",
"dispersion",
"combinado"
)){
resultado <- simular(
distribucion = dist,
n = n,
varianza = v,
escenario = esc,
B = B
)
tabla_potencia <- rbind(
tabla_potencia,
data.frame(
Distribucion = dist,
Varianza = paste0("1:",v),
n = n,
Escenario = esc,
Wilcoxon = as.numeric(resultado["Wilcoxon"]),
Ansari = as.numeric(resultado["Ansari"]),
Lepage = as.numeric(resultado["Lepage"]),
Fligner_Policello = as.numeric(resultado["Fligner_Policello"]),
Fisher = as.numeric(resultado["Fisher"])
)
)
}
}
}
}
rownames(tabla_potencia) <- NULL
cat("\n")
cat("=========================================\n")
## =========================================
cat("TABLA 2. POTENCIA EMPÍRICA\n")
## TABLA 2. POTENCIA EMPÍRICA
cat("=========================================\n")
## =========================================
print(tabla_potencia)
## Distribucion Varianza n Escenario Wilcoxon Ansari Lepage
## 1 Normal 1:1 10 localizacion 0.159 0.031 0.107
## 2 Normal 1:1 10 dispersion 0.043 0.042 0.040
## 3 Normal 1:1 10 combinado 0.169 0.030 0.126
## 4 Normal 1:1 20 localizacion 0.323 0.044 0.223
## 5 Normal 1:1 20 dispersion 0.063 0.041 0.049
## 6 Normal 1:1 20 combinado 0.292 0.046 0.224
## 7 Normal 1:1 50 localizacion 0.664 0.035 0.548
## 8 Normal 1:1 50 dispersion 0.050 0.038 0.049
## 9 Normal 1:1 50 combinado 0.678 0.030 0.544
## 10 Normal 1:2 10 localizacion 0.147 0.041 0.112
## 11 Normal 1:2 10 dispersion 0.048 0.094 0.078
## 12 Normal 1:2 10 combinado 0.121 0.088 0.127
## 13 Normal 1:2 20 localizacion 0.324 0.049 0.253
## 14 Normal 1:2 20 dispersion 0.043 0.191 0.149
## 15 Normal 1:2 20 combinado 0.236 0.186 0.306
## 16 Normal 1:2 50 localizacion 0.678 0.042 0.580
## 17 Normal 1:2 50 dispersion 0.038 0.439 0.316
## 18 Normal 1:2 50 combinado 0.507 0.444 0.681
## 19 Normal 1:4 10 localizacion 0.165 0.033 0.113
## 20 Normal 1:4 10 dispersion 0.042 0.280 0.227
## 21 Normal 1:4 10 combinado 0.092 0.235 0.259
## 22 Normal 1:4 20 localizacion 0.320 0.050 0.244
## 23 Normal 1:4 20 dispersion 0.053 0.586 0.481
## 24 Normal 1:4 20 combinado 0.175 0.542 0.570
## 25 Normal 1:4 50 localizacion 0.676 0.051 0.550
## 26 Normal 1:4 50 dispersion 0.060 0.950 0.911
## 27 Normal 1:4 50 combinado 0.335 0.936 0.956
## 28 Exponencial 1:1 10 localizacion 0.314 0.119 0.346
## 29 Exponencial 1:1 10 dispersion 0.039 0.046 0.049
## 30 Exponencial 1:1 10 combinado 0.289 0.111 0.320
## 31 Exponencial 1:1 20 localizacion 0.579 0.303 0.702
## 32 Exponencial 1:1 20 dispersion 0.051 0.044 0.050
## 33 Exponencial 1:1 20 combinado 0.610 0.321 0.737
## 34 Exponencial 1:1 50 localizacion 0.938 0.762 0.988
## 35 Exponencial 1:1 50 dispersion 0.042 0.051 0.042
## 36 Exponencial 1:1 50 combinado 0.944 0.724 0.990
## 37 Exponencial 1:2 10 localizacion 0.312 0.129 0.349
## 38 Exponencial 1:2 10 dispersion 0.094 0.029 0.069
## 39 Exponencial 1:2 10 combinado 0.483 0.044 0.408
## 40 Exponencial 1:2 20 localizacion 0.583 0.350 0.720
## 41 Exponencial 1:2 20 dispersion 0.151 0.056 0.115
## 42 Exponencial 1:2 20 combinado 0.816 0.105 0.796
## 43 Exponencial 1:2 50 localizacion 0.945 0.732 0.987
## 44 Exponencial 1:2 50 dispersion 0.316 0.104 0.280
## 45 Exponencial 1:2 50 combinado 0.994 0.345 0.997
## 46 Exponencial 1:4 10 localizacion 0.289 0.122 0.309
## 47 Exponencial 1:4 10 dispersion 0.209 0.044 0.161
## 48 Exponencial 1:4 10 combinado 0.655 0.023 0.528
## 49 Exponencial 1:4 20 localizacion 0.585 0.308 0.706
## 50 Exponencial 1:4 20 dispersion 0.451 0.074 0.388
## 51 Exponencial 1:4 20 combinado 0.942 0.034 0.900
## 52 Exponencial 1:4 50 localizacion 0.940 0.724 0.992
## 53 Exponencial 1:4 50 dispersion 0.821 0.156 0.803
## 54 Exponencial 1:4 50 combinado 1.000 0.061 0.999
## 55 Log-normal 1:1 10 localizacion 0.165 0.026 0.114
## 56 Log-normal 1:1 10 dispersion 0.036 0.037 0.034
## 57 Log-normal 1:1 10 combinado 0.163 0.022 0.116
## 58 Log-normal 1:1 20 localizacion 0.323 0.030 0.231
## 59 Log-normal 1:1 20 dispersion 0.051 0.047 0.041
## 60 Log-normal 1:1 20 combinado 0.317 0.051 0.232
## 61 Log-normal 1:1 50 localizacion 0.689 0.034 0.573
## 62 Log-normal 1:1 50 dispersion 0.040 0.049 0.043
## 63 Log-normal 1:1 50 combinado 0.689 0.033 0.572
## 64 Log-normal 1:2 10 localizacion 0.161 0.031 0.115
## 65 Log-normal 1:2 10 dispersion 0.039 0.102 0.086
## 66 Log-normal 1:2 10 combinado 0.132 0.090 0.155
## 67 Log-normal 1:2 20 localizacion 0.300 0.050 0.209
## 68 Log-normal 1:2 20 dispersion 0.050 0.204 0.174
## 69 Log-normal 1:2 20 combinado 0.211 0.173 0.278
## 70 Log-normal 1:2 50 localizacion 0.675 0.032 0.559
## 71 Log-normal 1:2 50 dispersion 0.049 0.498 0.398
## 72 Log-normal 1:2 50 combinado 0.495 0.422 0.676
## 73 Log-normal 1:4 10 localizacion 0.143 0.035 0.098
## 74 Log-normal 1:4 10 dispersion 0.059 0.259 0.226
## 75 Log-normal 1:4 10 combinado 0.093 0.238 0.247
## 76 Log-normal 1:4 20 localizacion 0.315 0.034 0.233
## 77 Log-normal 1:4 20 dispersion 0.061 0.593 0.504
## 78 Log-normal 1:4 20 combinado 0.148 0.571 0.577
## 79 Log-normal 1:4 50 localizacion 0.694 0.054 0.579
## 80 Log-normal 1:4 50 dispersion 0.064 0.947 0.907
## 81 Log-normal 1:4 50 combinado 0.337 0.952 0.956
## 82 Contaminada 1:1 10 localizacion 0.122 0.017 0.076
## 83 Contaminada 1:1 10 dispersion 0.048 0.026 0.038
## 84 Contaminada 1:1 10 combinado 0.128 0.023 0.085
## 85 Contaminada 1:1 20 localizacion 0.231 0.019 0.167
## 86 Contaminada 1:1 20 dispersion 0.041 0.020 0.024
## 87 Contaminada 1:1 20 combinado 0.212 0.026 0.154
## 88 Contaminada 1:1 50 localizacion 0.522 0.028 0.423
## 89 Contaminada 1:1 50 dispersion 0.050 0.024 0.031
## 90 Contaminada 1:1 50 combinado 0.501 0.026 0.404
## 91 Contaminada 1:2 10 localizacion 0.088 0.022 0.059
## 92 Contaminada 1:2 10 dispersion 0.049 0.065 0.063
## 93 Contaminada 1:2 10 combinado 0.108 0.039 0.082
## 94 Contaminada 1:2 20 localizacion 0.247 0.026 0.160
## 95 Contaminada 1:2 20 dispersion 0.059 0.115 0.097
## 96 Contaminada 1:2 20 combinado 0.182 0.125 0.205
## 97 Contaminada 1:2 50 localizacion 0.521 0.029 0.406
## 98 Contaminada 1:2 50 dispersion 0.046 0.356 0.256
## 99 Contaminada 1:2 50 combinado 0.419 0.279 0.520
## 100 Contaminada 1:4 10 localizacion 0.143 0.021 0.090
## 101 Contaminada 1:4 10 dispersion 0.062 0.152 0.127
## 102 Contaminada 1:4 10 combinado 0.096 0.162 0.168
## 103 Contaminada 1:4 20 localizacion 0.231 0.018 0.141
## 104 Contaminada 1:4 20 dispersion 0.054 0.445 0.328
## 105 Contaminada 1:4 20 combinado 0.130 0.394 0.356
## 106 Contaminada 1:4 50 localizacion 0.510 0.023 0.394
## 107 Contaminada 1:4 50 dispersion 0.065 0.863 0.779
## 108 Contaminada 1:4 50 combinado 0.235 0.876 0.878
## Fligner_Policello Fisher
## 1 0.215 0.265
## 2 0.069 0.119
## 3 0.231 0.289
## 4 0.339 0.419
## 5 0.077 0.128
## 6 0.326 0.429
## 7 0.676 0.745
## 8 0.052 0.101
## 9 0.687 0.767
## 10 0.202 0.262
## 11 0.066 0.161
## 12 0.165 0.270
## 13 0.343 0.428
## 14 0.052 0.238
## 15 0.252 0.455
## 16 0.686 0.758
## 17 0.039 0.401
## 18 0.513 0.807
## 19 0.234 0.288
## 20 0.062 0.314
## 21 0.138 0.377
## 22 0.352 0.447
## 23 0.056 0.561
## 24 0.179 0.673
## 25 0.689 0.759
## 26 0.054 0.929
## 27 0.317 0.972
## 28 0.389 0.556
## 29 0.066 0.115
## 30 0.361 0.539
## 31 0.597 0.847
## 32 0.055 0.119
## 33 0.620 0.857
## 34 0.937 0.996
## 35 0.043 0.114
## 36 0.942 0.998
## 37 0.374 0.541
## 38 0.138 0.172
## 39 0.575 0.669
## 40 0.604 0.860
## 41 0.171 0.260
## 42 0.828 0.919
## 43 0.944 0.995
## 44 0.326 0.454
## 45 0.994 0.998
## 46 0.376 0.556
## 47 0.286 0.356
## 48 0.743 0.785
## 49 0.604 0.820
## 50 0.487 0.595
## 51 0.947 0.968
## 52 0.939 0.999
## 53 0.827 0.923
## 54 1.000 1.000
## 55 0.236 0.282
## 56 0.064 0.112
## 57 0.216 0.273
## 58 0.350 0.433
## 59 0.061 0.104
## 60 0.344 0.420
## 61 0.700 0.768
## 62 0.043 0.108
## 63 0.699 0.753
## 64 0.211 0.267
## 65 0.067 0.173
## 66 0.179 0.298
## 67 0.325 0.425
## 68 0.056 0.243
## 69 0.231 0.435
## 70 0.688 0.764
## 71 0.050 0.475
## 72 0.501 0.813
## 73 0.206 0.257
## 74 0.075 0.321
## 75 0.123 0.383
## 76 0.338 0.438
## 77 0.064 0.577
## 78 0.150 0.671
## 79 0.703 0.789
## 80 0.060 0.920
## 81 0.329 0.967
## 82 0.162 0.188
## 83 0.082 0.110
## 84 0.175 0.204
## 85 0.252 0.319
## 86 0.054 0.089
## 87 0.240 0.296
## 88 0.531 0.623
## 89 0.051 0.093
## 90 0.509 0.586
## 91 0.124 0.166
## 92 0.069 0.130
## 93 0.152 0.200
## 94 0.277 0.343
## 95 0.065 0.175
## 96 0.194 0.363
## 97 0.527 0.612
## 98 0.048 0.337
## 99 0.430 0.692
## 100 0.188 0.233
## 101 0.088 0.223
## 102 0.134 0.297
## 103 0.255 0.322
## 104 0.056 0.422
## 105 0.141 0.485
## 106 0.521 0.616
## 107 0.061 0.817
## 108 0.228 0.915
tabla_robustez <- data.frame()
for(dist in c(
"Exponencial",
"Log-normal",
"Contaminada"
)){
for(v in c(2,4)){
for(n in c(10,20,50)){
resultado <- simular(
distribucion = dist,
n = n,
varianza = v,
escenario = "H0",
B = B
)
tabla_robustez <- rbind(
tabla_robustez,
data.frame(
Distribucion = dist,
Varianza = paste0("1:",v),
n = n,
Wilcoxon = as.numeric(resultado["Wilcoxon"]),
Ansari = as.numeric(resultado["Ansari"]),
Lepage = as.numeric(resultado["Lepage"]),
Fligner_Policello = as.numeric(resultado["Fligner_Policello"]),
Fisher = as.numeric(resultado["Fisher"])
)
)
}
}
}
rownames(tabla_robustez) <- NULL
cat("\n")
cat("=========================================\n")
## =========================================
cat("TABLA 3. ROBUSTEZ\n")
## TABLA 3. ROBUSTEZ
cat("=========================================\n")
## =========================================
print(tabla_robustez)
## Distribucion Varianza n Wilcoxon Ansari Lepage Fligner_Policello Fisher
## 1 Exponencial 1:2 10 0.043 0.036 0.040 0.068 0.106
## 2 Exponencial 1:2 20 0.044 0.042 0.043 0.053 0.100
## 3 Exponencial 1:2 50 0.047 0.048 0.051 0.052 0.115
## 4 Exponencial 1:4 10 0.044 0.033 0.035 0.065 0.110
## 5 Exponencial 1:4 20 0.054 0.052 0.062 0.065 0.113
## 6 Exponencial 1:4 50 0.068 0.051 0.062 0.071 0.136
## 7 Log-normal 1:2 10 0.041 0.033 0.041 0.077 0.114
## 8 Log-normal 1:2 20 0.048 0.043 0.047 0.059 0.116
## 9 Log-normal 1:2 50 0.057 0.051 0.053 0.058 0.131
## 10 Log-normal 1:4 10 0.039 0.037 0.042 0.071 0.116
## 11 Log-normal 1:4 20 0.046 0.048 0.048 0.050 0.126
## 12 Log-normal 1:4 50 0.044 0.049 0.052 0.047 0.110
## 13 Contaminada 1:2 10 0.037 0.023 0.031 0.065 0.098
## 14 Contaminada 1:2 20 0.046 0.030 0.031 0.056 0.097
## 15 Contaminada 1:2 50 0.040 0.022 0.025 0.040 0.094
## 16 Contaminada 1:4 10 0.046 0.025 0.032 0.070 0.092
## 17 Contaminada 1:4 20 0.054 0.020 0.036 0.062 0.095
## 18 Contaminada 1:4 50 0.050 0.025 0.038 0.052 0.100