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")
library(readr)
library(sf)
library(gt)
library(dplyr)
library(moments)
# 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
# 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 |
# 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.
#(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
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.