ÍNDICE

  1. Primer ejercicio

1.1 sismos por mes

1.2 sismos por estado

1.3 gráfico circular

1.4 5 estados con sismos fuertes

1.5 historgrama de Chiapas

  1. Segundo ejercicio

2.1 prueba

  1. Tercer ejercicio

EJERCICIO 1

Utilizando la información correspondiente a los sismos registrados por el Sistema Sismológico Nacional (SSN) en el periodo 01-01-1980 al 24-09-2021, se calcula:

1.1.

El total de sísmo detectados por mes.

#Cargi base
base <- read.csv("/Users/cristinaalvarez/Desktop/SSNMX_catalogo_19800101_20210924.csv")
#convierto a fecha y extraigo mes
fecha <- strptime(base$Fecha, format="%d/%m/%y")
base$mes <- month(fecha)
mensual <- as.data.frame(table(base$mes))
#cambio número de mes por abreviatura del nombre selecciono variables y ordeno tabla
mensual$mes[c(1,2,3,4,5,6,7,8,9,10,11,12)] <- c("ene","feb", "mar", "abr", "may", "jun", "jul", "ago", "sep", "oct", "nov", "dic")
mensual <- subset(mensual[, c(2,3)])
col_order <- c("mes", "Freq")
mensual <- mensual[, col_order]
mensual<-as.data.frame(mensual)
#compilo tabla y estiliso
mensual<-knitr::kable(mensual, row.names = F, full_width = FALSE, align = "rc", col.names = c("Mes", "Frecuencia de sismos"))
kable_classic(mensual, "hover", full_width = FALSE, position = "center", font_size = 14, column_spec(mensual, 2,  width="10em"))
Mes Frecuencia de sismos
ene 21195
feb 20644
mar 19155
abr 17959
may 17807
jun 18129
jul 17633
ago 17827
sep 21497
oct 18254
nov 18094
dic 18570

Note que puede hacer click o posicionarse sobre una fila de la tabla para resaltar un valor específico.

La tabla de frecuencia de sismos por mes muestra que el mes con mayor cantidad de sismos es septiempre, seguido por enero y febrero. No obstante, en este análisis no se percibe la magnitud de estos.

1.2.

El total de sismos detectados por cada estado de la república.

#se agrega una columna de 1 calcular frecuencia sobre esta.
base$c <- 1
# se separa la información de la varaible localización para quedarnos con el estado
estado <- (map(strsplit(base$Referencia.de.localizacion,","), 2))
#Homologo nombre d elos estados
#quito espacios
estado <-str_replace_all(estado, fixed(" "), "")
base$estado<- as.character(estado)
#Los que sólo tienen N los catalogo como Null
base["estado"][base["estado"] == "N"] <- "NULL"
estado_freq <- as.data.frame(aggregate(c~estado, FUN = sum, data=base))
#Compilo tabla
estado_freq<-as.data.frame(estado_freq)
estado_freq<-knitr::kable(estado_freq, row.names = F, full_width = FALSE, align = "cc", col.names = c("Estado", "Frecuencia de sismos"))
kable_classic(estado_freq,"hover", full_width = FALSE, position = "center", font_size = 12, column_spec(estado_freq, 2,  width="10em")) 
Estado Frecuencia de sismos
AGS 42
BC 8170
BCS 2846
CAMP 62
CDMX 285
CHIH 400
CHIS 42913
COAH 109
COL 5288
DGO 61
GRO 39249
GTO 82
HGO 548
JAL 6832
MEX 583
MICH 13979
MOR 233
NAY 263
NL 420
NULL 3
OAX 94592
PUE 1130
QR 86
QRO 15
SIN 920
SLP 189
SON 1309
TAB 530
TAMS 115
TLAX 120
VER 5159
YUC 3
ZAC 228

Note que puede hacer click o posicionarse sobre una fila de la tabla para resaltar un valor específico.

Para este análisis se catalogó como NULL aquellos sismos en donde no existía información clara del estado o los que desde el SSN se clasificaban como tal. POr esta razón se observan 33 columnas. Estos casos son mínimos, por lo que no tendría impacto el omitir esta información.

La tabla muestra que los estado con mayor frecuencia de sismos se concetra en los estados de Oaxaca, Chiapas y Guerrero. Esto quiere decir, que la parte sur del país es la de mayor actividad sísmica, apesar que también existan en otros estados de la república.

Esto coincide con las regiones sísmicas tal como se muestra en la siguiente imagen:

1.3.

Gráfico circular de frecuencia de los sísmos de acuerdo a la hora del día (0-23) cuando aconteció.

#preparo data
hora <- strptime(base$Hora, format="%H:%M:%S")
base$hora <- hour(hora)
hora_freq <- as.data.frame(aggregate(c~hora, FUN = sum, data=base))

# labels
label_data <- hora_freq
number_of_bar <- nrow(label_data)
angle <-  90 - 360 * (label_data$hora-0.5) /number_of_bar
label_data$hjust<-ifelse( angle < -90, 1, 0)
label_data$angle<-ifelse(angle < -90, angle+180, angle)

# comilo gráfica
p <- ggplot(hora_freq, aes(x=as.factor(hora), y=c)) +  
  geom_bar(stat="identity", fill=alpha("#F08080", 80)) +
  ggtitle("Sismos por hora del día (0-23 hrs)")+
  #theme_minimal() +
  labs(
    x = "Hora de ocurrencia",
    y= "Cantidad de sismos"
    ) +
  theme(    #axis.text = element_blank(),
    #axis.title = element_blank(),
    panel.grid.major = element_line(colour = "grey80"),
    plot.background = element_rect(fill="white", colour = "white"),
    panel.background = element_rect(fill= "white", colour = "grey"),
    #plot.margin = unit(rep(0,4), "cm")     # This remove unnecessary margin around plot
  ) +
  coord_polar(start = 0)+
  geom_text(data=hora_freq, aes(x=hora, y=c, label=hora, hjust=label_data$hjust), color="grey80", fontface="bold",alpha=0.6, size=0.1, angle=label_data$angle, inherit.aes = FALSE ) 
p

La gráfica muestra que entre las 7:00 hrs y 17:00 hrs la actividad sísmica es más baja. Por el contrario, entre las 18:00 hrs y las 5:00 hrs hay mayor frecuencia de sismos.

1.4.

Considerando solamente aquellos sismos cuya magnitud fue mayor o igual a 5 ¿cuáles son los 5 estados con mayor cantidad de sísmos?

#primero quito las observaciones en donde no se tiene magnitud
grados<- as.data.frame(subset(base, base$Magnitud != "no calculable"))
grados$Magnitud <- as.numeric(grados$Magnitud)
#después sólo mequedo con los que la magnitu es mayor o igual a 5 grados
data_2 <- as.data.frame(subset(grados, grados$Magnitud >= 5))
#agrego una variables de unos para contar frecuencia sobre esa
data_2$c <- 1
data_2 <-as.data.frame( aggregate(c~estado, FUN = sum, data=data_2))
#ordeno de mayor a menos
data_2 <- data_2[order(-data_2$c),]
#me qquedo con los primeros 5
#compilo tabla
data_2<- as.data.frame(data_2[1:5,])
data_2<-knitr::kable(data_2, row.names = F, full_width = FALSE, align = "cc", col.names = c("Estados", "Total sismos ≥ 5"))
kable_classic(data_2,"hover", full_width = FALSE, position = "center", font_size = 12, column_spec(data_2, 2,  width="10em")) 
Estados Total sismos ≥ 5
CHIS 499
OAX 272
GRO 185
BCS 115
JAL 105

Note que puede hacer click o posicionarse sobre una fila de la tabla para resaltar un valor específico.

En esta tabla se puede observar que los estados con mayor frecuencia general de sismos también coincide con los de mayor frecuencia que son Oaxaca, Chiapas y Guerrero.

1.5.

Realizar un histograma de la magnitud de los sísmos detectados en el estado de Chiapas.

#de la base en donde tango los sismos con magnitud, separo los de chiapas
data_3 <- as.data.frame(subset(grados, grados$estado == "CHIS"))
#compilo de histograma
ggplot(data_3, aes(x=Magnitud)) +
  geom_histogram( binwidth=.5, fill="#F08080", color="black", alpha=0.9) +
  ggtitle("Histograma magintud de sismos en Chiapas (1980-1921)") +
  theme_ipsum() +
  theme(
    panel.grid.major = element_line(colour = "grey80") ,
    plot.background = element_rect(fill="white", colour = "white"),
    panel.background = element_rect(fill= "white", colour = "grey"),
    plot.title = element_text(size=15)
  )

EJERCICIO 2

El método más común para la determinación de la aproximación estadísticamente óptima con un conjunto de parámetros dado un grupo de datos, es el método conocido como Mínimos Cuadrados (por sus siglas en inglés, LS), y fue propuesto hace aproximadamente dos siglos por Carl Friedrich Gauss.

Así, en el caso más simple de la regresión lineal \((y = b_{0} + b_{1} = X)\), se busca minimizar la suma de cuadrados en el vector de residuales e. Esta función objetivo de mínimos cuadrados puede ser escrita en su forma compacta de la siguiente manera:

\[\begin{equation} \begin{split} \bf{f(b)} = e^{T}e \\ & = (y-Xb^{T})(y - Xb)\\ & = y^{T}y -2y^{T}Xb+bX^{T}Xb\\ \end{split} \end{equation}\]

Calculando las derivadas parciales respecto a los parámetros b, e igualando dicha derivada a 0, se obtiene el vector de estimaciones puntuales de los parámetros β (o b):

\[ b= (X^TX) ^{-1}X^T y\] Utilizando los datos de la base corazon (Link a la base de datos), se obtiene el vector de estimaciones puntuales para los parámetros b cuando X = matriz de variables biking y smoking (498 x 2) y, y = hear.disease (498 x 1).

#cargo base
corazon <- read.csv("/Users/cristinaalvarez/Desktop/corazon.csv")
#agrego una columna de 1 para calcular intercepto
corazon$intercept <- 1
#llevo datafrema a matrix
corazon <- data.matrix(corazon)
#opera matricialmente con forme fórmula
x <- corazon[, c(1,2,4)]
y <- as.matrix(corazon[,3])
x_t <- t(x)
a <- (x_t%*%x)
a_inv <-solve(a)
c <- a_inv%*%x_t
b<- c%*%y
#compilo como table los resultados de beta
b<-as.data.frame(b)
b<-knitr::kable(b, row.names = T, full_width = FALSE, align = "cc", col.names = c( "Coeficientes Beta"))
kable_classic(b,"hover", full_width = FALSE, position = "center", font_size = 12, column_spec(b, 2,  width="10em"))
Coeficientes Beta
biking -0.2001331
smoking 0.1783339
intercept 14.9846580

Note que puede hacer click o posicionarse sobre una fila de la tabla para resaltar un valor específico.

2.1

Prueba:

existen comandos dentro de R que realizan todo el análisis de regresión lineal. Estos, además de proporcionarnos las estimaciones de coeficientes \(\beta\) arrojan mayor información del modelo LS

info <- read.csv("/Users/cristinaalvarez/Desktop/corazon.csv")
regresion <- lm(heart.disease ~ biking + smoking, data = info)
summary(regresion)
## 
## Call:
## lm(formula = heart.disease ~ biking + smoking, data = info)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -2.1789 -0.4463  0.0362  0.4422  1.9331 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 14.984658   0.080137  186.99   <2e-16 ***
## biking      -0.200133   0.001366 -146.53   <2e-16 ***
## smoking      0.178334   0.003539   50.39   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.654 on 495 degrees of freedom
## Multiple R-squared:  0.9796, Adjusted R-squared:  0.9795 
## F-statistic: 1.19e+04 on 2 and 495 DF,  p-value: < 2.2e-16

EJERCICIO 3

Ejercicio libre de programación


.columns{display: flex;}
h1{color:#CF6245; 
  text-align:center;}
h2{color:#CF6245;}
h3{color:#CF6245;
    ont-size: 5px;}

body {
  background-color: #FEF5E7;
  font-size: 12pt;
  font-weight: bold;
  background-image: url("fondo.png");
  margin: 5em; 
}

  .principal {
  background-color: #EFD5C9;
  border: 1px dashed grey;
  font-weight: bold;
    font-size: 7pt;
}

    .secondary {
  background-color: #EFD5C9;
  border: none;
  font-weight: light;
      font-size: 7pt;
  color: #616161;
}

a:link {
  color: #008080;
}