Variable Cuantitativa Discreta

Magnitud

La magnitud, según la escala de Richter, es una medida logarítmica que indica la energía liberada por un sismo.

1 Cargar datos

Importamos el archivo “Magnitud_Map.csv” desde una ruta local y lo almacena en el objeto Magnitud, usando espacios o tabulaciones como separador.

Magnitud<- read.csv("C:/Users/HP/Desktop/Magnitud_Map.csv",
                   header = TRUE, sep = ",", dec =".")

2 Tabla de Distribución de Frecuencias

Calculamos las Frecuencias Simple (absoluta (ni) y relativa (hi))

#Frecuencias simples
ni<-Magnitud$Fecuencia.
ni
##  [1]    1    2    3    5   15   44   64  115  179  221  292  323  404  979 1251
## [16] 1668 1863 1844 1804 1588 1266  976  718  519  395  328  221  182  136   89
## [31]   77   39   46   27   32   14   21    9    4    6    6    4    5    5    2
## [46]    2    2    1    3    2    2    1
sum(ni)
## [1] 17805
hi<-ni/sum(ni)
sum(hi)
## [1] 1
TDFMagnitudFin<-data.frame(Magnitud, hi )
TDFMagnitudFin
#Agregar Totales:

total_ni <- sum(ni)
total_hi <- 100  #Dado que los porcentajes de frecuencia relativa ya suman 100"

# Agregar fila 'Total' a la tabla de frecuencia de tipo de magnitud
TDFMagnitudCompleto<-rbind(TDFMagnitudFin, data.frame(mag_map= "Total", 
                                                      Fecuencia. = total_ni, hi = total_hi  
                                                     ))
TDFMagnitudCompleto

3 Gráficas

# Gráficas

# DIAGRAMA DE BARRAS LOCAL ni
barplot(TDFMagnitudFin$Fecuencia., 
        main = "Gr\u00E1fica N\u00BA 86: Frecuencia de la magnitud de los sismos del subcontinente indio",
        xlab = "Magnitud", 
        ylab = "Cantidad", 
        names.arg = TDFMagnitudFin$mag_map,
        las = 2, 
        col = "red", 
        cex.names = 1)

# DIAGRAMA DE BARRAS LOCAL hi
barplot(TDFMagnitudFin$hi, 
        main = "Gr\u00E1fica N\u00BA 87: Porcentaje de la magnitud de los sismos del subcontinente indio", 
        xlab = "Mapeo de magnitud 0-51", 
        ylab = "Probabilidad", 
        names.arg = TDFMagnitudFin$mag_map, 
        las = 2, 
        col = "red")

3.1 Conjetura del Modelo

#Modelo Poison
lambda<-sum(TDFMagnitudFin$mag_map*TDFMagnitudFin$Fecuencia.)/17805
lambda
## [1] 17.63814
P<-dpois(TDFMagnitudFin$mag_map, lambda)
P
##  [1] 2.187032e-08 3.857517e-07 3.401970e-06 2.000147e-05 8.819716e-05
##  [6] 3.111267e-04 9.146157e-04 2.304588e-03 5.081079e-03 9.957863e-03
## [11] 1.756381e-02 2.816299e-02 4.139522e-02 5.616420e-02 7.075941e-02
## [16] 8.320427e-02 9.172301e-02 9.516605e-02 9.325287e-02 8.656878e-02
## [21] 7.634559e-02 6.412352e-02 5.140997e-02 3.942504e-02 2.897434e-02
## [26] 2.044213e-02 1.386774e-02 9.059296e-03 5.706753e-03 3.470913e-03
## [31] 2.040681e-03 1.161091e-03 6.399836e-04 3.420642e-04 1.774522e-04
## [36] 8.942645e-05 4.381433e-05 2.088657e-05 9.694740e-06 4.384542e-06
## [41] 1.933379e-06 8.317364e-07 3.492924e-07 1.432760e-07 5.743456e-08
## [46] 2.251197e-08 8.631938e-09 3.239389e-09 1.190350e-09 4.284806e-10
## [51] 1.511520e-10 5.227527e-11
#mag original
mag_org<-c(2.6, 2.7, 2.9, 3.0, 3.1, 3.2, 3.3, 3.4, 3.5, 3.6, 3.7, 3.8, 3.9, 
           4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 
           5.3, 5.4, 5.5, 5.6, 5.7, 5.8, 5.9, 6.0, 6.1, 6.2, 6.3, 6.4, 6.5, 6.6, 
           6.7, 6.8, 6.9, 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8,
           8.6, 9.1)
length(mag_org)
## [1] 52
# Guardar el valor de la posición 10 en una nueva variable
valor_pos <- floor(mag_org[16])

# Mostrar el resultado
print(valor_pos)
## [1] 4
# Ajustar longitudes para que coincidan
n <- min(length(hi), length(P), length(mag_org))
hi_plot <- hi[1:n]
P_plot <- P[1:n]
mag_plot <- mag_org[1:n]

# Diagrama de Barras Comparadas
barplot(rbind(hi_plot, P_plot), 
        main = "Gr\u00E1fica N\u00BA 88: Modelo de probabilidad Poisson de la magnitud de los sismos del subcontinente indio", 
        xlab = "Magnitud", 
        ylab = "Cantidad-Probabilidad", 
        col = c("red", "blue"), 
        names.arg = mag_plot, 
        beside = TRUE)

legend("topright", legend = c("Real", "Modelo"),
       fill = c("red", "blue"))

# Asignaciones después del gráfico
Fo <- hi
sum(Fo)
## [1] 1
Fe <- P

3.2 Test de Pearson

Mide el grado de correlación entre la frecuencia observada y la frecuencia esperada

#Test:
#Coeficiente de Pearson 
cor(Fo,Fe) #Correlacion 
## [1] 0.9866036
plot(Fo,Fe, main="Gráfica Nº89: Correlación de frecuencias en el modelo Poison
                 de la Magnitud de los Sismos del Subcontinente Indio",
     xlab="Observado (hi)", ylab="Esperado (P)")

abline(lm(Fe ~ Fo), col="red",lwd=2)

3.3 Test de Chi-Cuadrado

#chicuadrado
x2<-sum(((Fo-Fe)^2)/Fe)
x2
## [1] 201.584
#valor critico
vc<-qchisq(0.9999999999999999,48) #k-1
vc #umbral
## [1] 177.0941
x2<vc  #el error supera al umbral, no aprueba
## [1] FALSE

4 Carga de datos para la extración de valores comunes

Extraemos valores comunes mediante el diagarama de caja y bigotes

Earthquakes <- read.csv("C:/Users/HP/Desktop/Proyecto Sismos de la India/Earthquakes.csv", header = TRUE, sep=";" , dec=".")

Magnitud<-Earthquakes$mag
n <- length(Magnitud)
MagCaja<-Earthquakes$mag
cajaBigotes <- boxplot(MagCaja, horizontal = TRUE, col = "brown",
                       main = "Gr\u00E1fica N\u00BA90: Distribuci\u00F3n de la Magnitud de los Sismos del Subcontinente Indio",
                       xlab = "Magnitud")

#calculo del boxplot
bp<-boxplot(MagCaja, plot=FALSE )

#extraer los valores atipicos
outliers<-bp$out
Lamba3<-mean(outliers)

#extraer los valores comunes
ValoresMag<-MagCaja
MagComun<-ValoresMag[!ValoresMag %in% outliers]

4.1 Tabla de Distribución de Frecuencias Simples con valores comunes

#Frecuencias simples
TDFMagComun<-as.data.frame(table(MagComun))
ni1<-TDFMagComun$Freq
sum(ni1)
## [1] 17021
hi1<-ni1/sum(ni1)
sum(hi1)
## [1] 1
MAGNITUD_COMUN<-TDFMagComun$MagComun
TDFFin<-data.frame(MAGNITUD_COMUN, ni1, hi1)
TDFFin

4.2 Gráficas con valores comunes

#Graficas

#DIAGRAMA DE BARRAS LOCAL ni
barplot(TDFFin$ni1, main="Gráfica Nº91: Frecuencia de la Magnitud
        de los Sismos del Subcontinente Indio",
        xlab="Magnitud", ylab="Cantidad", names.arg =TDFFin$MAGNITUD_COMUN,
        las=2, col="red", cex.names=1)

#DIAGRAMA DE BARRAS LOCAL hi
barplot(TDFFin$hi1, main = "Gráfica Nº92: Porcentaje de la Magnitud
        de los Sismos del Subcontinente Indio", xlab="Mapeo de magnitud ", ylab="Probabilidad", 
        names.arg = TDFFin$MAGNITUD_COMUN, las=2, col="red")

4.3 Carga de valores mapeados

#Magnitud mapeada en valores Comunes

Mag_Comun_Map <- read.csv("C:/Users/HP/Desktop/Mag_Comun_Map.csv", header = TRUE,
                          sep=",", dec=".")

4.4 Tabla de Distribución de Frecuencias Simples con valores comunes mapeado

#Frecuencias simples
ni2<-Mag_Comun_Map$Frecuencia

sum(ni2)
## [1] 17021
hi2<-ni2/sum(ni2)
sum(hi2)
## [1] 1
Mapeo_Mag_C<-Mag_Comun_Map$Mag_Map
TDFFinMagMap<-data.frame(Mapeo_Mag_C, ni2, hi2)
TDFFinMagMap

4.5 Graficas con valores comunes mapeado

# DIAGRAMA DE BARRAS LOCAL ni
barplot(TDFFinMagMap$ni2, 
        main = "Gr\u00E1fica N\u00BA93: Frecuencia de la Magnitud de los Sismos del Subcontinente Indio",
        xlab = "Magnitud", 
        ylab = "Cantidad", 
        names.arg = TDFFinMagMap$Mapeo_Mag_C,
        las = 2, 
        col = "red", 
        cex.names = 1)

# DIAGRAMA DE BARRAS LOCAL hi
barplot(TDFFinMagMap$hi2, 
        main = "Gr\u00E1fica N\u00BA94: Porcentaje de la Magnitud de los Sismos del Subcontinente Indio", 
        xlab = "Mapeo de magnitud", 
        ylab = "Probabilidad", 
        names.arg = TDFFinMagMap$Mapeo_Mag_C, 
        las = 2, 
        col = "red")

4.6 Conjetura del modelo

#Modelo Poison
lambda2<-mean(TDFFinMagMap$Mapeo_Mag_C)
lambda2
## [1] 9.5
P2<-dpois(TDFFinMagMap$Mapeo_Mag_C, lambda2)
P2
##  [1] 7.485183e-05 7.110924e-04 3.377689e-03 1.069601e-02 2.540303e-02
##  [6] 4.826577e-02 7.642080e-02 1.037139e-01 1.231603e-01 1.300025e-01
## [11] 1.235024e-01 1.066612e-01 8.444010e-02 6.170622e-02 4.187208e-02
## [16] 2.651898e-02 1.574565e-02 8.799038e-03 4.643937e-03 2.321968e-03
sum(P2)
## [1] 0.9980376
#mag original
mag_Comun<-c(3.5, 3.6, 3.7, 3.8, 3.9, 
             4.0, 4.1, 4.2, 4.3, 4.4, 4.5, 4.6, 4.7, 4.8, 4.9, 5.0, 5.1, 5.2, 
             5.3, 5.4)
length(mag_Comun)
## [1] 20
# Guardar el valor de la posición 10 en una nueva variable
valor_pos10 <- floor(mag_Comun[8])

# Mostrar el resultado
print(valor_pos10)
## [1] 4
#Diagrama de Barras Comparadas
barplot(rbind(hi2,P2), 
        main = "Gr\u00E1fica N\u00BA95: Modelo de probabilidad Poisson de la Magnitud de los Sismos del Subcontinente Indio", 
        xlab = "Magnitud", 
        ylab = "Cantidad-Probabilidad", 
        col = c("red", "blue"), 
        names.arg = mag_Comun, 
        beside = TRUE)

legend("topright",legend = c("Real", "Modelo"),
       fill = c("red", "blue"))

4.7 Test de Pearson

#Test:
#Coeficiente de Pearson 
Fo2 <- hi2
sum(Fo2)
## [1] 1
Fe2 <- P2
Correlacion <- cor(Fo2, Fe2) * 100  # Correlacion 
Correlacion  # corregido de 'Correlación' a 'Correlacion'
## [1] 99.54891
plot(Fo2, Fe2, main = "Gr\u00E1fica N\u00BA96: Correlaci\u00F3n de frecuencias en el modelo Poisson de la Magnitud de los Sismos del Subcontinente Indio", 
     xlab = "Observado (hi)", ylab = "Esperado (P)")

abline(lm(Fe2 ~ Fo2), col = "red", lwd = 2)

4.8 Test de Chi-Cuadrado

#chicuadrado
x2_2<-sum(((Fo2-Fe2)^2)/Fe2)
x2_2
## [1] 1.805852
#valor critico
vc2<-qchisq(0.95,19) #k-1
vc2 #umbra
## [1] 30.14353

4.9 Resumen de test de bondad

Variable <- c("Magnitud")
tabla_resumen <- data.frame(Variable, round(Correlacion), round(x2_2, 2), round(vc2, 2))
colnames(tabla_resumen) <- c("Variable", "Test Pearson (%)", "Chi Cuadrado", "Umbral de aceptación")
library(knitr)
kable(tabla_resumen, format = "markdown", caption = "Tabla N\u00BA25. Resumen de test de bondad al modelo de probabilidad")
## Warning in attr(x, "align"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
## Warning in attr(x, "format"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
Tabla Nº25. Resumen de test de bondad al modelo de probabilidad
Variable Test Pearson (%) Chi Cuadrado Umbral de aceptación
Magnitud 100 1.81 30.14

5 Intervalo de confianza

Aunque las variables individuales no sigan una distribución normal, la distribución de las medias aritméticas de n conjuntos muestrales, es normal, y por lo tanto, podemos obtener la media poblacional mediante intervalos de confianza, con tres postulados principales:

                                (x-e<u<x+e)=68%

                               (x-2e<u<x+2e)=95%

                               (x-3e<u<x+3e)=99%

Donde, x es la media aritmética muestral y es el margen de error (desviación estándar poblacional).

5.1 Desviación estandar 1 con el 68%, con 1 error

x1<-mean(Magnitud)
x1
## [1] 4.464157
sigma1<-sd(Magnitud)
sigma1
## [1] 0.4732786
e1<-sigma1/sqrt(n)
e1
## [1] 0.003546875
li1 <- x1 - e1
li1 <- floor(li1 * 10) / 10
li1
## [1] 4.4
ls1 <- x1 + e1
ls1 <- round(ls1, 1)
ls1
## [1] 4.5

5.2 Desviación estandar 2 con el 95%, con 2 errores

x2<-mean(Magnitud)
x2
## [1] 4.464157
sigma2<-sd(Magnitud)
sigma2
## [1] 0.4732786
e2<-sigma2/sqrt(n)
e2
## [1] 0.003546875
li2<-x2-2*e2
li2 <- floor(li2 * 10) / 10
li2
## [1] 4.4
ls2<-x2+2*e2
ls2 <- round(ls2, 1)
ls2
## [1] 4.5

5.3 Desviación estandar 3 con el 99%, con 3 errores

x3<-mean(Magnitud)
x3
## [1] 4.464157
sigma3<-sd(Magnitud)
sigma3
## [1] 0.4732786
e3<-sigma3/sqrt(n)
e3
## [1] 0.003546875
li3<-x3-3*e3
li3 <- floor(li3 * 10) / 10
li3
## [1] 4.4
ls3<-x3+3*e3
ls3 <- round(ls3, 1)
ls3
## [1] 4.5

5.4 Tabla de desviación estándar

# Unificamos las tablas en un solo data frame
tabla_media_unificada <- data.frame(
  Limite_inferior = c(floor(li1 * 10) / 10, floor(li2 * 10) / 10, floor(li3 * 10) / 10),
  Media_poblacional = c(Variable, Variable, Variable),  # Asegúrate de que Variable tenga la misma longitud
  Limite_superior = c(round(ls1, 1), round(ls2, 1), round(ls3, 1)),
  Desviacion_estandar_poblacional = c(e1, e2, e3)
)

# Cambiamos los nombres de las columnas
colnames(tabla_media_unificada) <- c("Límite inferior", "Media poblacional", "Límite superior", "Desviación estándar poblacional")

# Cargamos la librería knitr
library(knitr)

# Generamos la tabla unificada
kable(tabla_media_unificada, format = "markdown", caption = "Tabla Nº26. Media poblacional unificada")
## Warning in attr(x, "align"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
## Warning in attr(x, "format"): 'xfun::attr()' está en desuso.
## Utilizar 'xfun::attr2()' en su lugar.
## Ver help("Deprecated")
Tabla Nº26. Media poblacional unificada
Límite inferior Media poblacional Límite superior Desviación estándar poblacional
4.4 Magnitud 4.5 0.0035469
4.4 Magnitud 4.5 0.0035469
4.4 Magnitud 4.5 0.0035469

6 Cálculo de probabilidades

¿De los sismos ocurridos en el Subcontinente Indio, cual es la probabilidad de que un sismo sea de magnitud 5.2 grados?

Prob<-dpois(18, lambda2)*17021 #5.2 se encuentra en la posicion 18
Prob
## [1] 79.04445

7 Conclusiones

La variable magnitud se gradúa en escala de Richter, siguiendo un modelo de Poisson. Según el análisis realizado, los medios poblacionales se estiman en 4.4, con un límite superior de 4.5 y un grado de confianza del 95%. Esto sugiere que, en promedio, los eventos sísmicos que se registran tienden a ser de una magnitud ligeramente menor a 4.5. Además, la desviación estándar poblacional de 0.003569 representa la variabilidad en las magnitudes observadas, indicando que los valores tienden a estar muy cerca de la media calculada.