# Cargar las librerías necesarias
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2)
library(httr)
library(readr)
# 1.Cargar la base de datos
data <- read.csv("C:/Users/FREDY/Downloads/archive (4)/volcano-events.csv")
# 2.Contextualizar la base de datos
##("Esta base de datos contiene información sobre erupciones volcánicas a nivel mundial,incluyendo detalles como la magnitud, el tipo de erupción, ubicación, fecha y duración.
##"Descripción de las variables principales:
##1. Volcano: Nombre del volcán.\n")
##2. Country: País donde se encuentra el volcán.
##3. Type: Tipo de erupción (ej. Explosiva, Efusiva).
##4. VEI: Índice de Explosividad Volcánica (Escala de 0 a 8).
##5. StartDate: Fecha de inicio de la erupción.
##6. EndDate: Fecha de finalización de la erupción.
##7. Fatalities: Número de fatalidades.
##8. Latitude/Longitude: Coordenadas geográficas.
##9. Elevation: Altura del volcán en metros.
##10. Magnitude: Magnitud de la erupción
# 3. Analizar las Características de la Base de Datos
#Dimensiones de la base de datos
##("Dimensiones de la base de datos (filas x columnas)
# Nombres de las variables
##("Nombres de las variables:\n", colnames(data), "\n")
# Estructura de las variables
str(data)
## 'data.frame': 877 obs. of 32 variables:
## $ Year : int NA -4360 -4350 -4050 -4000 -3580 -3550 -2420 -2040 -1900 ...
## $ Month : int NA NA NA NA NA NA NA NA NA NA ...
## $ Day : int NA NA NA NA NA NA NA NA NA NA ...
## $ Name : chr "" "Macauley" "Kikai" "Masaya" ...
## $ Location : chr "" "Kermadec Is" "Ryukyu Is" "Nicaragua" ...
## $ Country : chr "" "New Zealand" "Japan" "Nicaragua" ...
## $ Latitude : num NA -30.21 30.79 11.98 -5.58 ...
## $ Longitude : num NA -178.5 130.3 -86.2 150.5 ...
## $ Elevation..m. : int NA 238 704 594 724 311 1486 1281 1280 1032 ...
## $ Type : chr "" "Caldera" "Caldera" "Caldera" ...
## $ VEI : int NA 6 7 6 6 6 6 5 6 6 ...
## $ Agent : chr "" "" "P" "" ...
## $ Deaths : int NA NA NA NA NA NA NA NA NA NA ...
## $ Death.Description : int NA NA 3 NA 1 NA NA NA NA NA ...
## $ Missing : int NA NA NA NA NA NA NA NA NA NA ...
## $ Missing.Description : int NA NA NA NA NA NA NA NA NA NA ...
## $ Injuries : int NA NA NA NA NA NA NA NA NA NA ...
## $ Injuries.Description : int NA NA NA NA NA NA NA NA NA NA ...
## $ Damage...Mil. : num NA NA NA NA NA NA NA NA NA NA ...
## $ Damage.Description : int NA NA 3 NA 1 NA NA NA NA NA ...
## $ Houses.Destroyed : int NA NA NA NA NA NA NA NA NA NA ...
## $ Houses.Destroyed.Description : int NA NA 3 NA NA NA NA NA NA NA ...
## $ Total.Deaths : int NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Death.Description : int NA NA 3 NA 1 NA NA NA NA NA ...
## $ Total.Missing : int NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Missing.Description : int NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Injuries : int NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Injuries.Description : int NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Damage...Mil. : num NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Damage.Description : int NA NA 3 NA 1 NA NA NA NA NA ...
## $ Total.Houses.Destroyed : int NA NA NA NA NA NA NA NA NA NA ...
## $ Total.Houses.Destroyed.Description: int NA NA 3 NA NA NA NA NA NA NA ...
# 4.Analisis de variables numericas y categoricas
# Variables numéricas
num_vars <- sapply(data, is.numeric)
cat("Variables numéricas:\n", names(data)[num_vars], "\n")
## Variables numéricas:
## Year Month Day Latitude Longitude Elevation..m. VEI Deaths Death.Description Missing Missing.Description Injuries Injuries.Description Damage...Mil. Damage.Description Houses.Destroyed Houses.Destroyed.Description Total.Deaths Total.Death.Description Total.Missing Total.Missing.Description Total.Injuries Total.Injuries.Description Total.Damage...Mil. Total.Damage.Description Total.Houses.Destroyed Total.Houses.Destroyed.Description
summary(data[, num_vars])
## Year Month Day Latitude
## Min. :-4360 Min. : 1.000 Min. : 1.00 Min. :-63.001
## 1st Qu.: 1799 1st Qu.: 4.000 1st Qu.: 7.00 1st Qu.: -6.729
## Median : 1922 Median : 7.000 Median :15.00 Median : 13.257
## Mean : 1730 Mean : 6.443 Mean :15.27 Mean : 15.084
## 3rd Qu.: 1986 3rd Qu.: 9.000 3rd Qu.:23.00 3rd Qu.: 36.406
## Max. : 2023 Max. :12.000 Max. :31.00 Max. : 65.715
## NA's :1 NA's :132 NA's :192 NA's :1
## Longitude Elevation..m. VEI Deaths
## Min. :-178.47 Min. :-642 Min. :0.000 Min. : 1.00
## 1st Qu.: -19.67 1st Qu.:1117 1st Qu.:2.000 1st Qu.: 1.00
## Median : 110.45 Median :1718 Median :3.000 Median : 5.00
## Mean : 52.82 Mean :1956 Mean :2.864 Mean : 441.68
## 3rd Qu.: 130.86 3rd Qu.:2640 3rd Qu.:4.000 3rd Qu.: 48.25
## Max. : 177.18 Max. :6377 Max. :7.000 Max. :30000.00
## NA's :1 NA's :1 NA's :176 NA's :437
## Death.Description Missing Missing.Description Injuries
## Min. :1.000 Min. : 0.0 Min. :1.000 Min. : 1.0
## 1st Qu.:1.000 1st Qu.: 2.5 1st Qu.:1.000 1st Qu.: 3.0
## Median :1.000 Median : 44.0 Median :2.000 Median : 10.0
## Mean :1.558 Mean : 340.1 Mean :2.077 Mean : 173.3
## 3rd Qu.:2.000 3rd Qu.: 174.5 3rd Qu.:3.000 3rd Qu.: 31.5
## Max. :4.000 Max. :1755.0 Max. :4.000 Max. :10000.0
## NA's :309 NA's :866 NA's :864 NA's :778
## Injuries.Description Damage...Mil. Damage.Description Houses.Destroyed
## Min. :1.000 Min. : 0.04 Min. :1.000 Min. : 1.0
## 1st Qu.:1.000 1st Qu.: 3.30 1st Qu.:1.000 1st Qu.: 20.5
## Median :1.000 Median : 15.00 Median :1.000 Median : 85.5
## Mean :1.431 Mean : 221.76 Mean :1.653 Mean : 956.8
## 3rd Qu.:1.500 3rd Qu.: 120.00 3rd Qu.:2.000 3rd Qu.: 737.0
## Max. :4.000 Max. :2000.00 Max. :4.000 Max. :9000.0
## NA's :754 NA's :856 NA's :632 NA's :833
## Houses.Destroyed.Description Total.Deaths Total.Death.Description
## Min. :1.000 Min. : 1.0 Min. :1.000
## 1st Qu.:1.000 1st Qu.: 2.0 1st Qu.:1.000
## Median :2.000 Median : 6.0 Median :1.000
## Mean :2.147 Mean : 722.8 Mean :1.613
## 3rd Qu.:3.000 3rd Qu.: 60.0 3rd Qu.:2.000
## Max. :4.000 Max. :60000.0 Max. :4.000
## NA's :755 NA's :415 NA's :283
## Total.Missing Total.Missing.Description Total.Injuries
## Min. : 0.0 Min. :1.0 Min. : 1.00
## 1st Qu.: 6.0 1st Qu.:1.0 1st Qu.: 3.00
## Median : 44.0 Median :1.5 Median : 11.00
## Mean : 340.9 Mean :2.0 Mean : 488.04
## 3rd Qu.: 174.5 3rd Qu.:3.0 3rd Qu.: 42.75
## Max. :1755.0 Max. :4.0 Max. :31943.00
## NA's :866 NA's :863 NA's :775
## Total.Injuries.Description Total.Damage...Mil. Total.Damage.Description
## Min. :1.0 Min. : 1.000 Min. :1.000
## 1st Qu.:1.0 1st Qu.: 3.673 1st Qu.:1.000
## Median :1.0 Median : 19.500 Median :1.000
## Mean :1.5 Mean : 198.078 Mean :1.785
## 3rd Qu.:2.0 3rd Qu.: 118.750 3rd Qu.:3.000
## Max. :4.0 Max. :2000.000 Max. :4.000
## NA's :745 NA's :851 NA's :612
## Total.Houses.Destroyed Total.Houses.Destroyed.Description
## Min. : 1 Min. :1.000
## 1st Qu.: 24 1st Qu.:1.000
## Median : 164 Median :2.000
## Mean :1008 Mean :2.208
## 3rd Qu.: 800 3rd Qu.:3.000
## Max. :9000 Max. :4.000
## NA's :824 NA's :728
# Variables categóricas
cat_vars <- sapply(data, is.factor)
cat("Variables categóricas:\n", names(data)[cat_vars], "\n")
## Variables categóricas:
##
summary(data[, cat_vars])
## < table of extent 0 x 0 >
# 5. Verificar los nombres de las columnas
colnames(data)
## [1] "Year" "Month"
## [3] "Day" "Name"
## [5] "Location" "Country"
## [7] "Latitude" "Longitude"
## [9] "Elevation..m." "Type"
## [11] "VEI" "Agent"
## [13] "Deaths" "Death.Description"
## [15] "Missing" "Missing.Description"
## [17] "Injuries" "Injuries.Description"
## [19] "Damage...Mil." "Damage.Description"
## [21] "Houses.Destroyed" "Houses.Destroyed.Description"
## [23] "Total.Deaths" "Total.Death.Description"
## [25] "Total.Missing" "Total.Missing.Description"
## [27] "Total.Injuries" "Total.Injuries.Description"
## [29] "Total.Damage...Mil." "Total.Damage.Description"
## [31] "Total.Houses.Destroyed" "Total.Houses.Destroyed.Description"
# Filtrar erupciones con un VEI mayor a 4
if ("VEI" %in% colnames(data)) {
high_vei <- filter(data, VEI > 4)
cat("Número de erupciones con VEI mayor a 4:", nrow(high_vei), "\n")
} else {
cat("La columna 'VEI' no se encuentra en el conjunto de datos.\n")
}
## Número de erupciones con VEI mayor a 4: 69
# Filtrar erupciones con fatalidades
if ("Fatalities" %in% colnames(data)) {
fatal_eruptions <- filter(data, Fatalities > 0)
cat("Número de erupciones con fatalidades:", nrow(fatal_eruptions), "\n")
} else {
cat("La columna 'Fatalities' no se encuentra en el conjunto de datos.\n")
}
## La columna 'Fatalities' no se encuentra en el conjunto de datos.
# Filtrar erupciones de tipo Explosiva
if ("Type" %in% colnames(data)) {
explosive_eruptions <- filter(data, Type == "Explosive")
cat("Número de erupciones de tipo explosiva:", nrow(explosive_eruptions), "\n")
} else {
cat("La columna 'Type' no se encuentra en el conjunto de datos.\n")
}
## Número de erupciones de tipo explosiva: 0
# Filtrar erupciones en Italia
if ("Country" %in% colnames(data)) {
italy_eruptions <- filter(data, Country == "Italy")
cat("Número de erupciones en Italia:", nrow(italy_eruptions), "\n")
} else {
cat("La columna 'Country' no se encuentra en el conjunto de datos.\n")
}
## Número de erupciones en Italia: 60
# Filtrar erupciones con magnitud disponible y mayor a 3
if ("Magnitude" %in% colnames(data)) {
high_magnitude <- filter(data, Magnitude > 3)
cat("Número de erupciones con magnitud mayor a 3:", nrow(high_magnitude), "\n")
} else {
cat("La columna 'Magnitude' no se encuentra en el conjunto de datos.\n")
}
## La columna 'Magnitude' no se encuentra en el conjunto de datos.
# 6. Usar table para explorar la frecuencia de tipos de erupciones
cat("Frecuencia de tipos de erupciones:\n")
## Frecuencia de tipos de erupciones:
print(table(data$Type))
##
## Caldera Cinder cone Complex volcano
## 1 69 2 92
## Compound volcano Crater rows Fissure vent Lava cone
## 2 2 4 2
## Lava dome Maar Mud volcano Pumice cone
## 9 2 1 1
## Pyroclastic cone Pyroclastic shield Shield volcano Stratovolcano
## 3 12 69 561
## Subglacial volcano Submarine volcano Submarine volcanoes Tuff cone
## 15 22 1 4
## Volcanic field
## 3
# Frecuencia de erupciones por país
cat("Frecuencia de erupciones por país:\n")
## Frecuencia de erupciones por país:
print(table(data$Country))
##
## Antarctica
## 1 1
## Cameroon Canada
## 3 1
## Cape Verde Chile
## 3 20
## China Colombia
## 1 11
## Comoros Congo, DRC
## 6 6
## Costa Rica Ecuador
## 7 25
## El Salvador Eritrea
## 6 2
## Ethiopia Greece
## 4 8
## Guadeloupe Guatemala
## 1 20
## Iceland Indonesia
## 54 200
## Italy Japan
## 60 145
## Martinique Mexico
## 6 13
## Montserrat Netherlands
## 6 2
## New Zealand Nicaragua
## 15 8
## North Korea Pacific Ocean
## 1 9
## Papua New Guinea Peru
## 42 4
## Philippines Portugal
## 48 6
## Reunion Russia
## 1 20
## Samoa Saudi Arabia
## 8 1
## Solomon Is. Spain
## 7 5
## St. Kitts & Nevis St. Vincent & the Grenadines
## 1 4
## Taiwan Tanzania
## 1 5
## Tonga Trinidad
## 5 1
## Turkey United States
## 1 49
## Vanuatu Vietnam
## 18 1
## Yemen
## 4
# 7. Identificar valores NA en el conjunto de datos
na_summary <- colSums(is.na(data))
cat("Resumen de valores NA por variable:\n")
## Resumen de valores NA por variable:
print(na_summary)
## Year Month
## 1 132
## Day Name
## 192 0
## Location Country
## 0 0
## Latitude Longitude
## 1 1
## Elevation..m. Type
## 1 0
## VEI Agent
## 176 0
## Deaths Death.Description
## 437 309
## Missing Missing.Description
## 866 864
## Injuries Injuries.Description
## 778 754
## Damage...Mil. Damage.Description
## 856 632
## Houses.Destroyed Houses.Destroyed.Description
## 833 755
## Total.Deaths Total.Death.Description
## 415 283
## Total.Missing Total.Missing.Description
## 866 863
## Total.Injuries Total.Injuries.Description
## 775 745
## Total.Damage...Mil. Total.Damage.Description
## 851 612
## Total.Houses.Destroyed Total.Houses.Destroyed.Description
## 824 728
# 8. Análisis de valores atípicos para la magnitud y el VEI
if ("Magnitude" %in% colnames(data)) {
boxplot(data$Magnitude, main = "Boxplot de Magnitud", ylab = "Magnitud")
}
boxplot(data$VEI, main = "Boxplot de VEI", ylab = "Índice de Explosividad Volcánica")

# 9.Análisis de valores atípicos para la magnitud y el VEI
if ("Magnitude" %in% colnames(data)) {
boxplot(data$Magnitude, main = "Boxplot de Magnitud", ylab = "Magnitud")
}
boxplot(data$VEI, main = "Boxplot de VEI", ylab = "Índice de Explosividad Volcánica")

#"Comentarios sobre los resultados obtenidos:
##1. La base de datos tiene", nrow(data), "filas y", ncol(data), "columnas.
##2. Las variables numéricas más importantes incluyen VEI y Magnitude, que muestran la intensidad de las erupciones.
##3. Existen múltiples erupciones explosivas, con una notable frecuencia en Italia.
##4. Hay valores NA en las variables como Magnitude, lo que puede afectar algunos análisis.
##5. Se observaron valores atípicos en el VEI, con algunas erupciones extremadamente explosivas.