#Carga de datos
datos <- read.csv("C:/Users/Grace/OneDrive - Universidad Central del Ecuador/Documentos/dataset_geologico_limpio_80.csv",
header = TRUE,
sep = ",",
dec = ".")
#Librerías
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
library(knitr)
library(gt)
library(moments)
Decidimos trabajar únicamente con valores positivos debido a que la variable representa un porcentaje, el cual no puede tomar valores negativos.
# LIMPIEZA DE LA VARIABLE ARCILLA
arcilla <- as.numeric(datos$CLAY_PCT)
arcilla <- na.omit(arcilla)
arcilla <- subset(arcilla, arcilla > 0)
# SEPARAR OUTLIERS
caja <- boxplot(arcilla, plot = FALSE)
limite_sup <- caja$stats[5]
limite_inf <- caja$stats[1]
arcilla_outliers <- arcilla[arcilla < limite_inf | arcilla > limite_sup]
arcilla_sin_outliers <- arcilla[arcilla >= limite_inf & arcilla <= limite_sup]
# RESUMEN
cat("Cantidad con outliers:", length(arcilla), "\n")
## Cantidad con outliers: 25966
cat("Cantidad de outliers:", length(arcilla_outliers), "\n")
## Cantidad de outliers: 1084
cat("Cantidad sin outliers:", length(arcilla_sin_outliers), "\n")
## Cantidad sin outliers: 24882
# HISTOGRAMA (BASE DE LA TABLA)
histograma <- hist(arcilla_sin_outliers, breaks = 6, plot = FALSE)
# FRECUENCIA ABSOLUTA
ni <- histograma$counts
# FRECUENCIA RELATIVA
hi <- ni / sum(ni) * 100
# INTERVALOS
intervalos <- paste0(
"[", round(histograma$breaks[-length(histograma$breaks)], 2),
", ",
round(histograma$breaks[-1], 2),
")"
)
# TABLA
tabla_frecuencias <- data.frame(
Intervalo = intervalos,
ni = ni,
hi = round(hi, 2)
)
tabla_frecuencias
## Intervalo ni hi
## 1 [0, 10) 14602 58.68
## 2 [10, 20) 3849 15.47
## 3 [20, 30) 2475 9.95
## 4 [30, 40) 2072 8.33
## 5 [40, 50) 1285 5.16
## 6 [50, 60) 599 2.41
tabla_arcilla_gt <- tabla_frecuencias %>%
gt() %>%
tab_header(
title = md("**Tabla N° 1**"),
subtitle = md("**Distribución de frecuencias de los Sedimentos Marinos que contienen Arcilla**")
) %>%
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
)
tabla_arcilla_gt
| Tabla N° 1 | ||
| Distribución de frecuencias de los Sedimentos Marinos que contienen Arcilla | ||
| Intervalo | ni | hi |
|---|---|---|
| [0, 10) | 14602 | 58.68 |
| [10, 20) | 3849 | 15.47 |
| [20, 30) | 2475 | 9.95 |
| [30, 40) | 2072 | 8.33 |
| [40, 50) | 1285 | 5.16 |
| [50, 60) | 599 | 2.41 |
| Autor: Grupo 3 | ||
## GRÁFICA DE DISTRIBUCIÓN
histograma <- hist(arcilla_sin_outliers,
breaks = 6,
freq = TRUE,
main="Gráfica 1. Distribución de cantidad de arcilla en Sedimentos
Marinos",
xlab="Arcilla (%)",
ylab="Cantidad",
col="blue")
Debido a la similitud de las barras asociamos con el modelo de probabilidad exponencial
## CONJETURA DEL MODELO
# Histograma con densidad
histograma <- hist(arcilla_sin_outliers,
breaks = 6,
freq = FALSE,
main = "Gráfica 2. Comparación de la realidad con el modelo exponencial de
Arcilla en Sedimentos Marinos",
xlab = "Arcilla (%)",
ylab = "Densidad de probabilidad",
col = "lightblue",
border = "black")
# PARÁMETROS
media <- mean(arcilla_sin_outliers)
lambda <- 1 / media
# MOSTRAR VALORES
cat("Media aritmética:", round(media,2), "\n")
## Media aritmética: 12.52
cat("Lambda:", round(lambda,4), "\n")
## Lambda: 0.0799
# CURVA EXPONENCIAL
x <- seq(min(arcilla_sin_outliers), max(arcilla_sin_outliers), 0.01)
curve(dexp(x, rate = lambda), add = TRUE, col = "black", lwd = 3)
# FRECUENCIAS OBSERVADAS
Fo <- histograma$counts
# FRECUENCIAS ESPERADAS
h <- length(histograma$counts)
P <- c()
for (i in 1:h) {
P[i] <- pexp(histograma$breaks[i+1], rate = lambda) -
pexp(histograma$breaks[i], rate = lambda)
}
Fe <- P * length(arcilla_sin_outliers)
# MOSTRAR FRECUENCIAS
cat("Frecuencias observadas:\n")
## Frecuencias observadas:
print(Fo)
## [1] 14602 3849 2475 2072 1285 599
cat("Frecuencias esperadas:\n")
## Frecuencias esperadas:
print(round(Fe,2))
## [1] 13689.32 6157.87 2770.00 1246.03 560.50 252.13
# =========================
# TEST DE PEARSON
# =========================
n <- length(arcilla_sin_outliers)
Fo <- (Fo/n)*100
Fe <- (Fe/n)*100
plot(Fo, Fe,
main = "Gráfica 3: Correlación de frecuencias en el modelo exponencial (Arcilla)",
xlab = "Frecuencia Observada (%)",
ylab = "Frecuencia Esperada (%)",
pch = 19,
col = "blue3")
abline(a = 0, b = 1, col = "red", lwd = 2)
Correlacion <- cor(Fo, Fe) * 100
Correlacion
## [1] 97.213
# =========================
# TEST DE CHI-CUADRADO
# =========================
# GRADOS DE LIBERTAD
gl <- length(histograma$counts)-1
# ESTADÍSTICO
x2 <- sum((Fe - Fo)^2 / Fe)
# UMBRAL
umbral <- qchisq(0.97, gl)
x2
## [1] 11.73207
umbral
## [1] 12.37462
x2 < umbral
## [1] TRUE
# =========================
# TABLA RESUMEN
# =========================
Variable <- c("Arcilla (%)")
tabla_resumen <- data.frame(
Variable,
round(Correlacion, 2),
round(x2, 2),
round(umbral, 2)
)
colnames(tabla_resumen) <- c(
"Variable",
"Test Pearson (%)",
"Chi Cuadrado",
"Umbral de aceptación"
)
kable(tabla_resumen)
| Variable | Test Pearson (%) | Chi Cuadrado | Umbral de aceptación |
|---|---|---|---|
| Arcilla (%) | 97.21 | 11.73 | 12.37 |
¿Cuál es la probabilidad de que el porcentaje de arcilla sea menor o igual a 20 %?
probabilidad_arcilla <- pexp(30, lambda) -
pexp(10, lambda)
# En porcentaje
probabilidad_arcilla * 100
## [1] 35.88084
# =========================
# GRÁFICA DE PROBABILIDAD
# =========================
# Rango para la curva
x <- seq(min(arcilla_sin_outliers), max(arcilla_sin_outliers), 0.01)
# Curva exponencial
plot(x, dexp(x, lambda),
col = "skyblue3",
lwd = 2,
type = "l",
main = "Gráfica 4. Cálculo de probabilidades del contenido de Arcilla en
Sedimentos Marinos",
ylab = "Densidad de probabilidad",
xlab = "Arcilla (%)")
# Área de probabilidad (10–30%)
x_area <- seq(10, 30, 0.01)
y_area <- dexp(x_area, lambda)
# Línea
lines(x_area, y_area, col = "red", lwd = 2)
# Área sombreada
polygon(c(x_area, rev(x_area)),
c(y_area, rep(0, length(y_area))),
col = rgb(1, 0, 0, 0.5),
border = NA)
# Leyenda
legend("topright",
legend = c("Modelo exponencial", "Área de Probabilidad"),
col = c("skyblue3", "red"),
lwd = 2,
cex = 0.7)
# Texto
texto_prob <- paste0("Probabilidad = ",
round(probabilidad_arcilla*100, 2), " %")
text(x = max(arcilla_sin_outliers)*0.6,
y = max(dexp(x, lambda)) * 0.7,
labels = texto_prob,
col = "black",
cex = 0.9,
font = 2)
Si se analizan 300 nuevas muestras de sedimentos marinos, ¿cuántas se esperaría que presenten un contenido de arcilla entre el 10 % y el 30 % ?
cantidad_muestras <- probabilidad_arcilla * 300
cantidad_muestras
## [1] 107.6425
## INTERVALOS DE CONFIANZA
# CÁLCULOS
x <- mean(arcilla_sin_outliers)
sigma <- sd(arcilla_sin_outliers)
n <- length(arcilla_sin_outliers)
e <- sigma / sqrt(n)
li <- x - 2*e
ls <- x + 2*e
# MOSTRAR VALORES
cat("Media:", round(x,2), "\n")
## Media: 12.52
cat("Desviación estándar:", round(sigma,2), "\n")
## Desviación estándar: 14.84
cat("Tamaño muestral:", n, "\n")
## Tamaño muestral: 24882
cat("Desviación estándar poblacional:", round(e,4), "\n")
## Desviación estándar poblacional: 0.0941
cat("Límite inferior:", round(li,2), "\n")
## Límite inferior: 12.33
cat("Límite superior:", round(ls,2), "\n")
## Límite superior: 12.71
# TABLA PROFESIONAL
tabla_media <- data.frame(
"Límite inferior" = round(li,2),
"Media poblacional" = round(x,2),
"Límite superior" = round(ls,2),
"Desviación estándar poblacional" = round(e,4)
)
tabla_media_gt <- tabla_media %>%
gt() %>%
tab_header(
title = md("**Tabla N° 3**"),
subtitle = md("**Intervalo de confianza del contenido de Arcilla (%) 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
)
tabla_media_gt
| Tabla N° 3 | |||
| Intervalo de confianza del contenido de Arcilla (%) en sedimentos marinos | |||
| Límite.inferior | Media.poblacional | Límite.superior | Desviación.estándar.poblacional |
|---|---|---|---|
| 12.33 | 12.52 | 12.71 | 0.0941 |
| Autor: Grupo 3 | |||
La variable Arcilla se explica a través del modelo exponencial siendo la media aritmética de 12.52 que se encuentra en un intervalo definido por una desviación estandar de 14.84.
De esta manera, se logró calcular probabilidades, como por ejemplo que, al seleccionar aleatoriamente una muestra de sedimento marino, la probabilidad de que su contenido de arcilla se encuentre entre el 10% y 30% es de 35.88 %.
Mediante el teorema del límite central, se determina que la media aritmética poblacional del contenido de arcilla se encuentra entre 12.33 % y 12.71%, con un nivel de confianza del 97%.