ANÁLISIS ESTADÍSTICO

1. CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

# Ruta completa al archivo
datos <- read.csv("C:/Users/Grace/Downloads/Sedimentos Marinos (1).csv",
                  header = TRUE,
                  sep = ";",
                  dec = ".",
                  stringsAsFactors = FALSE)

Librerias

**CARGA DE LIBRERÍAS**
library(gt)
library(dplyr)
library(knitr)

TABLA DE DISTRIBUCIÓN DE CANTIDAD

TABLA DE DISTRIBUCIÓN DE FRECUENCIA

# Extraer variable original
contacto_original <- datos$CONTACT

# Reclasificación
contacto_reclas <- case_when(
  is.na(contacto_original) | contacto_original == "" | contacto_original == " " | contacto_original == "-" 
    ~ "Sin registro",
  
  toupper(contacto_original) == "LPOPPE"    ~ "LPOPPE",
  toupper(contacto_original) == "JCRUSIUS"  ~ "JCRUSIUS",
  toupper(contacto_original) == "DFOLGER"   ~ "DFOLGER",
  toupper(contacto_original) == "BSCHWAB"   ~ "BSCHWAB",
  toupper(contacto_original) == "ABOHARA"   ~ "ABOHARA",
  toupper(contacto_original) == "PVALENTINE" ~ "PVALENTINE",
  
  TRUE ~ "Sin registro"   # Cualquier otro valor va aquí
)

# Fijamos el orden exacto deseado (7 categorías)
nivel_deseado <- c("Sin registro", "LPOPPE", "JCRUSIUS", "DFOLGER", "BSCHWAB", "ABOHARA", "PVALENTINE")

# Tabla de frecuencias con orden forzado
ni <- table(factor(contacto_reclas, levels = nivel_deseado))

# Frecuencia relativa %
hi <- round(prop.table(ni) * 100, 2)

# Crear tabla base
tabla_finalcontacto <- data.frame(
  Contacto = names(ni),
  ni = as.numeric(ni),
  hi = as.numeric(hi)
)

# Fila total
fila_total <- data.frame(
  Contacto = "TOTAL",
  ni = sum(tabla_finalcontacto$ni),
  hi = sum(tabla_finalcontacto$hi)
)

# Unir tabla
tabla_finalcontacto <- rbind(tabla_finalcontacto, fila_total)

# Mostrar
tabla_finalcontacto
##       Contacto    ni     hi
## 1 Sin registro  9507  66.93
## 2       LPOPPE  1557  10.96
## 3     JCRUSIUS     6   0.04
## 4      DFOLGER    49   0.34
## 5      BSCHWAB   578   4.07
## 6      ABOHARA     1   0.01
## 7   PVALENTINE  2507  17.65
## 8        TOTAL 14205 100.00
**TABLA DE DISTRIBUCIÓN  FINAL**
tabla_contacto_gt <- tabla_finalcontacto %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 1**"),
    subtitle = md("Distribución de cantidad por CONTACT  en Sedimentos Marinos")
  ) %>%
  tab_source_note(source_note = md("Autor: Grupo 3")) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black",
    row.striping.include_table_body = TRUE
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = Contacto == "TOTAL")
  )

tabla_contacto_gt
Tabla N° 1
Distribución de cantidad por CONTACT en Sedimentos Marinos
Contacto ni hi
Sin registro 9507 66.93
LPOPPE 1557 10.96
JCRUSIUS 6 0.04
DFOLGER 49 0.34
BSCHWAB 578 4.07
ABOHARA 1 0.01
PVALENTINE 2507 17.65
TOTAL 14205 100.00
Autor: Grupo 3

Colores

**Colores de las barras**
colores <- gray.colors(length(ni), start = 0.3, end = 0.9)

GRÁFICAS DE DISTRIBUCIÓN DE CANTIDAD

Diagrama de cantidad Local

barplot(tabla_finalcontacto$ni[1:(nrow(tabla_finalcontacto)-1)],
        main = "Gráfica Nº1: Distribución de cantidad por CONTACT Sedimentos Marinos ",
        cex.main = 0.7,
        col = "gray",
        xlab = "Contacto",
        ylab = "Cantidad (ni)",
        names.arg = tabla_finalcontacto$Contacto[1:(nrow(tabla_finalcontacto)-1)],
        las = 2)  # Rotar etiquetas para mejor legibilidad

**Diagrama de cantidad global**
barplot(
  tabla_finalcontacto$ni[1:(nrow(tabla_finalcontacto)-1)],
  main = "Gráfica Nº2: Distribución de cantidad por CONTACT  Sedimentos Marinos",
  cex.main = 0.7,
  xlab = "Contacto",
  ylab = "Cantidad (ni)",
  col = "gray",
  names.arg = tabla_finalcontacto$Contacto[1:(nrow(tabla_finalcontacto)-1)],
  ylim = c(0, 1090),
  las = 2
)

**Diagrama de cantidad en porcentaje**
hi_local <- as.numeric(tabla_finalcontacto$hi[1:(nrow(tabla_finalcontacto)-1)])
barplot(
  hi_local,
  main = "Gráfica Nº3: Distribución en porcentaje por CONTACT  Sedimentos Marinos",
  cex.main = 0.7,
  xlab = "Contacto",
  ylab = "Porcentaje (%)",
  col = "gray",
  names.arg = tabla_finalcontacto$Contacto[1:(nrow(tabla_finalcontacto)-1)],
  cex.names = 0.9,
  ylim = c(0, 50),
  las = 2
)

**Diagrama de cantidad en porcentaje global**
hi_global <- as.numeric(tabla_finalcontacto$hi[1:(nrow(tabla_finalcontacto)-1)])
barplot(
  hi_global,
  main = "Gráfica Nº4: Distribución en porcentaje por CONTACT  Sedimentos Marinos",
  cex.main = 0.7,
  xlab = "Contacto",
  ylab = "Porcentaje (%)",
  col = "blue",
  names.arg = tabla_finalcontacto$Contacto[1:(nrow(tabla_finalcontacto)-1)],
  cex.names = 0.9,
  ylim = c(0, 100),
  las = 2
)

**DIAGRAMA DE CIRCULAR**
hi_contacto <- as.numeric(tabla_finalcontacto$hi[1:(nrow(tabla_finalcontacto)-1)])
contacto_cats <- tabla_finalcontacto$Contacto[1:(nrow(tabla_finalcontacto)-1)]

Colores <- colorRampPalette(c("lightskyblue", "darkblue"))(length(hi_contacto))
etiquetas <- paste0(hi_contacto, "%")

par(mfrow = c(1,2))
par(mar = c(2,2,4,2))

pie(
  hi_contacto,
  radius = 0.7,
  col = Colores,
  labels = etiquetas,
  main = "Gráfica Nº5: Distribución en porcentaje por CONTACT  Sedimentos Marinos",
  cex.main = 0.9
)

plot.new()
legend(
  "center",
  title = "Contacto",
  legend = contacto_cats,
  fill = Colores,
  cex = 0.7,
  bg = "white",
  box.lwd = 0.7
)

INDICADORES ESTADÍSTICOS

Indicadores Estadísticos

# Usamos la misma reclasificación que en la tabla/gráficas (para consistencia)
contacto_original <- datos$CONTACT

contacto_reclas <- case_when(
  is.na(contacto_original) | contacto_original == "" | contacto_original == " " | contacto_original == "-" 
    ~ "Sin registro",
  
  toupper(contacto_original) == "LPOPPE"     ~ "LPOPPE",
  toupper(contacto_original) == "JCRUSIUS"   ~ "JCRUSIUS",
  toupper(contacto_original) == "DFOLGER"    ~ "DFOLGER",
  toupper(contacto_original) == "BSCHWAB"    ~ "BSCHWAB",
  toupper(contacto_original) == "ABOHARA"    ~ "ABOHARA",
  toupper(contacto_original) == "PVALENTINE" ~ "PVALENTINE",
  
  TRUE ~ "Sin registro"
)

# Tabla de frecuencias sobre la variable reclasificada
tabla_frecuencia_contacto <- table(contacto_reclas)

# Calcular la moda (el valor que más se repite en la agrupación)
moda_contacto <- names(tabla_frecuencia_contacto)[which.max(tabla_frecuencia_contacto)]

# Crear tabla de indicadores
TablaIndicadores <- data.frame(
  Variable = "Contacto (agrupado)",
  Moda = moda_contacto
)

# Tabla simple con kable
kable(TablaIndicadores,
      format = "markdown",
      caption = "Tabla N°2. Indicadores estadísticos de posición (Moda) - Variable Contacto  en Sedimentos Marinos",
      align = c("l", "c"))
Tabla N°2. Indicadores estadísticos de posición (Moda) - Variable Contacto en Sedimentos Marinos
Variable Moda
Contacto (agrupado) Sin registro
# Tabla profesional con gt (consistente con Tabla N°1)
tabla_indicadores_gt <- TablaIndicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N° 2**"),
    subtitle = md("Indicadores estadísticos de posición (Moda) - Variable Contacto")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  cols_label(
    Variable = md("**Variable**"),
    Moda = md("**Moda**")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold", align = "center"),
    locations = cells_column_labels()
  )

tabla_indicadores_gt
Tabla N° 2
Indicadores estadísticos de posición (Moda) - Variable Contacto
Variable Moda
Contacto (agrupado) Sin registro
Autor: Grupo 3

CONCLUSIONES

La variable Contacto tiene como valor más frecuente sin registro