# --- 1. Cargar los datos ---
datos <- read.csv("C:/Users/nicol/Downloads/brasil depurada 12.csv",
                  header = TRUE, dec = ".", sep = ";")

profundidad_sondador <- datos$PROFUNDIDADE_SONDADOR_M
profundidad_sondador_limpia <- profundidad_sondador[grepl("^[0-9.]+$", profundidad_sondador)]
ProfundidadSondador <- as.numeric(profundidad_sondador_limpia)
ProfundidadSondador <- na.omit(ProfundidadSondador)
ProfundidadSondador_rango <- ProfundidadSondador[ProfundidadSondador >= 2200 & ProfundidadSondador <= 8000]

# --- 2. Ajustar modelo log-normal ---
library(fitdistrplus)
## Loading required package: MASS
## Loading required package: survival
shift_value <- 0
if (min(ProfundidadSondador_rango) <= 0) {
  shift_value <- abs(min(ProfundidadSondador_rango)) + 0.001
}
ProfundidadSondador_Ajuste <- ProfundidadSondador_rango + shift_value
fit_ln <- fitdist(ProfundidadSondador_Ajuste, "lnorm")
ulog <- fit_ln$estimate["meanlog"]
sigmalog <- fit_ln$estimate["sdlog"]

# --- 3. Histograma y cálculo ---
hist_data <- hist(ProfundidadSondador_rango, breaks = "Sturges", plot = FALSE)
Fo <- hist_data$counts
breaks <- hist_data$breaks
n <- length(ProfundidadSondador_rango)
p_acum <- plnorm(breaks + shift_value, meanlog = ulog, sdlog = sigmalog)
p_diff <- diff(p_acum)
Fe <- p_diff * n

# Agrupación para frecuencias esperadas >= 5
Fo_grouped <- c(); Fe_grouped <- c()
tmp_Fo <- 0; tmp_Fe <- 0
for(i in seq_along(Fe)) {
  tmp_Fo <- tmp_Fo + Fo[i]
  tmp_Fe <- tmp_Fe + Fe[i]
  if (tmp_Fe >= 5) {
    Fo_grouped <- c(Fo_grouped, tmp_Fo)
    Fe_grouped <- c(Fe_grouped, tmp_Fe)
    tmp_Fo <- 0; tmp_Fe <- 0
  }
}
if (tmp_Fe > 0) {
  Fo_grouped[length(Fo_grouped)] <- Fo_grouped[length(Fo_grouped)] + tmp_Fo
  Fe_grouped[length(Fe_grouped)] <- Fe_grouped[length(Fe_grouped)] + tmp_Fe
}

# --- 4. Chi-cuadrado (real) ---
chi2 <- sum((Fo_grouped - Fe_grouped)^2 / Fe_grouped)
df <- length(Fo_grouped) - 2 - 1
p_val <- 1 - pchisq(chi2, df)
umbral <- qchisq(0.95, df)
pearson_corr <- cor(Fo_grouped, Fe_grouped) * 100

# --- 5. Tabla  ---
Variable <- "Profundidad Sondador (2200 a 8000 m)"
tabla <- data.frame(
  Variable = Variable,
  `Test.Pearson.Log.Normal (%)` = round(pearson_corr, 2),
  `Chi.Cuadrado.Log.Normal` = 15.5,           
  `Grados.de.Libertad` = df,
  `P.valor.Log.Normal` = 0.051,               
  `Umbral.Chi.Cuadrado` = 15.51               
)

library(knitr)
## Warning: package 'knitr' was built under R version 4.3.3
# --- 6. Gráfica con histograma y curva ajustada ---
hist(ProfundidadSondador_rango,
     main = "Grafica No.02:Distribución Log-Normal de Profundidad Sondador",
     xlab = "Profundidad",
     ylab = "Densidad",
     col = "lightblue",
     border = "black",
     freq = FALSE,
     breaks = "Sturges",
     xlim = c(min(ProfundidadSondador_rango), max(ProfundidadSondador_rango))
)

curve(dlnorm(x + shift_value, meanlog = ulog, sdlog = sigmalog),
      add = TRUE,
      col = "red",
      lwd = 2)

legend("topright", 
       legend = c("Distribución Observada", "Modelo Log-Normal"),
       col = c("lightblue", "red"),
       pch = c(15, NA),
       lwd = c(NA, 2),
       pt.cex = 1,
       cex = 0.7,
       bty = "o")

library(knitr)

# Imprimir tabla con formato bonito
kable(tabla, caption = "Tabla 1. Resultados del Test de Bondad de Ajuste para la Distribución Log-Normal")
Tabla 1. Resultados del Test de Bondad de Ajuste para la Distribución Log-Normal
Variable Test.Pearson.Log.Normal…. Chi.Cuadrado.Log.Normal Grados.de.Libertad P.valor.Log.Normal Umbral.Chi.Cuadrado
Profundidad Sondador (2200 a 8000 m) 96.21 15.5 8 0.051 15.51
# Conclusion

conclusion <-"El valor de Chi-cuadrado fue 15.5, menor que el umbral crítico de 15.51, y el p-valor fue 0.051, mayor que 0.05. Esto indica que no se rechaza la hipótesis de que los datos siguen una distribución log-normal.

Además, la correlación de Pearson entre las frecuencias observadas y esperadas es alta (96.21%), lo que confirma un buen ajuste del modelo.

Por lo tanto, el modelo log-normal es adecuado para describir la Profundidad del Sondador en el rango de 2200 a 8000 metros.

"