# 0. Configurações Iniciais
# setwd("C:/Users/Jefferson B. Bezerra/AREA DE TRABALHO/Documentos")

# 1. Parâmetros Fixos e Sequências
n_obs <- 28
n_sim <- 5000

# Definindo as sequências para a Normal
# 'desvios' substitui os 'betas' e 'medias' substitui os 'alfas'
desvios <- seq(from = 1, to = 20, by = 1)   # Equivalente ao desvio padrão (sd)
medias  <- seq(from = 0, to = 50, by = 5)    # Equivalente à média (mean)

# 2. Inicializar o Banco de Dados Final
# Linhas = Desvios, Colunas = Médias
df_final <- data.frame(desvio_padrao = desvios)

# 3. Loop Externo: Variando a MÉDIA (Mu)
for (m in medias) {
  cat("\n=== Processando MÉDIA:", m, "===\n")
  
  # Vetor temporário para os D_criticos desta média específica
  d_criticos_para_esta_media <- numeric(length(desvios))
  
  # 4. Loop Intermediário: Variando o DESVIO PADRÃO (Sigma)
  for (j in 1:length(desvios)) {
    sd_atual <- desvios[j]
    cat("  -> Desvio Padrão:", sd_atual, "\r")
    
    # Vetor para os valores de D
    todos_os_D_temporarios <- numeric(n_sim * n_obs)
    
    # 5. Loop Interno: Simulações de Monte Carlo
    for (i in 1:n_sim) {
      # Geração de dados da Distribuição Normal
      dados <- rnorm(n_obs, mean = m, sd = sd_atual)
      dados_ord <- sort(dados)
      
      ecdf_valores <- (1:n_obs) / n_obs
      
      # CDF Teórica da Normal
      cdf_teorica <- pnorm(dados_ord, mean = m, sd = sd_atual)
      
      d_ponto_a_ponto <- abs(ecdf_valores - cdf_teorica)
      
      inicio <- (i - 1) * n_obs + 1
      fim <- i * n_obs
      todos_os_D_temporarios[inicio:fim] <- d_ponto_a_ponto
    }
    
    # Armazena o quantil 95%
    d_criticos_para_esta_media[j] <- quantile(todos_os_D_temporarios, 0.95)
    
    rm(todos_os_D_temporarios)
  }
  
  # Adiciona os resultados desta média como uma nova coluna
  df_final[[as.character(m)]] <- d_criticos_para_esta_media
  
  gc() # Limpeza de memória
}
## 
## === Processando MÉDIA: 0 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 5 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 10 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 15 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 20 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 25 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 30 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 35 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 40 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 45 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
## === Processando MÉDIA: 50 ===
##   -> Desvio Padrão: 1   -> Desvio Padrão: 2   -> Desvio Padrão: 3   -> Desvio Padrão: 4   -> Desvio Padrão: 5   -> Desvio Padrão: 6   -> Desvio Padrão: 7   -> Desvio Padrão: 8   -> Desvio Padrão: 9   -> Desvio Padrão: 10   -> Desvio Padrão: 11   -> Desvio Padrão: 12   -> Desvio Padrão: 13   -> Desvio Padrão: 14   -> Desvio Padrão: 15   -> Desvio Padrão: 16   -> Desvio Padrão: 17   -> Desvio Padrão: 18   -> Desvio Padrão: 19   -> Desvio Padrão: 20 
# 6. Resultado Final
print(head(df_final))
##   desvio_padrao         0         5        10        15        20        25
## 1             1 0.1621896 0.1597781 0.1606446 0.1579849 0.1591933 0.1589534
## 2             2 0.1583944 0.1590758 0.1606548 0.1611577 0.1579750 0.1607632
## 3             3 0.1582648 0.1604191 0.1602323 0.1599161 0.1579625 0.1581401
## 4             4 0.1568283 0.1601369 0.1577895 0.1587327 0.1603626 0.1602556
## 5             5 0.1600156 0.1598423 0.1579384 0.1583831 0.1601983 0.1589703
## 6             6 0.1573985 0.1607322 0.1571169 0.1573326 0.1596772 0.1609801
##          30        35        40        45        50
## 1 0.1595564 0.1590959 0.1597796 0.1588392 0.1594015
## 2 0.1589235 0.1583445 0.1616950 0.1570810 0.1599325
## 3 0.1621215 0.1601888 0.1601310 0.1593092 0.1590581
## 4 0.1608365 0.1586099 0.1610125 0.1579150 0.1588624
## 5 0.1609655 0.1586508 0.1592011 0.1583398 0.1614986
## 6 0.1590518 0.1590009 0.1597896 0.1592943 0.1610567
# Salvar o arquivo consolidado
#write.csv(df_final, "tabela_D_criticos_Normal_4dias.csv", row.names = FALSE)
# View(df_final)

# 1. Encontrar o menor valor em todo o dataframe (exceto a primeira coluna)
menor_d_critico <- min(df_final[, -1])

# 2. Identificar em qual linha e coluna esse valor ocorre
posicao <- which(df_final[, -1] == menor_d_critico, arr.ind = TRUE)

# 3. Exibir o resultado formatado
cat("O menor valor de D_crítico encontrado foi:", menor_d_critico, "\n")
## O menor valor de D_crítico encontrado foi: 0.1564257
cat("Ele ocorre na linha", posicao[1,1], "e na coluna", colnames(df_final[,-1])[posicao[1,2]], "\n")
## Ele ocorre na linha 10 e na coluna 50