From e80a0a187f2648146b5da4312fdf31d86f654f1c Mon Sep 17 00:00:00 2001 From: Walmes Zeviani Date: Mon, 15 Oct 2018 20:44:09 -0300 Subject: [PATCH] =?UTF-8?q?Mais=20conte=C3=BAdo=20para=20MC.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/ce089-08.R | 101 +++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 92 insertions(+), 9 deletions(-) diff --git a/scripts/ce089-08.R b/scripts/ce089-08.R index 8906759..9f91438 100644 --- a/scripts/ce089-08.R +++ b/scripts/ce089-08.R @@ -1,8 +1,18 @@ +#======================================================================= +# Testes de hipótese Monte Carlo. + #----------------------------------------------------------------------- # Teste para independência de processo pontual. -plot(NULL, NULL, xlim = c(0, 1), ylim = c(0, 1), asp = 1) -lines(x = c(0, 1, 1, 0, 0), y = c(0, 0, 1, 1, 0)) +plot(xy, + NULL, + xlim = c(0, 1), + ylim = c(0, 1), + asp = 1, + axes = FALSE, + ann = FALSE) +lines(x = c(0, 1, 1, 0, 0), + y = c(0, 0, 1, 1, 0)) # xy <- locator(n = 20, type = "p", pch = 19) # dput(lapply(xy, round, digits = 3)) @@ -21,10 +31,17 @@ xy <- structure(list(x = c(0.204, 0.186, 0.529, 0.529, 0.385, 0.579, # Transforma a lista em matriz. xy <- do.call(cbind, xy) -plot(xy, NULL, xlim = c(0, 1), ylim = c(0, 1), asp = 1) -lines(x = c(0, 1, 1, 0, 0), y = c(0, 0, 1, 1, 0)) - -# Calcula todas as distâncias (euclidianas). +plot(xy, + NULL, + xlim = c(0, 1), + ylim = c(0, 1), + asp = 1, + axes = FALSE, + ann = FALSE) +lines(x = c(0, 1, 1, 0, 0), + y = c(0, 0, 1, 1, 0)) + +# Calcula todas as distâncias (euclidianas) entre pontos. d <- dist(xy) d @@ -52,7 +69,7 @@ abline(v = m, col = 2) 2 * sum(M > m)/length(M) #----------------------------------------------------------------------- -# Moficando a estatística de teste. +# ATTENTION: dados um tanto patológicos. xy <- structure(list(x = c(0.088, 0.326, 0.577, 0.846, 0.857, 0.568, 0.306, 0.077, 0.077, 0.328, 0.597, 0.883, @@ -67,8 +84,51 @@ xy <- structure(list(x = c(0.088, 0.326, 0.577, 0.846, 0.857, 0.568, # Transforma a lista em matriz. xy <- do.call(cbind, xy) -plot(xy, NULL, xlim = c(0, 1), ylim = c(0, 1), asp = 1) -lines(x = c(0, 1, 1, 0, 0), y = c(0, 0, 1, 1, 0)) +plot(xy, + NULL, + xlim = c(0, 1), + ylim = c(0, 1), + asp = 1, + axes = FALSE, + ann = FALSE) +lines(x = c(0, 1, 1, 0, 0), + y = c(0, 0, 1, 1, 0)) + +#----------------------------------------------------------------------- +# Modificando a estatística de teste 1. + +# A soma das menores distâncias entre vizinhos mais próximos. +d <- dist(xy) +D <- as.matrix(d) +diag(D) <- Inf +apply(D, MARGIN = 2, FUN = min) +m <- sum(apply(D, MARGIN = 2, FUN = min)) + +# Número de pontos. +n <- nrow(xy) + +# Geração de estatísticas por simulação do modelo assumido sob +# hipótese nula. +M <- replicate(9999, { + d <- dist(cbind(x = runif(n), y = runif(n))) + D <- as.matrix(d) + diag(D) <- Inf + sum(apply(D, MARGIN = 2, FUN = min)) +}) + +# Concatena as estatísticas simuladas com a observada. +M <- c(m, M) + +# Gráfico da distribuição acumulada empírica. +plot(ecdf(M)) +abline(h = c(0.025, 0.975), lty = 2) +abline(v = m, col = 2) + +# P-valor. +2 * sum(M > m)/length(M) + +#----------------------------------------------------------------------- +# Moficando a estatística de teste 2. # Todas as distância entre os pontos (a estatística de teste é um vetor # e não um escalar). @@ -90,6 +150,9 @@ for (i in 2:ncol(D)) { } lines(ecdf(D[, 1]), cex = 0, col = 2, lwd = 2) +#======================================================================= +# Avaliação de métodos de amostragem ou delineamentos. + #----------------------------------------------------------------------- # Amostragem por Conjuntos Ordenados. @@ -162,3 +225,23 @@ qqmath(~m1 + m2 + m3, layout = c(NA, 1)) #----------------------------------------------------------------------- + +# Criando um grid de rho. +rho_grid <- seq(0, 0.95, by = 0.05) + +res <- lapply(rho_grid, + FUN = function(rho) { + replicate(500, rssur(m = 10, rho = rho)) + }) +str(res) + +n <- length(res[[1]]) +res <- do.call(c, res) + +res <- data.frame(rho = rep(rho_grid, each = n), valor = res) +str(res) + +densityplot(~valor | rho, data = res) + + layer(panel.abline(v = 0, lty = 2)) + +#----------------------------------------------------------------------- -- 2.22.0