# 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.