CARGA DE DATOS Y LIBRERÍAS

CARGA DE DATOS

datos <- read.csv("C:/Users/Grace/OneDrive - Universidad Central del Ecuador/Documentos/dataset_geologico_limpio_80.csv",
                  header = TRUE,
                  sep = ",",
                  dec = ".",
                  stringsAsFactors = FALSE)

# Extraer variable Longitud
longitud <- as.numeric(datos$LONGITUDE)

longitud <- na.omit(longitud)

n <- length(longitud)

cat("Tamaño de muestra:", n)
## Tamaño de muestra: 27784
# CARGA DE LIBRERIAS
library(gt)
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(e1071)
library(moments)
## 
## Adjuntando el paquete: 'moments'
## The following objects are masked from 'package:e1071':
## 
##     kurtosis, moment, skewness

TABLA DE DISTRIBUCIÓN DE FRECUENCIA

Agrupación por la regla de Sturges

minimo <- min(longitud)
maximo <- max(longitud)

R <- maximo - minimo

k <- floor(1 + 3.3 * log10(n))

A <- R / k

Li <- round(seq(minimo, maximo - A + 1e-6, by = A),1)

Ls <- round(Li + A,2)

Ls[length(Ls)] <- maximo

MC <- round((Li + Ls)/2,2)

# FRECUENCIAS
ni <- numeric(length(Li))

for(i in 1:length(Li)){
  
  if(i == length(Li)){
    ni[i] <- sum(longitud >= Li[i] & longitud <= Ls[i])
  } else {
    ni[i] <- sum(longitud >= Li[i] & longitud < Ls[i])
  }
}

total <- sum(ni)

hi <- round((ni/total)*100,2)

Ni_Asc <- cumsum(ni)

Hi_Asc <- cumsum(hi)

Ni_Desc <- rev(cumsum(rev(ni)))

Hi_Desc <- rev(cumsum(rev(hi)))

# TABLA DE DISTRIBUCIÓN
tabla_final <- data.frame(
  Limite_Inferior = Li,
  Limite_Superior = Ls,
  Marca_Clase = MC,
  ni = ni,
  hi = hi,
  Ni_Asc = Ni_Asc,
  Hi_Asc = Hi_Asc,
  Ni_Desc = Ni_Desc,
  Hi_Desc = Hi_Desc
)

suma_ni <- sum(tabla_final$ni)
suma_hi <- sum(tabla_final$hi)

tabla_final
##    Limite_Inferior Limite_Superior Marca_Clase    ni    hi Ni_Asc Hi_Asc
## 1           -170.5       -150.8900     -160.70   108  0.39    108   0.39
## 2           -150.9       -131.2900     -141.10   265  0.95    373   1.34
## 3           -131.3       -111.6900     -121.50   714  2.57   1087   3.91
## 4           -111.7        -92.0900     -101.90   357  1.28   1444   5.19
## 5            -92.1        -72.4900      -82.29  9974 35.89  11418  41.08
## 6            -72.5        -52.8900      -62.70 15818 56.91  27236  97.99
## 7            -52.9        -33.2900      -43.09     0  0.00  27236  97.99
## 8            -33.3        -13.6900      -23.49     0  0.00  27236  97.99
## 9            -13.7          5.9100       -3.89   166  0.60  27402  98.59
## 10             5.9         25.5100       15.71    19  0.07  27421  98.66
## 11            25.5         45.1100       35.30     0  0.00  27421  98.66
## 12            45.1         64.7100       54.91     0  0.00  27421  98.66
## 13            64.7         84.3100       74.50    15  0.05  27436  98.71
## 14            84.3        103.9100       94.10     5  0.02  27441  98.73
## 15           104.0        123.5568      113.78   353  1.27  27794 100.00
##    Ni_Desc Hi_Desc
## 1    27794  100.00
## 2    27686   99.61
## 3    27421   98.66
## 4    26707   96.09
## 5    26350   94.81
## 6    16376   58.92
## 7      558    2.01
## 8      558    2.01
## 9      558    2.01
## 10     392    1.41
## 11     373    1.34
## 12     373    1.34
## 13     373    1.34
## 14     358    1.29
## 15     353    1.27

# FILA TOTAL
fila_total <- data.frame(
  Limite_Inferior = "TOTAL",
  Limite_Superior = "",
  Marca_Clase = "",
  ni = suma_ni,
  hi = suma_hi,
  Ni_Asc = "-",
  Hi_Asc = "-",
  Ni_Desc = "-",
  Hi_Desc = "-"
)

tabla_final <- rbind(tabla_final, fila_total)

tabla_final
##    Limite_Inferior Limite_Superior Marca_Clase    ni     hi Ni_Asc Hi_Asc
## 1           -170.5         -150.89      -160.7   108   0.39    108   0.39
## 2           -150.9         -131.29      -141.1   265   0.95    373   1.34
## 3           -131.3         -111.69      -121.5   714   2.57   1087   3.91
## 4           -111.7          -92.09      -101.9   357   1.28   1444   5.19
## 5            -92.1          -72.49      -82.29  9974  35.89  11418  41.08
## 6            -72.5          -52.89       -62.7 15818  56.91  27236  97.99
## 7            -52.9          -33.29      -43.09     0   0.00  27236  97.99
## 8            -33.3          -13.69      -23.49     0   0.00  27236  97.99
## 9            -13.7            5.91       -3.89   166   0.60  27402  98.59
## 10             5.9           25.51       15.71    19   0.07  27421  98.66
## 11            25.5           45.11        35.3     0   0.00  27421  98.66
## 12            45.1           64.71       54.91     0   0.00  27421  98.66
## 13            64.7           84.31        74.5    15   0.05  27436  98.71
## 14            84.3          103.91        94.1     5   0.02  27441  98.73
## 15             104       123.55683      113.78   353   1.27  27794    100
## 16           TOTAL                             27794 100.00      -      -
##    Ni_Desc Hi_Desc
## 1    27794     100
## 2    27686   99.61
## 3    27421   98.66
## 4    26707   96.09
## 5    26350   94.81
## 6    16376   58.92
## 7      558    2.01
## 8      558    2.01
## 9      558    2.01
## 10     392    1.41
## 11     373    1.34
## 12     373    1.34
## 13     373    1.34
## 14     358    1.29
## 15     353    1.27
## 16       -       -

# TABLA DE DISTRIBUCIÓN FORMATO PROFESIONAL
# TABLA DE DISTRIBUCIÓN FORMATO PROFESIONAL
TablaLongitud <- tabla_final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº1**"),
    subtitle = md("Distribución de frecuencias de la variable Longitud")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    table_body.hlines.color = "gray"
  )

TablaLongitud
Tabla Nº1
Distribución de frecuencias de la variable Longitud
Limite_Inferior Limite_Superior Marca_Clase ni hi Ni_Asc Hi_Asc Ni_Desc Hi_Desc
-170.5 -150.89 -160.7 108 0.39 108 0.39 27794 100
-150.9 -131.29 -141.1 265 0.95 373 1.34 27686 99.61
-131.3 -111.69 -121.5 714 2.57 1087 3.91 27421 98.66
-111.7 -92.09 -101.9 357 1.28 1444 5.19 26707 96.09
-92.1 -72.49 -82.29 9974 35.89 11418 41.08 26350 94.81
-72.5 -52.89 -62.7 15818 56.91 27236 97.99 16376 58.92
-52.9 -33.29 -43.09 0 0.00 27236 97.99 558 2.01
-33.3 -13.69 -23.49 0 0.00 27236 97.99 558 2.01
-13.7 5.91 -3.89 166 0.60 27402 98.59 558 2.01
5.9 25.51 15.71 19 0.07 27421 98.66 392 1.41
25.5 45.11 35.3 0 0.00 27421 98.66 373 1.34
45.1 64.71 54.91 0 0.00 27421 98.66 373 1.34
64.7 84.31 74.5 15 0.05 27436 98.71 373 1.34
84.3 103.91 94.1 5 0.02 27441 98.73 358 1.29
104 123.55683 113.78 353 1.27 27794 100 353 1.27
TOTAL 27794 100.00 - - - -
Autor: Grupo 3

GRÁFICAS DE DISTRIBUCIÓN DE FRECUENCIA

## Histograma de frecuencia absoluta local
hist(longitud,
     breaks = k,
     col = "gray",
     main = "Gráfica Nº1: Distribución de frecuencia absoluta local de Longitud",
     xlab = "Longitud",
     ylab = "Cantidad")


# Histograma de frecuencia absoluta global
hist(longitud,
     breaks = k,
     col = "gray",
     main = "Gráfica Nº2: Distribución de frecuencia absoluta global de Longitud",
     xlab = "Longitud",
     ylab = "Cantidad",
     ylim = c(0, max(ni)+200))


# Frecuencia relativa local
barplot(hi,
        space = 0,
        main = "Gráfica Nº3: Distribución de frecuencia relativa local de Longitud",
        col = "gray",
        xlab = "Intervalos de Longitud",
        ylab = "Porcentaje",
        names.arg = MC)


# Frecuencia relativa global
barplot(hi,
        space = 0,
        main = "Gráfica Nº4: Distribución de frecuencia relativa global de Longitud",
        col = "gray",
        xlab = "Intervalos de Longitud",
        ylab = "Porcentaje",
        names.arg = MC,
        ylim = c(0,100))


# Ojiva combinada Ni
lim_sup <- Ls

plot(lim_sup, Ni_Desc, type="o",
     main="Gráfica Nº5: Ojiva combinada de la longitud (Ni)",
     ylab="Cantidad acumulada",
     xlab="Longitud",
     col="blue")

lines(Li, Ni_Asc,
      col="red",
      type="o")

legend("topleft",
       legend=c("Descendente","Ascendente"),
       col=c("blue","red"),
       lty=1,
       pch=1)


# Ojiva combinada Hi
lim_sup <- Ls

plot(lim_sup, Hi_Desc, type="o",
     main="Gráfica Nº6: Ojiva combinada de la longitud (Hi)",
     ylab="Porcentaje acumulado",
     xlab="Longitud",
     col="blue",
     ylim=c(0,100))

lines(Li, Hi_Asc,
      col="red",
      type="o")

legend("topleft",
       legend=c("Descendente","Ascendente"),
       col=c("blue","red"),
       lty=1,
       pch=1)


# DIAGRAMA DE CAJA
boxplot(longitud,
        horizontal = TRUE,
        main = "Gráfica Nº7: Diagrama de caja de la variable Longitud",
        xlab = "Longitud",
        col = "lightblue")


INDICADORES ESTADÍSTICOS

# Cálculo de indicadores

media <- mean(longitud)
mediana <- median(longitud)
desv <- sd(longitud)

CV <- round((desv/media)*100,2)

asimetria <- round(skewness(longitud),2)
curtosis <- round(kurtosis(longitud),2)

minimo <- min(longitud)
maximo <- max(longitud)

TablaIndicadores <- data.frame(
  Variable = "Longitud",
  Minimo = round(minimo,2),
  Maximo = round(maximo,2),
  Media = round(media,2),
  Mediana = round(mediana,2),
  Desv_Est = round(desv,2),
  CV = CV,
  Asimetria = asimetria,
  Curtosis = curtosis
)

TablaIndicadores
##   Variable  Minimo Maximo  Media Mediana Desv_Est     CV Asimetria Curtosis
## 1 Longitud -170.52 123.56 -72.77  -70.97     25.4 -34.91      4.42    36.11

# Tabla Mejorada
TablaIndicadores %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº2**"),
    subtitle = md("Indicadores estadísticos de la variable Longitud")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla Nº2
Indicadores estadísticos de la variable Longitud
Variable Minimo Maximo Media Mediana Desv_Est CV Asimetria Curtosis
Longitud -170.52 123.56 -72.77 -70.97 25.4 -34.91 4.42 36.11
Autor: Grupo 3

OUTLIERS

outliers <- boxplot.stats(longitud)$out

num_outliers <- length(outliers)

min_out <- ifelse(num_outliers > 0, round(min(outliers),2), NA)
max_out <- ifelse(num_outliers > 0, round(max(outliers),2), NA)

TablaOutliers <- data.frame(
  Cantidad_Outliers = num_outliers,
  Minimo = min_out,
  Maximo = max_out
)

TablaOutliers
##   Cantidad_Outliers  Minimo Maximo
## 1              5027 -170.52 123.56

#Tabla Mejorada 
TablaOutliers %>%
  gt() %>%
  tab_header(
    title = md("**Tabla Nº3**"),
    subtitle = md("Valores atípicos de la variable Longitud")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 3")
  )
Tabla Nº3
Valores atípicos de la variable Longitud
Cantidad_Outliers Minimo Maximo
5027 -170.52 123.56
Autor: Grupo 3

CONCLUSIONES