Variable cuantitativa continua

Latitud

Cargar librerías y paquetes

Instalar librerías

knitr::opts_chunk$set(echo = TRUE, warning = FALSE, message = FALSE)

if (!require(moments)) install.packages("moments")
if (!require(readr)) install.packages("readr")
if (!require(sf)) install.packages("sf")
if (!require(gt)) install.packages("gt")
if (!require(dplyr)) install.packages("dplyr")

Cargar paquetes

library(readr)
library(sf)
library(gt)
library(dplyr)
library(moments)

1 Cargar los datos

Extraer la variable

# Leer el archivo, forzando texto para evitar errores
datos <- read_delim("Conjunto.csv", delim = ";", col_types = cols(.default = "c"))

# Convertir columnas a numéricas
datos$longitude <- as.numeric(datos$longitude)
datos$latitude <- as.numeric(datos$latitude)


# Eliminar filas con valores faltantes en coordenadas
datos <- datos[!is.na(datos$longitude) & !is.na(datos$latitude), ]

# Crear objeto espacial desde coordenadas EPSG:3857
puntos_sf <- st_as_sf(datos, coords = c("longitude", "latitude"), crs = 3857)

# Transformar a WGS 84 (EPSG:4326)
puntos_wgs84 <- st_transform(puntos_sf, crs = 4326)

# Extraer coordenadas en grados decimales
coord_grados <- st_coordinates(puntos_wgs84)

# Crear nuevo data frame con solo las coordenadas convertidas
resultado <- data.frame(
  longitude_deg = coord_grados[, 1],
  latitude_deg = coord_grados[, 2]
)
# Observar resultado
print(head(resultado, 10))
##    longitude_deg latitude_deg
## 1      -95.40163    33.560946
## 2      -10.02523    34.001668
## 3       90.82797     4.280984
## 4      -99.51960    37.501294
## 5     -108.44503    32.521296
## 6     -108.40909    32.395387
## 7     -108.31004    32.417086
## 8     -108.26063    32.395387
## 9     -108.25559    32.496448
## 10     -10.82424    32.540654
# Extraer la variable
Latitud<-resultado$latitude_deg
length(Latitud)
## [1] 304613

2 Tabla de distribución de frecuencia

# Graficos de distribucion de frecuencia
options(scipen = 999)  # desactiva notación científica
histLatitud<-hist(Latitud,
                  main= "Gráfica No. 1: Frecuencia de Latitud de 
                minerales metalicos y no metalicos del mundo",
                  xlab= "Latitud", 
                  ylab= "Cantidad", col="green",
                  las=2)

#Calculo de parametros
Limites<-histLatitud$breaks
Limites
##  [1] -60 -50 -40 -30 -20 -10   0  10  20  30  40  50  60  70  80  90
LimInf<-Limites[1:15]
LimSup<-Limites[2:16]
Mc<-histLatitud$mids
Mc
##  [1] -55 -45 -35 -25 -15  -5   5  15  25  35  45  55  65  75  85
#FRECUECNIA SIMPLE
ni<-histLatitud$counts
sum(ni)
## [1] 304613
#FRECUECNIA ABSOLUTA
hi<-ni/sum(ni)*100
sum(hi)
## [1] 100
#FRECUENCIAS ACUMULADAS 
Niasc <- cumsum(ni)
Nidsc <- rev(cumsum(rev(ni)))
Hiasc <- round(cumsum(hi), 2) 
Hidsc <- round(rev(cumsum(rev(hi))), 2)
TDFLatitudR<-data.frame(LimInf, LimSup, Mc, ni, hi, Niasc, Nidsc, Hiasc, Hidsc)
TDFLatitudR
##    LimInf LimSup  Mc     ni            hi  Niasc  Nidsc  Hiasc  Hidsc
## 1     -60    -50 -55      2  0.0006565708      2 304613   0.00 100.00
## 2     -50    -40 -45     14  0.0045959956     16 304611   0.01 100.00
## 3     -40    -30 -35    974  0.3197499778    990 304597   0.33  99.99
## 4     -30    -20 -25   6199  2.0350411834   7189 303623   2.36  99.67
## 5     -20    -10 -15   5683  1.8656459179  12872 297424   4.23  97.64
## 6     -10      0  -5   4358  1.4306677653  17230 291741   5.66  95.77
## 7       0     10   5  41902 13.7558147551  59132 287383  19.41  94.34
## 8      10     20  15   3897  1.2793281968  63029 245481  20.69  80.59
## 9      20     30  25  44916 14.7452669453 107945 241584  35.44  79.31
## 10     30     40  35 179487 58.9229612656 287432 196668  94.36  64.56
## 11     40     50  45  12589  4.1327848779 300021  17181  98.49   5.64
## 12     50     60  55   4591  1.5071582631 304612   4592 100.00   1.51
## 13     60     70  65      0  0.0000000000 304612      1 100.00   0.00
## 14     70     80  75      0  0.0000000000 304612      1 100.00   0.00
## 15     80     90  85      1  0.0003282854 304613      1 100.00   0.00
totalni<-sum(ni)
totalhi=sum(hi)
TDFLatitudTotal<-rbind(TDFLatitudR, data.frame(LimInf="Total",
                                               LimSup=" ", Mc=" ",ni=totalni, hi=totalhi, Niasc=" ", Nidsc=" ", 
                                               Hiasc=" ", Hidsc=" "))
# Crear la tabla 
tablaLatitud<-TDFLatitudR %>%
  gt() %>%
  tab_header(
    title = md("Tabla No. 1"),
    subtitle = md("Tabla de distribucion de Frecuencias simples, absolutas y
                  acumuladas de la Latitud de minerales metalicos y no metalicos del
                  mundo")
  ) %>%
  tab_source_note(
    source_note = md("Autor: Grupo 4")
  ) %>%
  tab_options(
    table.border.top.color = "black",
    table.border.bottom.color = "black",
    table.border.top.style = "solid",
    table.border.bottom.style = "solid",
    column_labels.border.top.color = "black",
    column_labels.border.bottom.color = "black",
    column_labels.border.bottom.width = px(2),
    row.striping.include_table_body = TRUE,
    heading.border.bottom.color = "black",
    heading.border.bottom.width = px(2),
    table_body.hlines.color = "gray",
    table_body.border.bottom.color = "black"
  )  %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(
      rows = LimInf == "Total"
    )
  ) 

tablaLatitud
Tabla No. 1
Tabla de distribucion de Frecuencias simples, absolutas y acumuladas de la Latitud de minerales metalicos y no metalicos del mundo
LimInf LimSup Mc ni hi Niasc Nidsc Hiasc Hidsc
-60 -50 -55 2 0.0006565708 2 304613 0.00 100.00
-50 -40 -45 14 0.0045959956 16 304611 0.01 100.00
-40 -30 -35 974 0.3197499778 990 304597 0.33 99.99
-30 -20 -25 6199 2.0350411834 7189 303623 2.36 99.67
-20 -10 -15 5683 1.8656459179 12872 297424 4.23 97.64
-10 0 -5 4358 1.4306677653 17230 291741 5.66 95.77
0 10 5 41902 13.7558147551 59132 287383 19.41 94.34
10 20 15 3897 1.2793281968 63029 245481 20.69 80.59
20 30 25 44916 14.7452669453 107945 241584 35.44 79.31
30 40 35 179487 58.9229612656 287432 196668 94.36 64.56
40 50 45 12589 4.1327848779 300021 17181 98.49 5.64
50 60 55 4591 1.5071582631 304612 4592 100.00 1.51
60 70 65 0 0.0000000000 304612 1 100.00 0.00
70 80 75 0 0.0000000000 304612 1 100.00 0.00
80 90 85 1 0.0003282854 304613 1 100.00 0.00
Autor: Grupo 4

3 Gráficos de distribución de frecuencia

# Histogramas
# Histograma global ni
hist(Latitud, main="Gráfica No. 2: Frecuencia de Latitud de minerales
              metalicos y no metalicos del mundo",
     ylab="Cantidad", 
     xlab="Latitud (°)", col="grey", 
     ylim=c(0,length(Latitud)),
     las=2)

# Histograma local ni
hist(Latitud,main= "Gráfica No. 3: Frecuencia de Latitud de minerales
              metalicos y no metalicos del mundo",
     xlab= "Latitud (°)", 
     ylab= "Cantidad", col="green",
     las=2)

# Histograma global hi
barplot(TDFLatitudR$hi, space=0, main="Gráfica No. 4: Porcentaje de Latitud de
        minerales metalicos y no metalicos del mundo", 
        ylab="Porcentaje (%)", xlab="Latitud (°)", ylim = c(0,100),
        col="blue", names.arg = TDFLatitudR$Mc)

# Histograma local hi
barplot(TDFLatitudR$hi, space=0, main="Gráfica No. 5: Porcentaje de Latitud de
        minerales metalicos y no metalicos del mundo", 
        ylab="Porcentaje (%)", xlab="Latitud (°)",
        col="grey", names.arg = TDFLatitudR$Mc)

# Ojivas
#Ojivas combinadas de la frecuencia Ni
plot(LimInf,Nidsc,main = "Gráfica No. 6: Ojivas combinadas de Latitud de minerales
     metalicos y no metalicos del mundo",
     xlab = "Latitud",
     ylab="Cantidad", col="blue",type = "b")
lines(LimSup,Niasc,col="green",type = "b")
legend("right",
       legend = c("Ojiva descendente", "Ojiva ascendente"),
       col = c("blue", "green"),
       pch = 1, lty = 1,
       cex = 0.6,
       inset = c(0.05, 0.05),
       bty = "n")

#Ojivas combinadas de la frecuencia Hi
plot(LimInf,Hidsc,main = "Gráfica No. 7: Ojivas combinadas de Latitud de minerales
     metalicos y no metalicos del mundo",
     xlab = "Latitud",
     ylab="Cantidad", col="blue",type = "b")
lines(LimSup,Hiasc,col="green",type = "b")
legend("right",
       legend = c("Ojiva descendente", "Ojiva ascendente"),
       col = c("blue", "green"),
       pch = 1, lty = 1,
       cex = 0.6,
       inset = c(0.05, 0.05),
       bty = "n")

# Diagrama de caja
Caja<-boxplot(Latitud,horizontal = T,
              col = "skyblue", main="Gráfica No 8: Distribución de de Latitud de
              minerales metalicos y no metalicos del mundo", 
              xlab="Latitud")

#4 Indicadores ##4.1 Posición

minimo     <- min(Latitud)
maximo     <- max(Latitud)
rango      <- maximo - minimo
media      <- mean(Latitud)
media
## [1] 26.65901
mediana    <- median(Latitud)
cuartiles  <- quantile(Latitud, probs = c(0.25, 0.5, 0.75))
cuartiles
##      25%      50%      75% 
## 27.60165 32.22100 35.33889

##4.2 Dispersión

varianza        <- var(Latitud)
varianza
## [1] 250.3903
desviacion      <- sd(Latitud)
desviacion
## [1] 15.82373
coef_var        <- desviacion / media * 100   # Coeficiente de variación (%)
coef_var
## [1] 59.35602
# Nota: coeficiente de variación no se usa si media aritmetica es cercana de 0 o negativa.

4.3 Forma

#(requiere paquete 'moments')
asimetria   <- skewness(Latitud)    # Sesgo o asimetría
asimetria
## [1] -1.574762
curtosis    <- kurtosis(Latitud)    # Curtosis (forma de la distribución)
curtosis
## [1] 5.066595

#4.4 Tabla resumen

# Crear una lista de indicadores
valores <- c(
  minimo,
  maximo,
  rango,
  media,
  mediana,
  cuartiles[1],  # Q1
  cuartiles[3],  # Q3
  varianza,
  desviacion,
  coef_var,
  asimetria,
  curtosis
)

# Nombres de los indicadores
nombres <- c(
  "Mínimo",
  "Máximo",
  "Rango",
  "Media",
  "Mediana",
  "Q1",
  "Q3",
  "Varianza",
  "Desv. estándar",
  "Coef. de variación (%)",
  "Asimetría",
  "Curtosis"
)

# Crear tabla horizontal
tabla_horizontal <- as.data.frame(t(valores))
colnames(tabla_horizontal) <- nombres

# Mostrar tabla
tabla_horizontal
##     Mínimo   Máximo  Rango    Media Mediana       Q1       Q3 Varianza
## 1 -54.6785 89.93152 144.61 26.65901  32.221 27.60165 35.33889 250.3903
##   Desv. estándar Coef. de variación (%) Asimetría Curtosis
## 1       15.82373               59.35602 -1.574762 5.066595
# Outliers
IQR_val <- cuartiles[3] - cuartiles[1]

# Límites para detectar outliers
limite_inferior <- cuartiles[1] - 1.5 * IQR_val
limite_superior <- cuartiles[3] + 1.5 * IQR_val

# Extraer outliers
outliers <- Latitud[Latitud < limite_inferior | Latitud > limite_superior]

# Número de outliers
num_outliers <- length(outliers)

# Valores mínimo y máximo de los outliers
min_outlier <- if(num_outliers > 0) min(outliers) else NA
max_outlier <- if(num_outliers > 0) max(outliers) else NA

# Crear tabla resumen
Tabla_outliers <- data.frame(
  "Cantidad de outliers" = num_outliers,
  "Valor mínimo de outliers" = min_outlier,
  "Valor máximo de outliers" = max_outlier
)
# Mostrar tabla
Tabla_outliers
##   Cantidad.de.outliers Valor.mínimo.de.outliers Valor.máximo.de.outliers
## 1                70332                 -54.6785                 89.93152

5 Conclusiones

La variable longitud, medida en grados, presenta valores que oscilan entre -54.68 y 89.93, con una media de 26.66 y una mediana de 32.22, lo que indica una asimetría notable hacia la izquierda (asimetría = -1.57). Los datos muestran una dispersión considerable, reflejada en un rango de 144.61 grados y una desviación estándar de 15.82. El coeficiente de variación positivo (59.36%) indica que existe una variabilidad alta respecto a la media. La distribución es heterogénea y presenta una curtosis elevada (5.07), lo que sugiere una concentración significativa de valores cercanos a la mediana, junto con la presencia de valores atípicos en ambos extremos. La mayor parte de los datos se concentra entre el primer cuartil (Q1 = 27.60) y el tercer cuartil (Q3 = 35.34), evidenciando un patrón de acumulación en ese rango.

Este comportamiento resulta especialmente relevante para el estudio de la distribución geográfica de minerales, ya que permite identificar zonas con mayor concentración de yacimientos minerales a nivel mundial. La concentración de valores en determinadas franjas longitudinales revela patrones espaciales significativos, útiles para la exploración, planificación y aprovechamiento estratégico de recursos minerales en distintas regiones del planeta.