- EJERCICIO 1
- 1.1) Total de sísmos detectados por mes.
- 1.2) El total de sismos detectados por cada estado de la república.
- 1.3) Gráfico circular de frecuencia de los sísmos de acuerdo a la hora del día (0-23 ó 1-24) cuando aconteció
- 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?
- 1.5) Realizar un histograma de la magnitud de los sismos detectados en el estado de Chiapas.
- EJERCICIO 2
EJERCICIO 1
Utilizamos la paquetería readr para llamar a nuestra base de datos y posteriormente se convertirla a un data.frame.
# install.packages("readr")
library(readr)
SSNMX <- read_csv("C:\\Users\\ARRA\\Downloads\\SSNMX_p1.csv")
datos <- as.data.frame(SSNMX)1.1) Total de sísmos detectados por mes.
Primero convertimos los datos que aparecen en la columna Fecha, de clase character a clase date, para que de esta forma sea más sencillo extraer los meses.
datos$Fecha <- as.Date(datos$Fecha)Con ayuda del comando ‘%m’ seleccionamos los meses, luego, con ayuda de la función table contamos la frecuencia con la que aparecen cada uno.
meses <- (format(datos$Fecha,'%m'))
Sismos <- as.data.frame(table(meses))
Sismos## meses Freq
## 1 01 21195
## 2 02 20644
## 3 03 19155
## 4 04 17959
## 5 05 17807
## 6 06 18129
## 7 07 17633
## 8 08 17827
## 9 09 21497
## 10 10 18254
## 11 11 18094
## 12 12 18570
1.2) El total de sismos detectados por cada estado de la república.
Observando la columna de “referencia de localización”, las abreviaturas de los estados aparecen al final y separados por una coma, por lo que proseguimos a separar esta cadena de texto en dos vectores con ayuda de la función str_split_fixed de la librería stringr. Proseguimos con la función table para que nos cuantifique la frecuencia con la que se detectaron sismos en cada estado, referenciando la columna 2 de la matriz “edos”. Presentando la tabla de frecuencia en un marco de datos.
library(kableExtra)
library(stringr,pander)
edos <- str_split_fixed(datos$`Referencia de localizacion`,",", 2)
Sismos_edo <- table(edos[ ,2])
Sismos_edo##
## AGS BC BCS CAMP CDMX CHIH CHIS COAH COL DGO GRO GTO HGO
## 42 8170 2846 62 285 400 42913 109 5288 61 39249 82 548
## JAL MEX MICH MOR N NAY NL OAX PUE QR QRO SIN SLP
## 6832 583 13979 233 3 263 420 94592 1130 86 15 920 189
## SON TAB TAMS TLAX VER YUC ZAC
## 1309 530 115 120 5159 3 228
kable(Sismos_edo)| Var1 | Freq |
|---|---|
| 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 |
| N | 3 |
| NAY | 263 |
| NL | 420 |
| 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 |
1.3) Gráfico circular de frecuencia de los sísmos de acuerdo a la hora del día (0-23 ó 1-24) cuando aconteció
Cargamos la librería ggplot para poder hacer uso de su función gráficadora coord_polar. Separamos los datos de la columna “Hora” en tres secciones, horas, minutos y segundos.
Creamos el data.frame “df_Horas” el cual almacena la frecuencia con la que se repitieron las horas en un formato de 0-23, esto nos indica la cantidad de sismos que se detectaron en dichos bloques de tiempo. La gráfica nos proyecta los lapsos en los que hubo mayor movimiento sísmico.
library(ggplot2)
h <- str_split_fixed(datos$Hora,":", 3)
df_Horas <-data.frame(table(h[,1]))
ggplot(df_Horas, aes(x = Var1, y= Freq, fill = Var1)) +
geom_bar(aes( y = Freq),
color = "blue", size = 0.1, stat = "identity") +
coord_polar(theta = "x") +
labs(x = "Horas formato 24",
y = "Frecuencia de sismos", fill = "Horas")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?
En la primer línea añadimos al data.frame “datos”, una columna con las abreviaciones de los estados. La “variableM5” se creó seleccionando los sismos con magnitud mayor o igual a 5 y obtenemos las abreviaciones de los estados en los que sucedieron. El marco de datos “sismos5” contiene los valores de frecuencia con los que se presentaron cada entidad, esto con la ayuda de la función table
Posteriormente ordenamos dicho marco, de forma decreciente tomando en cuenta la cantidad de sismos detectados.
Ya que tenemos el data.frame ordenado, pedimos imprimir los 5 valores que se encuentran al inicio, siendo estos los estados con más cantidad de sismos con magnitud igual o superior a 5.
datos<-data.frame(datos,edos[ ,2])
sismosM5 <- datos$edos...2.[datos$Magnitud >= 5]
sismos5 <- as.data.frame(table(sismosM5))
sismos5_Ordenados <- sismos5[order(sismos5$Freq, decreasing = TRUE), ]
print(head(sismos5_Ordenados, 5))## sismosM5 Freq
## 6 CHIS 5701
## 18 OAX 3848
## 9 GRO 2178
## 28 VER 907
## 14 MICH 738
1.5) Realizar un histograma de la magnitud de los sismos detectados en el estado de Chiapas.
Iniciamos filtrando los estados que tengan como identificador " CHIS", el cual indica ser el estado de Chiapas y tomamos las respectivas magnitudes de sus sismos, seguido de una cuenta de la frecuencia de la intensidad de los mismos. Todo esto viéndose reflejado en la variable “b”.
Con ayuda de plot graficamos estos datos.
b <- table(datos$Magnitud[datos$edos...2. == " CHIS"])
plot(b,main="Sismos en Chiapas",col.main ="deepskyblue4", col.lab="deepskyblue4",
lwd = 5, xlab = "Magnitud",col.axis= "blue",
ylab="Frecuencia", col = "cyan4")
text(60, 5500, "no calculable", col = "blue")EJERCICIO 2
Utilizamos la librería readr para poder llamar a nuestra base de datos, la cual nombramos corazón
library(readr)
corazon <- read_csv("C:/Users/ARRA/Desktop/basededatos/corazon (1).csv")Creamos la matriz X & y, las visualizamos con ayuda de la paquetería pander y la función pandoc.table
library(pander)
X <- cbind(corazon$biking, corazon$smoking)
y <- matrix(corazon$heart.disease)Calculamos la matriz transpuesta de X
Xtran <- t(X)Si separamos la función b en dos partes, tales que la primera consista en la inversa de la multiplicación de la matriz transpuesta por la original y la segunda sea la matriz transpuesta por y, las operaciones son las siguientes:
p1 <- solve(Xtran%*%X)
pandoc.table(p1,style = 'grid')##
##
## +------------+------------+
## | 2.61e-06 | -4.984e-06 |
## +------------+------------+
## | -4.984e-06 | 1.606e-05 |
## +------------+------------+
p2 <- Xtran%*%y
pandoc.table(p2,style = 'grid', caption = "Multiplicación de matríz transpuesta con y",
digits = 2,big.mark = ',')##
##
## +---------+
## | 145,811 |
## +---------+
## | 84,031 |
## +---------+
##
## Table: Multiplicación de matríz transpuesta con y
\[\mathbf{X} = \left[\begin{array} {rr} 2.61e-06 & -4.984e-06 \\ -4.984e-06 & 1.606e-05 \end{array}\right] \]
Finalmente podemos obtener el valor de b multiplicando ambas partes:
b <- p1 %*% p2
pandoc.table(b)##
## ----------
## -0.03827
##
## 0.623
## ----------