Examen parcial 1


Manejo de Bases de Datos y Programación

Karla Jazmín López Pasión

08 de octubre de 2021


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, disponible en http://www2.ssn.unam.mx:8080/catalogo/, calcular:

Para realizar este ejercicio, primero descargué la base de datos de http://www2.ssn.unam.mx:8080/catalogo/ como se menciona en las instrucciones. El periodo elegido fue del 01-01-1980 al 24-09-2021; con tiempo del centro de México; asimismo, consideré todas las magnitudes y profundidades. Este ejercicio 1 pregunta acerca de las entidades federativas de México, es por ello que se seleccionaron todos los estados de México.

Al momento de realizar la descarga nos mencionan que hay 226764 sismos reportados en el periodo seleccionado. Una vez descargados los datos y utilicé la función read.csv

1. El total de sismos detectados por mes

base %>% 
  group_by(Mes) %>% 
  summarise("Total de sismos" =n())
## # A tibble: 12 × 2
##    Mes   `Total de sismos`
##    <ord>             <int>
##  1 Jan               21195
##  2 Feb               20644
##  3 Mar               19155
##  4 Apr               17959
##  5 May               17807
##  6 Jun               18129
##  7 Jul               17633
##  8 Aug               17827
##  9 Sep               21497
## 10 Oct               18254
## 11 Nov               18094
## 12 Dec               18570

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

base %>% 
  group_by(Edo) %>% 
  summarise("Numero de sismos" =n()) 
## # A tibble: 32 × 2
##    Edo   `Numero de sismos`
##    <chr>              <int>
##  1 AGS                   42
##  2 BC                  8170
##  3 BCS                 2846
##  4 CAMP                  62
##  5 CDMX                 285
##  6 CHIH                 400
##  7 CHIS               42913
##  8 COAH                 109
##  9 COL                 5288
## 10 DGO                   61
## # … with 22 more rows

3. Gráfica circular de frecuencia de los sismos de acuerdo a la hora del día

grafica_df <- base %>% 
  group_by(Num_Hora) %>% 
  summarise(Frecuencia = n()) 

grafica_df$Num_Hora <- as.factor(grafica_df$Num_Hora)
grafica_df %>% 
  ggplot(aes(Num_Hora, Frecuencia)) +
  geom_bar(stat = "identity", fill="#A4C3B2", col="black") +
  labs(x="", y="") +
  scale_y_continuous(limits = c(0,11000), 
                     breaks = seq(0,11000,1000)) +
  coord_polar() +
  theme_minimal() +
  geom_label(aes(label=Frecuencia)) +
  labs(title = "Número de sismos de acuerdo a la hora de acontecimiento")+
  theme(axis.text.y = element_blank(), 
        plot.title = element_text(hjust = .5))

4. Considerando solamente aquellos sismos cuya magnitud fue mayor o igual a 5, ¿cuáles son los 5 estados con mayor cantidad de sismos?

base %>% 
  mutate(Magnitud = replace(Magnitud, Magnitud=="no calculable", NA), 
         Magnitud = as.numeric(Magnitud)) %>% 
  filter(Magnitud >= 5) %>% 
  group_by(Edo) %>% 
  summarise("Numero de sismos" = n()) %>% 
  arrange(desc(`Numero de sismos`)) %>% 
  top_n(5)
## Selecting by Numero de sismos
## # A tibble: 5 × 2
##   Edo   `Numero de sismos`
##   <chr>              <int>
## 1 CHIS                 499
## 2 OAX                  272
## 3 GRO                  185
## 4 BCS                  115
## 5 JAL                  105

Fueron Chiapas, Oaxaca, Guerrero, Baja California Sur y Jalisco

5. Realizar un histograma de la magnitud de los sismos detectados en el estado de Chiapas

base %>% 
  filter(Edo == "CHIS") %>% 
  mutate(Magnitud = replace(Magnitud, Magnitud=="no calculable", NA), 
         Magnitud = as.numeric(Magnitud)) %>% 
  ggplot(aes(Magnitud)) +
  geom_histogram(bins = 30, fill= "#4B8F8C") +
  theme_minimal() +
  labs(x="Magnitud", y="Frecuencia", 
       title = "Histograma de la magnitud de los sismos detectados en Chiapas")+
  theme(plot.title = element_text(size = 15))
## Warning: Removed 5202 rows containing non-finite values (stat_bin).

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_1X\)), 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:

\[f(b)=e^Te\] \[f(b)=(y-Xb)^T(y-Xb)\] \[f(b)=y^Ty-2y^TXb+bX^TXb\]

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^Ty\] Utilizando los datos disponibles en Moodle llamados corazon, obtener 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)

Cargué los datos de la siguiente manera:

corazon<-read.csv("/Users/karlajazminlopezpasion/Downloads/corazon.csv")

Para resolver este ejercicio simplemente seguí las fórmulas dadas. Primero creé una matriz X con los datos dados y un vector y. Después hice la transpuesta de la matriz X y la multipliqué por la matriz X original. Después saqué su inversa la cual multipliqué a su vez por \(X^Ty\) lo cual me hizo obtener el vector de estimaciones puntuales

X<-matrix(c(corazon$biking,corazon$smoking),ncol = 2)
y<-c(corazon$heart.disease)
Transpuesta_X<-t(X)
TransporX<-Transpuesta_X%*%X
Matriz_identidad<-diag(1,nrow = 2)
InversaX<-solve(TransporX,Matriz_identidad)
Xty<-Transpuesta_X%*%y
b<-InversaX%*%Xty
b
##             [,1]
## [1,] -0.03827376
## [2,]  0.62303710

Estos datos podrían respaldar lo que se conoce: fumar puede ocasionar enfermedades del corazón (parámetro positivo de 0.62) mientras que andar en bicicleta (o hacer actividad física en general) puede ayudar a disminuir el riesgo de tener una enfermedad del corazón (parámetro -0.038)

:)