Variable cuantitativa continua

Brecha sísmica

1 Cargar datos

Importamos el archivo “Earthquakes.csv” desde una ruta local y lo almacena en el objeto Earthquakes, usando espacios o tabulaciones como separador. Luego, la función str(Earthquakes) muestra la estructura del data frame, indicando tipos de datos y ejemplos de sus columnas.

Earthquakes <- read.csv("C:/Users/HP/Desktop/Proyecto Sismos de la India/Earthquakes.csv", sep=";")
str(Earthquakes)
## 'data.frame':    17805 obs. of  22 variables:
##  $ time           : chr  "2024-10-31T01:32:40.503Z" "2024-10-30T23:51:31.217Z" "2024-10-29T02:35:27.930Z" "2024-10-28T13:08:40.107Z" ...
##  $ latitude       : num  298.6 282.1 47.2 278.7 327.5 ...
##  $ longitude      : chr  "92.247" "670.879" "962.377" "940.243" ...
##  $ depth          : num  10 10 42.1 36.3 10 ...
##  $ mag            : num  4.4 4.3 4.6 4.6 4 4.6 4.7 4.3 5.3 4.4 ...
##  $ magType        : chr  "mb" "mb" "mb" "mb" ...
##  $ nst            : int  35 36 27 62 22 44 39 34 80 27 ...
##  $ gap            : num  89 195 91 98 79 170 169 105 65 140 ...
##  $ dmin           : num  6.45 9.37 0.87 6.69 6.64 ...
##  $ rms            : num  0.82 0.72 0.55 0.65 0.72 0.74 0.81 0.54 0.92 0.9 ...
##  $ net            : chr  "us" "us" "us" "us" ...
##  $ id             : chr  "us7000np4h" "us7000np47" "us7000nnqs" "us7000nnml" ...
##  $ updated        : chr  "2024-10-31T01:54:50.040Z" "2024-10-31T00:07:19.040Z" "2024-10-29T03:36:02.040Z" "2024-10-29T04:19:35.951Z" ...
##  $ place          : chr  "113 km ENE of Lhasa, China" "64 km NE of Khuzdar, Pakistan" "55 km S of Reuleuet, Indonesia" "35 km NNE of Ziro, India" ...
##  $ type           : chr  "earthquake" "earthquake" "earthquake" "earthquake" ...
##  $ horizontalError: num  7.45 12.2 5.1 8.9 9.39 ...
##  $ depthError     : num  1.88 1.99 8.27 7.33 1.98 ...
##  $ magError       : num  0.114 0.092 0.146 0.078 0.139 0.078 0.097 0.107 0.11 0.102 ...
##  $ magNst         : int  22 33 14 49 14 49 32 25 8 28 ...
##  $ status         : chr  "reviewed" "reviewed" "reviewed" "reviewed" ...
##  $ locationSource : chr  "us" "us" "us" "us" ...
##  $ magSource      : chr  "us" "us" "us" "us" ...

Calculamos el número recomendado de clases (intervalos) para una variable en un histograma o tabla de frecuencias usando la regla de Sturges.

k1 <- 1 + (3.3 * log10(17805))
k1
## [1] 15.02679

Cálculo de rango, número de intervalos, amplitud, marca de clase,límites y frecuencia absoluta simple.

BrechaSismica <- Earthquakes$gap
valoresnulos <- is.na(BrechaSismica)
BrechaSismicaomitida <- na.omit(BrechaSismica)
min <- min(BrechaSismicaomitida)
max <- max(BrechaSismicaomitida)
R <- max - min
k <- 15
A <- R / k
Li <- seq(from = min, by = A, length.out = k)
Li <- round(Li, 2)
Ls <- Li + A
Ls <- round(Ls, 2)
MC <- round((Li + Ls) / 2, 2)
ni <- numeric(length(Li))
for (i in 1:length(Li)) {
  ni[i] <- sum(BrechaSismicaomitida >= Li[i] & BrechaSismicaomitida < Ls[i])
}
ni[length(Li)] <- sum(BrechaSismicaomitida >= Li[length(Li)] &
                        BrechaSismicaomitida <= max)
sum(ni)
## [1] 16839

Cálculo de frecuencia relativa simple (hi)

hi <- (ni / sum(ni) * 100)
hi
##  [1]  2.78520102  8.67628719 12.01971614 14.91181187 15.70758359  8.70598017
##  [7] 10.08967278 11.17049706 10.22626047  4.25797256  0.42757883  0.36225429
## [13]  0.36225429  0.22566661  0.07126314
sum(hi)
## [1] 100

Frecuencia absoluta y relativa acumulada

Ni_asc <- cumsum(ni)
Hi_asc <- round(cumsum(hi), 2)
Ni_dsc <- rev(cumsum(rev(ni)))
Hi_dsc <- round(rev(cumsum(rev(hi))), 2)

2 Tabla de distribución de frecuencias

Este código reconstruye el data frame TDFBrechaSismica y sirve para visualizar la tabla completa de frecuencias simples y relativas.

TDFBrechaSismica <- data.frame(Li, Ls, MC, ni, round(hi,2), Ni_asc, Hi_asc, Ni_dsc, Hi_dsc)
colnames(TDFBrechaSismica)[5] <- "hi"
print(TDFBrechaSismica)
##        Li     Ls     MC   ni    hi Ni_asc Hi_asc Ni_dsc Hi_dsc
## 1    9.00  30.92  19.96  469  2.79    469   2.79  16839 100.00
## 2   30.92  52.84  41.88 1461  8.68   1930  11.46  16370  97.21
## 3   52.84  74.76  63.80 2024 12.02   3954  23.48  14909  88.54
## 4   74.76  96.68  85.72 2511 14.91   6465  38.39  12885  76.52
## 5   96.68 118.60 107.64 2645 15.71   9110  54.10  10374  61.61
## 6  118.60 140.52 129.56 1466  8.71  10576  62.81   7729  45.90
## 7  140.52 162.44 151.48 1699 10.09  12275  72.90   6263  37.19
## 8  162.44 184.36 173.40 1881 11.17  14156  84.07   4564  27.10
## 9  184.36 206.28 195.32 1722 10.23  15878  94.29   2683  15.93
## 10 206.28 228.20 217.24  717  4.26  16595  98.55    961   5.71
## 11 228.20 250.12 239.16   72  0.43  16667  98.98    244   1.45
## 12 250.12 272.04 261.08   61  0.36  16728  99.34    172   1.02
## 13 272.04 293.96 283.00   61  0.36  16789  99.70    111   0.66
## 14 293.96 315.88 304.92   38  0.23  16827  99.93     50   0.30
## 15 315.88 337.80 326.84   12  0.07  16839 100.00     12   0.07
#TOTAL ni-hi
total_ni <- sum(ni)
total_hi <- 100
TDFBrechaSismicaCompleto <- rbind(TDFBrechaSismica, data.frame(
  Li = "Total", Ls = " ", MC = " ",
  ni = total_ni, hi = total_hi, Ni_asc = " ", Hi_asc = " ", Ni_dsc = " ", Hi_dsc = " "
))



library(gt)
## Warning: package 'gt' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.3
## 
## 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
# Convertir todas las columnas a carácter para evitar conflictos
TDFBrechaSismicaCompleto[] <- lapply(TDFBrechaSismicaCompleto, as.character)

# Definir textos con códigos Unicode para tildes
title_text <- "Tabla Nro. 21"
subtitle_text <- "Tabla de distribuci\u00F3n de frecuencias simples y acumuladas de la brecha s\u00EDsmica en el Subcontinente Indio (2000-2024)"
source_note_text <- "Autor: Cristian P\u00E9rez"

# Crear la tabla
tabla_brechasismica <- TDFBrechaSismicaCompleto %>%
  gt() %>%
  tab_header(
    title = title_text,
    subtitle = subtitle_text
  ) %>%
  tab_source_note(
    source_note = source_note_text
  ) %>%
  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 = Li == "Total"
    )
  )

tabla_brechasismica
Tabla Nro. 21
Tabla de distribución de frecuencias simples y acumuladas de la brecha sísmica en el Subcontinente Indio (2000-2024)
Li Ls MC ni hi Ni_asc Hi_asc Ni_dsc Hi_dsc
9 30.92 19.96 469 2.79 469 2.79 16839 100
30.92 52.84 41.88 1461 8.68 1930 11.46 16370 97.21
52.84 74.76 63.8 2024 12.02 3954 23.48 14909 88.54
74.76 96.68 85.72 2511 14.91 6465 38.39 12885 76.52
96.68 118.6 107.64 2645 15.71 9110 54.1 10374 61.61
118.6 140.52 129.56 1466 8.71 10576 62.81 7729 45.9
140.52 162.44 151.48 1699 10.09 12275 72.9 6263 37.19
162.44 184.36 173.4 1881 11.17 14156 84.07 4564 27.1
184.36 206.28 195.32 1722 10.23 15878 94.29 2683 15.93
206.28 228.2 217.24 717 4.26 16595 98.55 961 5.71
228.2 250.12 239.16 72 0.43 16667 98.98 244 1.45
250.12 272.04 261.08 61 0.36 16728 99.34 172 1.02
272.04 293.96 283 61 0.36 16789 99.7 111 0.66
293.96 315.88 304.92 38 0.23 16827 99.93 50 0.3
315.88 337.8 326.84 12 0.07 16839 100 12 0.07
Total 16839 100
Autor: Cristian Pérez
# GRÁFICAS
colores <- gray.colors(length(ni), start = 0.3, end = 0.9, gamma = 2.2, rev = FALSE)

3 Histogramas

Este código genera histogramas que muestran cómo se distribuyen las frecuencias absolutas de la brecha sísmica, para analizar la concentración y variabilidad de los sismos en la región.

3.1 Histograma de frecuencia absoluta local (ni).

hist(
  BrechaSismicaomitida,
  breaks = seq(min, max, A),
  main = "Gr\u00E1fica No63: Distribuci\u00F3n de Brecha s\u00EDsmica para los sismos registrados en la regi\u00F3n de la India",
  xlab = "Brecha Sismica",
  ylab = "Cantidad",
  col = colores
)

3.2 Histograma de frecuencia absoluta global (ni).

hist(
  BrechaSismicaomitida,
  breaks = seq(min, max, A),
  main = "Gr\u00E1fica No64: Distribuci\u00F3n Global de Brecha s\u00EDsmica para los sismos registrados en la regi\u00F3n de la India",
  xlab = "Brecha sismica",
  ylab = "Cantidad",
  col = colores,
  ylim = c(0, 16839)
)

3.3 Histograma de frecuencia relativa local (hi).

barplot(
  TDFBrechaSismica$hi,
  space = 0,
  main = "Gr\u00E1fica No65: Distribuci\u00F3n de Frecuencias Relativas de Brecha s\u00EDsmica",
  xlab = "Brecha sismica",
  ylab = "Densidad",
  col = colores,
  names.arg = MC
)

3.4 Histograma de frecuencia relativa global (hi)

barplot(
  TDFBrechaSismica$hi,
  space = 0,
  main = "Gr\u00E1fica No66: Distribuci\u00F3n de Frecuencias Relativas de Brecha s\u00EDsmica",
  xlab = "Brecha sismica",
  ylab = "Densidad",
  ylim = c(0, 100),
  col = colores,
  names.arg = MC
)

4 Diagramas

4.1 Diagrama de caja (boxplot)

El diagrama de caja permite identificar la dispersión, la mediana y los valores atípicos de un conjunto de datos.

boxplot(
  BrechaSismicaomitida,
  horizontal = TRUE,
  main = "Gr\u00E1fica No67: Distribuci\u00F3n de la brecha s\u00EDsmica en los sismos registrados en la India",
  xlab = "Brecha sismica",
  col = colores
)

4.2 Diagrama de ojivas ascendente y descendente

Este código genera ojivas ascendente y descendente que permiten analizar el comportamiento acumulado y residual de la frecuencia absoluta, facilitando la interpretación de la distribución de los datos y la identificación de tendencias en variables continuas.

plot(
  Ls, Ni_asc,
  type = "o",
  col = "blue",
  main = "Gr\u00E1fica No68: Ojivas ascendentes y descendentes de Frecuencia absoluta para la Brecha s\u00EDsmica en la regi\u00F3n de la India",
  xlab = "Brecha S\u00EDsmica",  # <-- Unicode aquí también
  ylab = "Frecuencia"
)
lines(Li, Ni_dsc, type = "o", col = "red")

5 Indicadores estadísticos

5.1 Posición

Mediana

Me <- median(MC)
Me
## [1] 173.4

Media aritmética

xag<-sum(MC*ni)/sum(ni)
xag
## [1] 120.6196

Cálculo de la moda para datos agrupados

modal_index <- which.max(ni)
if (modal_index > 1 && modal_index < length(ni)) {
  Li_modal <- Li[modal_index]
  fi <- ni[modal_index]
  fi_1 <- ni[modal_index - 1]
  fi1 <- ni[modal_index + 1]
  moda <- Li_modal + ((fi - fi_1) / ((2 * fi) - fi_1 - fi1)) * A
} else {
  moda <- NA
  
  warning("La moda no puede calcularse.")
}
moda
## [1] 98.91708

5.2 Dispersión

Varianza

S2 <- (sum(((MC - xag)^2) * ni)) / (sum(ni) - 1)
S2
## [1] 3132.858

Desviación estándar

S <- sqrt(S2)
S
## [1] 55.97194

Coeficiente de variación

CV <- ((S / xag) * 100)
CV
## [1] 46.40367

5.3 Forma

Coeficiente de asimetría

As <- (sum(((MC - xag)^3) * ni)) / (sum(ni) * (S^3))
As
## [1] 0.3081766

Coeficiente de curtosis

K <- (sum(((MC - xag)^4) * ni)) / (sum(ni) * (S^4)) - 3
K
## [1] -0.5351173

6 Conclusiones

La variable brecha sísmica medida en grados, sus valores fluctúan desde 9 a 99.9, sus valores están en torno a su mediana con un valor de 173,4 , con una desviación estándar de 55.97. La acumulación de valores se encuentra en la parte alta, con una curtosis negativa. Por lo anteriormente mencionado, esto es medianamente beneficioso ya que, al tener una concentración menor de brechas sísmicas, desde el punto de vista geológico es útil para identificar zonas críticas donde la energía se está acumulando. Puede ser interpretada como una advertencia de acumulación de energía tectónica, y dar un punto beneficioso ya que, al tener valores menores de brecha sísmica, menores serán los valores de acumulación de energía y menor será un sismo futuro.