Paquetes

library(lubridate)
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
library(kableExtra)
library(lubridate)
library(circular)
## 
## Attaching package: 'circular'
## The following objects are masked from 'package:stats':
## 
##     sd, var
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:kableExtra':
## 
##     group_rows
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(pander)
library(ggplot2)
sis<-read.csv(file = "C:\\Users\\permi\\Desktop\\CIDE\\Primer semestre\\R\\sismos.csv")
head(sis)

EJERCICIO 1

- Utilizando la informacion correspondiente a los sismos registrados por elSistema Sismologico Nacional (SSN) en el periodo 01-01-1980 al 24-09-2021, disponible en http://www2.ssn.unam.mx:8080/catalogo/, calcular: text

- El total de sismos detectados por mes.

En este caso se usa la función as.Date para identificar el formato de la columna de la base de datos donde esta la fecha. Lubridate nos apoya para el manejo de dichas fechas y especificamente de los meses con la función month

sismosx_mes<-count(sis,Mes=month(sis$Fecha, label = TRUE))
colnames(sismosx_mes)<-c("Mes","Cantidad de sismos")
kable(sismosx_mes, caption = "Cantidad de sismos ocurridos por mes")
Cantidad de sismos ocurridos por mes
Mes Cantidad 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

- El total de sismos detectados por cada estado de la republica.

En este caso use Regex y busqué especificamente en la columnda donde se aborda la localización del sismo. Para cada estado busque su nombre como se abrevia en la base de datos, esto lo hice con la funcion grep. Posterior a ello a cada uno de los estados apliqué la función length para saber cuántas veces aparece en la base de datos.

AGUASCALIENTES<-length(grep(".*(AGS).*", sis$Referencia.de.localizacion))
BAJA_CALIFORNIA<-length(grep(".*(BC).*", sis$Referencia.de.localizacion))
BAJA_CALIFORNIA_SUR<-length(grep(".*(BCS).*", sis$Referencia.de.localizacion))
CAMPECHE<-length(grep(".*(, CAMP).*", sis$Referencia.de.localizacion))
CHIAPAS<-length(grep(".*(, CHIS).*", sis$Referencia.de.localizacion))
CHIHUAHUA<-length(grep(".*(, CHIH).*", sis$Referencia.de.localizacion))
CDMX<-length(grep(".*(, CDMX).*", sis$Referencia.de.localizacion))
COAHUILA<-length(grep(".*(, COAH).*", sis$Referencia.de.localizacion))
COLIMA<-length(grep(".*(, COL).*", sis$Referencia.de.localizacion))
DURANGO<-length(grep(".*(, DGO).*", sis$Referencia.de.localizacion))
EDO_MEX<-length(grep(".*(, MEX).*", sis$Referencia.de.localizacion))
GUANAJUATO<-length(grep(".*(, GTO).*", sis$Referencia.de.localizacion))
GUERRERO<-length(grep(".*(, GRO).*", sis$Referencia.de.localizacion))
MICHOACAN<-length(grep(".*(MICH).*", sis$Referencia.de.localizacion))
HIDALGO<-length(grep(".*(, HGO).*", sis$Referencia.de.localizacion))
JALISCO<-length(grep(".*(, JAL).*", sis$Referencia.de.localizacion))
MICHOACAN<-length(grep(".*(, MICH).*", sis$Referencia.de.localizacion))
MORELOS<-length(grep(".*(, MOR).*", sis$Referencia.de.localizacion))
NAYARIT<-length(grep(".*(, NAY).*", sis$Referencia.de.localizacion))
NUEVO_LEON<-length(grep(".*(, NL).*", sis$Referencia.de.localizacion))
OAXACA<-length(grep(".*(, OAX).*", sis$Referencia.de.localizacion))
PUEBLA<-length(grep(".*(, PUE).*", sis$Referencia.de.localizacion))
QUERETARO<-length(grep(".*(, QRO).*", sis$Referencia.de.localizacion))
QUINTANA_ROO<-length(grep(".*(, QR).*", sis$Referencia.de.localizacion))
SAN_LUIS_POTOSI<-length(grep(".*(, SLP).*", sis$Referencia.de.localizacion))
SINALOA<-length(grep(".*(, SIN).*", sis$Referencia.de.localizacion))
SONORA<-length(grep(".*(, SON).*", sis$Referencia.de.localizacion))
TABASCO<-length(grep(".*(, TAB).*", sis$Referencia.de.localizacion))
TAMAULIPAS<-length(grep(".*(, TAMS).*", sis$Referencia.de.localizacion))
TLAXCALA<-length(grep(".*(, TLAX).*", sis$Referencia.de.localizacion))
VERACRUZ<-length(grep(".*(, VER).*", sis$Referencia.de.localizacion))
YUCATAN<-length(grep(".*(, YUC).*", sis$Referencia.de.localizacion))
ZACATECAS<-length(grep(".*(, ZAC).*", sis$Referencia.de.localizacion))

Estados<-c("Aguascalientes","Baja California","Baja California Sur","Campeche","Chiapas","Chihuahua","CDMX","Coahuila","Colima","Durango","Guanajuato","Guerrero","Hidalgo","Jalisco","Edo de Mexico","Michoacan","Morelos","Nayarit","Nuevo Leon","Oaxaca","Puebla","Queretaro","Quintana Roo","San Luis Potosi","Sinaloa","Sonora","Tabasco","Tamaulipas","Tlaxcala","Veracruz","Yucatan","Zacatecas")
Total_de_sismos2<-c(42,11016,2846,62,42913,400,285,109,5288,61,583,82,39249,13979,548,6832,13979,233,263,420,94592,1130,15,101,189,920,1309,530,115,120,5159,228)
Sismos_por_estado<-data.frame(Estados,Total_de_sismos2)
pandoc.table(Sismos_por_estado)
## 
## ----------------------------------------
##        Estados         Total_de_sismos2 
## --------------------- ------------------
##    Aguascalientes             42        
## 
##    Baja California          11016       
## 
##  Baja California Sur         2846       
## 
##       Campeche                62        
## 
##        Chiapas              42913       
## 
##       Chihuahua              400        
## 
##         CDMX                 285        
## 
##       Coahuila               109        
## 
##        Colima                5288       
## 
##        Durango                61        
## 
##      Guanajuato              583        
## 
##       Guerrero                82        
## 
##        Hidalgo              39249       
## 
##        Jalisco              13979       
## 
##     Edo de Mexico            548        
## 
##       Michoacan              6832       
## 
##        Morelos              13979       
## 
##        Nayarit               233        
## 
##      Nuevo Leon              263        
## 
##        Oaxaca                420        
## 
##        Puebla               94592       
## 
##       Queretaro              1130       
## 
##     Quintana Roo              15        
## 
##    San Luis Potosi           101        
## 
##        Sinaloa               189        
## 
##        Sonora                920        
## 
##        Tabasco               1309       
## 
##      Tamaulipas              530        
## 
##       Tlaxcala               115        
## 
##       Veracruz               120        
## 
##        Yucatan               5159       
## 
##       Zacatecas              228        
## ----------------------------------------

- Grafico circular de frecuencia de los sismos de acuerdo a la hora del dia (0-23 o 1-24) cuando acontencio.

sis$Hora<-strptime(sis$Hora, format = "%H:%M:%S")
sis$conteo<-1
sis$hora_delsis<-hour(sis$Hora)
hora<-aggregate(conteo~hora_delsis,
                sis,
                sum)

hora %>%
  ggplot(
    aes(
      x=hora_delsis,
      y=conteo
    )
  ) +
  theme_bw() +
  theme(text = element_text(size=15),
        plot.title = element_text(hjust = 0.5),
  )+
  geom_bar(stat = "identity",
           color="red",
           fill="cornflowerblue",
           position = position_dodge()
           )+
  coord_polar()+
  scale_x_continuous(breaks = c(0:23),
                   labels = as.character(c(0:23))) +
  labs(title = "Sismos por hora",
       subtitle = "Sismos registrados",
       x = "Hora de ocurrencia",
       y = "Frecuencia",
       caption = "CIDE es lo mejor")

- Considerando solamente aquellos sismos cuya magnitud fue mayor o igual a 5 ¿Cuales son los 5 estados con mayor cantidad de sismos?

sis_5<-sis[sis$Magnitud >= "5",]
sis_mayor_cinco<-sis_5[sis_5$Magnitud != "no calculable",]
AGUASCALIENTES<-length(grep(".*(AGS).*", sis_mayor_cinco$Referencia.de.localizacion))
BAJA_CALIFORNIA<-length(grep(".*(BC).*", sis_mayor_cinco$Referencia.de.localizacion))
BAJA_CALIFORNIA_SUR<-length(grep(".*(BCS).*", sis_mayor_cinco$Referencia.de.localizacion))
CAMPECHE<-length(grep(".*(, CAMP).*", sis_mayor_cinco$Referencia.de.localizacion))
CHIAPAS<-length(grep(".*(, CHIS).*", sis_mayor_cinco$Referencia.de.localizacion))
CHIHUAHUA<-length(grep(".*(, CHIH).*", sis_mayor_cinco$Referencia.de.localizacion))
CDMX<-length(grep(".*(, CDMX).*", sis_mayor_cinco$Referencia.de.localizacion))
COAHUILA<-length(grep(".*(, COAH).*", sis_mayor_cinco$Referencia.de.localizacion))
COLIMA<-length(grep(".*(, COL).*", sis_mayor_cinco$Referencia.de.localizacion))
DURANGO<-length(grep(".*(, DGO).*", sis_mayor_cinco$Referencia.de.localizacion))
EDO_MEX<-length(grep(".*(, MEX).*", sis_mayor_cinco$Referencia.de.localizacion))
GUANAJUATO<-length(grep(".*(, GTO).*", sis_mayor_cinco$Referencia.de.localizacion))
GUERRERO<-length(grep(".*(, GRO).*", sis_mayor_cinco$Referencia.de.localizacion))
MICHOACAN<-length(grep(".*(MICH).*", sis_mayor_cinco$Referencia.de.localizacion))
HIDALGO<-length(grep(".*(, HGO).*", sis_mayor_cinco$Referencia.de.localizacion))
JALISCO<-length(grep(".*(, JAL).*", sis_mayor_cinco$Referencia.de.localizacion))
MICHOACAN<-length(grep(".*(, MICH).*", sis_mayor_cinco$Referencia.de.localizacion))
MORELOS<-length(grep(".*(, MOR).*", sis_mayor_cinco$Referencia.de.localizacion))
NAYARIT<-length(grep(".*(, NAY).*", sis_mayor_cinco$Referencia.de.localizacion))
NUEVO_LEON<-length(grep(".*(, NL).*", sis_mayor_cinco$Referencia.de.localizacion))
OAXACA<-length(grep(".*(, OAX).*", sis_mayor_cinco$Referencia.de.localizacion))
PUEBLA<-length(grep(".*(, PUE).*", sis_mayor_cinco$Referencia.de.localizacion))
QUERETARO<-length(grep(".*(, QRO).*", sis_mayor_cinco$Referencia.de.localizacion))
QUINTANA_ROO<-length(grep(".*(, QR).*", sis_mayor_cinco$Referencia.de.localizacion))
SAN_LUIS_POTOSI<-length(grep(".*(, SLP).*", sis_mayor_cinco$Referencia.de.localizacion))
SINALOA<-length(grep(".*(, SIN).*", sis_mayor_cinco$Referencia.de.localizacion))
SONORA<-length(grep(".*(, SON).*", sis_mayor_cinco$Referencia.de.localizacion))
TABASCO<-length(grep(".*(, TAB).*", sis_mayor_cinco$Referencia.de.localizacion))
TAMAULIPAS<-length(grep(".*(, TAMS).*", sis_mayor_cinco$Referencia.de.localizacion))
TLAXCALA<-length(grep(".*(, TLAX).*", sis_mayor_cinco$Referencia.de.localizacion))
VERACRUZ<-length(grep(".*(, VER).*", sis_mayor_cinco$Referencia.de.localizacion))
YUCATAN<-length(grep(".*(, YUC).*", sis_mayor_cinco$Referencia.de.localizacion))
ZACATECAS<-length(grep(".*(, ZAC).*", sis_mayor_cinco$Referencia.de.localizacion))

Los cinco estados con mayor cantidad de sismos con magnitud mayor o igual a 5 son:

Estados<-c("Chiapas","Oaxaca","Guerrero","Baja California Sur","Jalisco")
Total_de_sismos3<-c(499,272,185,115,105)
Top5<-data.frame(Estados,Total_de_sismos3)
pandoc.table(Top5)
## 
## ----------------------------------------
##        Estados         Total_de_sismos3 
## --------------------- ------------------
##        Chiapas               499        
## 
##        Oaxaca                272        
## 
##       Guerrero               185        
## 
##  Baja California Sur         115        
## 
##        Jalisco               105        
## ----------------------------------------

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

library(ggplot2)
chiapas<-read.csv(file = "C:\\Users\\permi\\Desktop\\CIDE\\Primer semestre\\R\\chiapas.csv")
chiapas2<-data.frame(chiapas)
chiapas3<-subset(chiapas2,Magnitud!="no calculabe")
chiapas4<-as.numeric(chiapas3$Magnitud)
## Warning: NAs introducidos por coerción
qplot(chiapas4, geom = "histogram", main="Magnitud de sismos en Chiapas", xlab ="Magnitud", ylab ="Cantidad", col=I("white"))
## `stat_bin()` using `bins = 30`. Pick better value with `binwidth`.
## Warning: Removed 5202 rows containing non-finite values (stat_bin).

EJERCICIO 2

- El metodo mas comun para la determinacion de la aproximacion estadisticamente optima con un conjunto de parametros dado un grupo de datos, es el metodo conocido como Minimos Cuadrados (por sus siglas en ingles, LS), y fue propuesto hace aproximadamente dos siglos por Carl Friedrich Gauss. Asi, en el caso mas simple de la regresion lineal (y =b0 +b1X), se busca minimizar la suma de cuadrados en el vector de residuales e. Esta funcion objetivo de minimos cuadrados puede ser escrita en su forma compacta de la siguiente manera: text

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

Calculando las derivadas parciales respecto a los parametros b, e igualando dicha derivada a 0, se obtiene el vector de estimaciones puntuales de los parametros \(\beta\) (o b):

  • \(b=(X^TX)^{-1}X^Ty\)

Utilizando los datos disponibles en Moodle llamados corazon, obtener el vector de estimaciones puntuales para los parametros b cuando X = matriz de variables biking y smoking (498 x 2) y, y = hear.disease (498 x 1).

  1. Procedemos a cargar los datos y a crear una matris X con los datos de biking y smoking.
cora<-read.csv(file = "C:\\Users\\permi\\Desktop\\CIDE\\Primer semestre\\R\\corazon.csv")
x<-matrix(c(cora$biking,cora$smoking),ncol=2)
head(x)
##           [,1]      [,2]
## [1,] 30.801246 10.896608
## [2,] 65.129215  2.219563
## [3,]  1.959665 17.588331
## [4,] 44.800196  2.802559
## [5,] 69.428454 15.974505
## [6,] 54.403626 29.333176
  1. Procedenis a crear el vector Y con heart.desease
y<-c(cora$heart.disease)
  1. Calculamos la transpuesta de X
x_t<-t(x)
  1. Esa misma matriz transpuesta por la matriz X original.
xtrns_x<-x_t%*%x
  1. A dicho producto se le calcula la inversa, con una matriz identidad
Ide<-diag(1,nrow = 2)
xtrans_xide<-solve(xtrns_x,Ide)
  1. Posteriormente se multiplica la transpuesta de X por el vector
xt_y<-x_t%*%cora$heart.disease
  1. Por ultimo se calcula el vector de parametros b:
b<-xtrans_xide%*%xt_y
b
##             [,1]
## [1,] -0.03827376
## [2,]  0.62303710

Por lo que nuestra ecuación de regresion lineal es:

\[y=-0.03827376X_{1}+0.6230371X_{2}\]

\(X_{1}=biking\) \(X_{2}=smoking\)