U2A7

Ismael lopez barra

30/11/2020

Asignación

-> Asignación U2A7, tomar una serie de datos y aplicar la cadena de markov con un planteamiento similar al de este ejercicio para hacer predicciones

Planteamiento

  • Determinar

Se trata de establecer una estimación del número de sismos presentados en México en los proximos 3 años (2020,2021,2022) tomando como base datos obtenidos la cantidad de sismos reportados por el SSN en el país.

Análisis

setwd("~/1 EA1011/unidad II")
library(markovchain)
## Package:  markovchain
## Version:  0.8.5-2
## Date:     2020-09-07
## BugReport: https://github.com/spedygiorgio/markovchain/issues
library(prettydoc)
library(readr)
sismosmx <- read.csv("sismosmx.csv")
anuales <- sismosmx$Anual
numsismos <- sismosmx$numerosismos
Rango <- sismosmx$Rango
datafsismos <- data.frame(anuales,numsismos,Rango)
str(sismosmx)
## 'data.frame':    30 obs. of  3 variables:
##  $ Anual       : num  1990 1991 1992 1993 1994 ...
##  $ numerosismos: int  796 728 614 916 622 678 789 1019 1024 1099 ...
##  $ Rango       : Factor w/ 6 levels ">30000","0-1000",..: 2 2 2 2 2 2 2 3 3 3 ...
  • Número de datos (frecuencia) por intervalo de número de sismos presentados a lo largo de los años:
table(sismosmx$Rango)
## 
##      >30000      0-1000   1000-3000 10000-30000   3000-7000  7000-10000 
##           1           7          13           4           4           1
  • Primeros registros de sismos en México (A partir del año 1990)
head(sismosmx)
##   Anual numerosismos  Rango
## 1  1990          796 0-1000
## 2  1991          728 0-1000
## 3  1992          614 0-1000
## 4  1993          916 0-1000
## 5  1994          622 0-1000
## 6  1995          678 0-1000
  • Primeros registros Para el rango en el número de sismos:
psismos <- sismosmx$Rango
head(psismos)
## [1] 0-1000 0-1000 0-1000 0-1000 0-1000 0-1000
## Levels: >30000 0-1000 1000-3000 10000-30000 3000-7000 7000-10000
  • Matriz transitoria
P1S <- createSequenceMatrix(psismos)
P1S
##             0-1000 1000-3000 10000-30000 3000-7000 7000-10000 >30000
## 0-1000           6         1           0         0          0      0
## 1000-3000        0        12           0         1          0      0
## 10000-30000      0         0           2         0          0      1
## 3000-7000        0         0           0         3          1      0
## 7000-10000       0         0           1         0          0      0
## >30000           0         0           1         0          0      0
  • La sig. función devuelve una lista con todos los resultados de la estimaciones, incluyendo un objeto markovchain que posee la matriz de transición. Para el ejemplo tratado se obtienen los siguientes resultados:
Fitsismos <- markovchainFit(data=psismos, confidencelevel = 0.95)
Fitsismos
## $estimate
## MLE Fit 
##  A  6 - dimensional discrete Markov Chain defined by the following states: 
##  0-1000, 1000-3000, 10000-30000, 3000-7000, 7000-10000, >30000 
##  The transition matrix  (by rows)  is defined as follows: 
##                0-1000 1000-3000 10000-30000  3000-7000 7000-10000    >30000
## 0-1000      0.8571429 0.1428571   0.0000000 0.00000000       0.00 0.0000000
## 1000-3000   0.0000000 0.9230769   0.0000000 0.07692308       0.00 0.0000000
## 10000-30000 0.0000000 0.0000000   0.6666667 0.00000000       0.00 0.3333333
## 3000-7000   0.0000000 0.0000000   0.0000000 0.75000000       0.25 0.0000000
## 7000-10000  0.0000000 0.0000000   1.0000000 0.00000000       0.00 0.0000000
## >30000      0.0000000 0.0000000   1.0000000 0.00000000       0.00 0.0000000
## 
## 
## $standardError
##                0-1000 1000-3000 10000-30000  3000-7000 7000-10000    >30000
## 0-1000      0.3499271 0.1428571   0.0000000 0.00000000       0.00 0.0000000
## 1000-3000   0.0000000 0.2664694   0.0000000 0.07692308       0.00 0.0000000
## 10000-30000 0.0000000 0.0000000   0.4714045 0.00000000       0.00 0.3333333
## 3000-7000   0.0000000 0.0000000   0.0000000 0.43301270       0.25 0.0000000
## 7000-10000  0.0000000 0.0000000   1.0000000 0.00000000       0.00 0.0000000
## >30000      0.0000000 0.0000000   1.0000000 0.00000000       0.00 0.0000000
## 
## $confidenceLevel
## [1] 0.95
## 
## $lowerEndpointMatrix
##                0-1000 1000-3000 10000-30000 3000-7000 7000-10000 >30000
## 0-1000      0.1712982 0.0000000           0         0          0      0
## 1000-3000   0.0000000 0.4008065           0         0          0      0
## 10000-30000 0.0000000 0.0000000           0         0          0      0
## 3000-7000   0.0000000 0.0000000           0         0          0      0
## 7000-10000  0.0000000 0.0000000           0         0          0      0
## >30000      0.0000000 0.0000000           0         0          0      0
## 
## $upperEndpointMatrix
##             0-1000 1000-3000 10000-30000 3000-7000 7000-10000    >30000
## 0-1000           1 0.4228521           0 0.0000000  0.0000000 0.0000000
## 1000-3000        0 1.0000000           0 0.2276896  0.0000000 0.0000000
## 10000-30000      0 0.0000000           1 0.0000000  0.0000000 0.9866548
## 3000-7000        0 0.0000000           0 1.0000000  0.7399911 0.0000000
## 7000-10000       0 0.0000000           1 0.0000000  0.0000000 0.0000000
## >30000           0 0.0000000           1 0.0000000  0.0000000 0.0000000
## 
## $logLikelihood
## [1] -10.55516
mcsismos <- Fitsismos$estimate
summary(mcsismos)
## MLE Fit  Markov chain that is composed by: 
## Closed classes: 
## 10000-30000 >30000 
## Recurrent classes: 
## {10000-30000,>30000}
## Transient classes: 
## {0-1000},{1000-3000},{3000-7000},{7000-10000}
## The Markov chain is not irreducible 
## The absorbing states are: NONE
  • Diagrama de la cadena de Markov
plot(mcsismos)

  • La distribución estacionaria de la matriz es:
steadyStates(mcsismos)
##      0-1000 1000-3000 10000-30000 3000-7000 7000-10000 >30000
## [1,]      0         0        0.75         0          0   0.25
  • Predicciones

últimos registros

tail(sismosmx$Rango)
## [1] 7000-10000  10000-30000 10000-30000 10000-30000 >30000      10000-30000
## Levels: >30000 0-1000 1000-3000 10000-30000 3000-7000 7000-10000

Analizando…

Se observa que el último año hubo una cantidad de sismos entre 10000-30000 , Como tenemos una cadena de Markov, para realizar la predicción de los sismos del siguientes año (2020,2021 y 2022), se necesita conocer el año actual (tomando como referencia el año 2019), las predicciones para los siguientes 3 años (n=3), dado que en la utlima vez se registraron entre 10000-30000 sismos en el territorio nacional, son las siguientes:

predict(mcsismos, newdata="10000-30000",n.ahead=3)
## [1] "10000-30000" "10000-30000" "10000-30000"

Resultados

Por lo tanto tenemos que aunque en el año 2018 hubo un número de sismos mayor a a 30000 , después en el año 2019 bajo a el rango de 10000-30000 sismos registrados, se estima que para los proximos 3 años (2020,2021 y 2022) , el número de sismos registrados en territorio nacional se mantenga dentro de este último rango de 10000-30000 sismos.