Introducción

El set de datos para realizar el análisis reproducible correspondiente a la PEC3 de la asignatura de Software para el análisis de datos , es un set de datos sobre eventos climáticos y su impacto económico en las propiedades y las cosechas así como su impacto en la población humana a nivel de víctimas.

El set de datos está proporcionado por la agencia climática U.S National Oceanic and Atmospheric Administration’s(NOAA) y comprende todos los eventos climáticos ocurridos en Estados Unidos desde 1950 hasta noviembre de 2011

El set de datos se puede descargar del siguiente enlace: [StormData](https://d396qusza40orc.cloudfront.net/repdata%2Fdata%2FStormData.csv.bz2)

En el siguiente enlace encontramos toda la documentación que acompaña al dataset propocionada por la propia NOAA [StormData FAQ](https://www.ncdc.noaa.gov/stormevents/)

Hemos escogido estos datos para salirnos del ámbito biológico y nos pareció de los set de datos más interesantes que estuvimos mirando. Creemos que con los eventos climáticos y en concreto este dataset podemos llegar a desarrollar en este trabajo todos los contenidos vistos en la asignatura así como ampliarlos y explorar sobre todo como tratar y limpiar un set de datos para poder realizar un buen análisis, ya que los datos proporcionados por NOAA tienen muchos errores de codificación. Como último decir que con este set de datos además nos permite explorar a fondo un tema que creemos bastante importante como es la visualización de los datos.

Por motivos de legibilidad se ha decidido no mostrar el código para crear los gráficos, dicho código se puede consultar en el archivo .rmd adjunto.

Importación de Datos

Vamos a importar los datos que previamente hemos descargado del enlace indicado, y por cuestiones de legibilidad y consistencia le hemos cambiado el nombre original por el de stormdata. Los datos vienen en un formato csv(comma separated value)

#Importamos el dataset 
data <- read.csv("D:/Descargas/stormdata/stormdata")

Una vez cargados los datos vamos a explorar sus dimensiones así como el contenido del mismo.

#Dimensiones del set de datos
dim(data)
[1] 902297     37
colnames(data)
 [1] "STATE__"    "BGN_DATE"   "BGN_TIME"   "TIME_ZONE"  "COUNTY"    
 [6] "COUNTYNAME" "STATE"      "EVTYPE"     "BGN_RANGE"  "BGN_AZI"   
[11] "BGN_LOCATI" "END_DATE"   "END_TIME"   "COUNTY_END" "COUNTYENDN"
[16] "END_RANGE"  "END_AZI"    "END_LOCATI" "LENGTH"     "WIDTH"     
[21] "F"          "MAG"        "FATALITIES" "INJURIES"   "PROPDMG"   
[26] "PROPDMGEXP" "CROPDMG"    "CROPDMGEXP" "WFO"        "STATEOFFIC"
[31] "ZONENAMES"  "LATITUDE"   "LONGITUDE"  "LATITUDE_E" "LONGITUDE_"
[36] "REMARKS"    "REFNUM"    

Nuestro set de datos esta compuesto por 37 variables y 902297 entradas y explorando los nombres de las variables vemos que tenemos tipos de eventos climáticos, diferentes variables con las fechas de inicio, final etc, de los eventos climáticos. Las variables que nos indican el daño a la población y a los bienes materiales y variables que contienen coordenadas así como variables que contienen listas con todos los estados y condados de Estados Unidos

Una vez vista las dimensiones y las variables vamos a proceder a explorar los atributos de ls variables

#Vamos a observar los atributos de los  objetos
str(data)
'data.frame':   902297 obs. of  37 variables:
 $ STATE__   : num  1 1 1 1 1 1 1 1 1 1 ...
 $ BGN_DATE  : Factor w/ 16335 levels "1/1/1966 0:00:00",..: 6523 6523 4242 11116 2224 2224 2260 383 3980 3980 ...
 $ BGN_TIME  : Factor w/ 3608 levels "00:00:00 AM",..: 272 287 2705 1683 2584 3186 242 1683 3186 3186 ...
 $ TIME_ZONE : Factor w/ 22 levels "ADT","AKS","AST",..: 7 7 7 7 7 7 7 7 7 7 ...
 $ COUNTY    : num  97 3 57 89 43 77 9 123 125 57 ...
 $ COUNTYNAME: Factor w/ 29601 levels "","5NM E OF MACKINAC BRIDGE TO PRESQUE ISLE LT MI",..: 13513 1873 4598 10592 4372 10094 1973 23873 24418 4598 ...
 $ STATE     : Factor w/ 72 levels "AK","AL","AM",..: 2 2 2 2 2 2 2 2 2 2 ...
 $ EVTYPE    : Factor w/ 985 levels "   HIGH SURF ADVISORY",..: 834 834 834 834 834 834 834 834 834 834 ...
 $ BGN_RANGE : num  0 0 0 0 0 0 0 0 0 0 ...
 $ BGN_AZI   : Factor w/ 35 levels "","  N"," NW",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ BGN_LOCATI: Factor w/ 54429 levels "","- 1 N Albion",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ END_DATE  : Factor w/ 6663 levels "","1/1/1993 0:00:00",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ END_TIME  : Factor w/ 3647 levels ""," 0900CST",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ COUNTY_END: num  0 0 0 0 0 0 0 0 0 0 ...
 $ COUNTYENDN: logi  NA NA NA NA NA NA ...
 $ END_RANGE : num  0 0 0 0 0 0 0 0 0 0 ...
 $ END_AZI   : Factor w/ 24 levels "","E","ENE","ESE",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ END_LOCATI: Factor w/ 34506 levels "","- .5 NNW",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ LENGTH    : num  14 2 0.1 0 0 1.5 1.5 0 3.3 2.3 ...
 $ WIDTH     : num  100 150 123 100 150 177 33 33 100 100 ...
 $ F         : int  3 2 2 2 2 2 2 1 3 3 ...
 $ MAG       : num  0 0 0 0 0 0 0 0 0 0 ...
 $ FATALITIES: num  0 0 0 0 0 0 0 0 1 0 ...
 $ INJURIES  : num  15 0 2 2 2 6 1 0 14 0 ...
 $ PROPDMG   : num  25 2.5 25 2.5 2.5 2.5 2.5 2.5 25 25 ...
 $ PROPDMGEXP: Factor w/ 19 levels "","-","?","+",..: 17 17 17 17 17 17 17 17 17 17 ...
 $ CROPDMG   : num  0 0 0 0 0 0 0 0 0 0 ...
 $ CROPDMGEXP: Factor w/ 9 levels "","?","0","2",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ WFO       : Factor w/ 542 levels ""," CI","$AC",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ STATEOFFIC: Factor w/ 250 levels "","ALABAMA, Central",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ ZONENAMES : Factor w/ 25112 levels "","                                                                                                               "| __truncated__,..: 1 1 1 1 1 1 1 1 1 1 ...
 $ LATITUDE  : num  3040 3042 3340 3458 3412 ...
 $ LONGITUDE : num  8812 8755 8742 8626 8642 ...
 $ LATITUDE_E: num  3051 0 0 0 0 ...
 $ LONGITUDE_: num  8806 0 0 0 0 ...
 $ REMARKS   : Factor w/ 436774 levels "","-2 at Deer Park\n",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ REFNUM    : num  1 2 3 4 5 6 7 8 9 10 ...

Tenemos una gran diversidad a cuanto tipos de variables , aunque las variables de tipo factor son las que predominan. Tenemos variables numéricas tanto continuas como discretas

Preguntas Objetivo

Antes de realizar las preguntas y el análisis en profundidad vamos a realizar un procesamiento del set de datos para limpiarlos y dejarlos lo más legibles posibles. También se va a proceder a un filtrado de variables ya que no vamos a usar todas para realizar el análisis

Variables Seleccionadas para realizar el análisis

  • BGN_DATE - Fecha del inicio del evento climático
  • STATE - Localización
  • EVTYPE - Tipo de evento
  • FATALITIES - Muertes por evento
  • INJURIES - Heridos por evento
  • PROPDMG - Daño producido a los edificios por evento
  • PROPDMGEXP - Exponente que indica la unidad de PROPDMG
  • CROPDMG - Daño a los cultivos por evento evento
  • CROPDMGEXP - Exponente que indica la unidad de CROPDMG

Segun nos explica este documento de la web de NOAA, hasta 1955 solo se resgistraban los tornados y a partir de ahí hasta 1996 solo se contaban Tornado, Thunderstorm Wind(vientos provocados por tormentas) y hail(granizo), por lo que que cremos que realizar el análisis a partir de 1996 es lo recomendado para tener la mayor cantidad de datos fiables posibles.

Exploramos la variable BGN_DATE(fecha de inicio del evento climático) para extraer el año en que ocurrió

#Vamos a extrar el año de BGN_DATE para filtrar por ese valor, para hacerlo
#vamos a observar la variable BGN_DATE
str(data$BGN_DATE)
 Factor w/ 16335 levels "1/1/1966 0:00:00",..: 6523 6523 4242 11116 2224 2224 2260 383 3980 3980 ...

La variable BGN_DATE es una variable del tipo factor, y para poder extrar el año de cada evento necesitamos transformarla en una variable del tipo date

#Creamos una nueva variable DATE  para poder extraer los años
data$DATE <- mdy_hms(as.character(data$BGN_DATE))

#Ahora creamos la variable year con los años
data$YEAR = as.numeric(format(data$DATE, "%Y"))

#ahora ya podemos filtrar los datos por año para limpiar el dataset
data = data[data$YEAR >=1996,]

El siguiente paso es filtrar por tipo de evento, ya que la variable EVTYPE consta de más de 900 niveles correspondientes a diferentes eventos.

Vamos a proceder al filtrado de eventos a partir de la lista de eventos permitidos por NOAA. ***documentanción de NOAA, sección 2.2.1

#primero pasamos todos los eventos a mayusculas y factorizamos para eliminar los que 
#esten vacios
levels(data$EVTYPE) <- toupper(levels(data$EVTYPE))
data$EVTYPE <- factor(data$EVTYPE)

#procedemos al filtrado con la función filter de los eventos
data <- filter(data, data$EVTYPE == "ASTRONOMICAL LOW TIDE" | data$EVTYPE=="AVALANCHE" | data$EVTYPE=="BLIZZARD" | data$EVTYPE=="COASTAL FLOOD" | data$EVTYPE=="COLD/WIND CHILL" | data$EVTYPE=="DEBRIS FLOW" | data$EVTYPE == "DENSE FOG" | data$EVTYPE== "DENSE SMOKE" | data$EVTYPE== "DROUGHT" | data$EVTYPE == "DUST DEVIL" | data$EVTYPE =="DUST STORM" | data$EVTYPE =="EXCESSIVE HEAT" | data$EVTYPE == "EXTREME COLD/WIND CHILL" | data$EVTYPE == "FLASH FLOOD" | data$EVTYPE == "FLOOD" | data$EVTYPE == "FREEZING FOG" | data$EVTYPE == "FROST/FREEZE" | data$EVTYPE =="FUNNEL CLOUD" | data$EVTYPE == "HAIL" | data$EVTYPE == "HEAT" | data$EVTYPE == "HEAVY RAIN" | data$EVTYPE == "HEAVY SNOW" | data$EVTYPE == "HIGH SURF" | data$EVTYPE == "HIGH WIND" | data$EVTYPE == "HURRICANE/TYPHOON" | data$EVTYPE == "ICE STORM" | data$EVTYPE == "LAKESHORE FLOOD" | data$EVTYPE == "LIGHTNING" | data$EVTYPE == "MARINE HAIL" | data$EVTYPE == "MARINE HIGH WIND" | data$EVTYPE == "MARINE STRONG WIND" |data$EVTYPE == "MARINE THUNDERSTORM WIND" | data$EVTYPE == "RIP CURRENT" | data$EVTYPE == "SEICHE" | data$EVTYPE == "SLEET" | data$EVTYPE == "STORM TIDE" | data$EVTYPE == "STRONG WIND" | data$EVTYPE == "THUNDERSTORM WIND" | data$EVTYPE == "TORNADO" | data$EVTYPE == "TROPICAL DEPRESSION" | data$EVTYPE == "TROPICAL STORM" | data$EVTYPE == "TSUNAMI" | data$EVTYPE == "VOLCANIC ASH" | data$EVTYPE == "WATERSPOUT" | data$EVTYPE == "WILDFIRE" | data$EVTYPE == "WINTER STORM" | data$EVTYPE == "WINTER WEATHER")

#Volvemos a refactorizar para eliminar posibles elementos vacios
data$EVTYPE <- factor(data$EVTYPE)

Seguidamente una vez filtrado los eventos, procedemos a filtrar las variables que usaremos en el anális y que indicamos anteriormente.

#Ahora vamos a seleccionar las variables de interés con subset()
stormdata <- subset(data, select = c("EVTYPE", "INJURIES", "PROPDMG", "PROPDMGEXP","CROPDMG"
,"CROPDMGEXP", "FATALITIES","STATE", "BGN_DATE", "YEAR"))

Una vez tenemos las variables seleccionadas, seguimos con el procesamiento y toca el turno a las variables que contienen el daño a las cosechas y las propiedades(CROPDMG y PROPDMG), estas llevan asociadas las variables CROPDMGEXP y PROPDMGEXP, que son los exponentes por el que hay que multiplicarlas para obtener su valor real.

#observamos que exponentes tienen
unique(stormdata$PROPDMGEXP)
[1] K   M B 0
Levels:  - ? + 0 1 2 3 4 5 6 7 8 B h H K m M
unique(stormdata$CROPDMGEXP)
[1] K   M B
Levels:  ? 0 2 B k K m M
#como tenemos mayusculas y minusculas en los exponentes para minimizar errores
#vamos a pasarlo todo a mayusculas
stormdata$PROPDMGEXP <- toupper(stormdata$PROPDMGEXP)
stormdata$CROPDMGEXP <- toupper(stormdata$CROPDMGEXP)

#Ahora vamos a crear una función que va a permitir convertir el exponente a su tamaño real
#usando los valores que nos proporciona la NOAA database
exponentes <- function(x) {
  switch(x, H = 100, K = 1000, M = 1e+06, B = 1e+09, `0` = 1, `1` = 10, `2` = 100, 
         `3` = 1000, `4` = 10000, `5` = 1e+05, `6` = 1e+06, `7` = 1e+07, `8` = 1e+08, 
         `9` = 1e+09, 0)
}

#Vamos a asignar a cropdama y propdamge su valor real
stormdata$PROPDMG <- stormdata$PROPDMG * sapply(stormdata$PROPDMGEXP, exponentes)
stormdata$CROPDMG <- stormdata$CROPDMG * sapply(stormdata$CROPDMGEXP, exponentes)

#Ahora vamos a crear una variable con el daño total crop+prop
stormdata$TOTALDMG <- stormdata$PROPDMG + stormdata$CROPDMG

#Y otra con el numero total de heridos y muertos 
stormdata$TOTALINJ <- stormdata$INJURIES + stormdata$FATALITIES

#Solamente nos falta ver las abreviaturas de los estados y codificarlos por su nombre
#en vez de la abreviatura y eliminar las abreviaturas que esten incorrectas
unique(stormdata$STATE)
 [1] AL AK AZ AR CO CA CT DE DC FL GA ID HI IL IN IA KS KY LA ME MD MA MI
[24] MN MS MO MT NE NH NJ NV NY NC NM ND OH OK OR PA RI SC SD TN TX VA UT
[47] VT WV WI WA WY PR GU VI AM AS PH GM PZ LH LC AN LM LS LE PM SL LO PK
[70] XX
72 Levels: AK AL AM AN AR AS AZ CA CO CT DC DE FL GA GM GU HI IA ID ... XX
#codificamos
stormdata$STATE <- revalue(stormdata$STATE, c("AL"="Alabama","AK"="Alaska","AZ"="Arizona","AR"="Arkansas", "CA"="California","CO"="Colorado", "CT"="Connecticut", "DE"="Delaware",
"DC"="Distrito Columbia", "FL"="Florida", "GA" ="Georgia", "HI"= "Hawaii",
"ID" ="Idaho", "IL"="Illinois", "IN"="Indiana", "IA"="Iowa", "KS"="Kansas",
"KY"= "Kentucky","LA"="Louisiana", "ME"="Maine","MD"="Maryland", "MA"= "Massachussetts",
"MI"="Michigan", "MS"="Mississippi", "MO"="Missouri","MT"="Montana", "NE"="Nebraska",
"NV"="Nevada", "NH" ="New Hampshire", "NJ"="New Jersey", "NY"="New York", "NC"="North Carolina", "NM"= "New Mexico", "ND"="North Dakota", "OH"="Ohio", "OK"="Oklahoma", "OR"="Oregon", "PA"= "Pennsylvania","RI"="Rhode Island", "SC"="South Carolina", "SD"= "South Dakota","TN"="Tennessee", "TX"="Texas", "UT"="Utah", "VT"= "Vermont", "VA"="Virginia", "WA"= "Washington", "WV"="West Virginia", "WI"="Wisconsin", "WY"="Wyoming" ,"MN"="Minnesota" ))

#Ahora ya tenemos los estados codificados, asi que volvemos a mirar que abreviaturas nos
#quedan y al no saber de donde proceden las eliminamos ya que pueden llevar a error
#Convertimos a strings para poder manejarlo mejor
stormdata$STATE <-as.character(stormdata$STATE)
unique(stormdata$STATE)
 [1] "Alabama"           "Alaska"            "Arizona"          
 [4] "Arkansas"          "Colorado"          "California"       
 [7] "Connecticut"       "Delaware"          "Distrito Columbia"
[10] "Florida"           "Georgia"           "Idaho"            
[13] "Hawaii"            "Illinois"          "Indiana"          
[16] "Iowa"              "Kansas"            "Kentucky"         
[19] "Louisiana"         "Maine"             "Maryland"         
[22] "Massachussetts"    "Michigan"          "Minnesota"        
[25] "Mississippi"       "Missouri"          "Montana"          
[28] "Nebraska"          "New Hampshire"     "New Jersey"       
[31] "Nevada"            "New York"          "North Carolina"   
[34] "New Mexico"        "North Dakota"      "Ohio"             
[37] "Oklahoma"          "Oregon"            "Pennsylvania"     
[40] "Rhode Island"      "South Carolina"    "South Dakota"     
[43] "Tennessee"         "Texas"             "Virginia"         
[46] "Utah"              "Vermont"           "West Virginia"    
[49] "Wisconsin"         "Washington"        "Wyoming"          
[52] "PR"                "GU"                "VI"               
[55] "AM"                "AS"                "PH"               
[58] "GM"                "PZ"                "LH"               
[61] "LC"                "AN"                "LM"               
[64] "LS"                "LE"                "PM"               
[67] "SL"                "LO"                "PK"               
[70] "XX"               
#eliminamos las abreviaturas que no corresponden a estados
stormdata <- stormdata[stormdata$STATE!="VI" & stormdata$STATE!="GU" & stormdata$STATE!="AM" &
stormdata$STATE!="AS" & stormdata$STATE!="LC" & stormdata$STATE!="PH" & stormdata$STATE!="GM" & stormdata$STATE!="PZ" & stormdata$STATE!="AN" & stormdata$STATE!="LH" & stormdata$STATE!="LM" & stormdata$STATE!="LE" &
stormdata$STATE!= "LS" & stormdata$STATE!= "SL" & stormdata$STATE!= "LO" & stormdata$STATE!= "PM" & stormdata$STATE!="PK" & stormdata$STATE!="XX",]

#vamos a eliminar las filas que no contengan resultados en alguna de las categorias de
#heridos o daños
row.filter  =(stormdata$PROPDMG + stormdata$CROPDMG + stormdata$FATALITIES + stormdata$INJURIES + stormdata$TOTALDMG + stormdata$TOTALINJ) >0
stormdata <- stormdata[row.filter,]

#Y por ultimo vamos a eliminar las columnas que no necesitamos que son cropdmgexp y
#dropdmgexp
stormdata$PROPDMGEXP = NULL
stormdata$CROPDMGEXP = NULL

#vemos la dimension final despues de limpiar el dataset
dim(stormdata)
[1] 135234     10

Hemos pasado despues de la limpieza del dataset de 38 Variables y 900.000 entradas a uno de 10 y 135.000 y mejor codificado para analizarlo. Como último paso salvamos el nuevo set de datos que hemos creado para utilizarlo siempre que queramos y no tengamos que repetir el proceso.

#Ahora salvamos el nuevo dataframe creado para cuando queramos utilizarlo
write.csv(stormdata, file = "stormdata2.csv")
stormdata <- read.csv("stormdata2.csv")

#eliminamos la columna x que se nos crea al cargar el dataset
stormdata$X = NULL

Análisis del Set de Datos

1.¿Qué eventos son los que provocan más heridos en Estados Unidos?

Viendo el gráfico concluimos que el evento climático que ha provocado más heridos en Estados Unidos entre 1996 y 2011 son los tornados con más de 20.000 heridos, seguido de las inundaciones(FLOOD) con más de 6000 heridos.

2.¿Qué eventos son los que provocan más muertes en Estados Unidos?

El evento que ha provocado más muertes en Estados Unidos desde 1996 hasta 2011 han sido las olas de calor (EXCESSIVE HEAT) y los Tornados

3.¿Que eventos son los que tienen mayor impacto económico en las cosechas en EEUU?

El evento climático que más pérdidas ha provocado a las cosechas han sido las sequias(DROUGHT) con más de 10 Billones de dólares

4.¿Que eventos climáticos causan el mayor impacto económico a los bienes materiales en USA?

5.¿Que año fue el que tuvo mayores daños totales(Cosechas + bienes materiales) a causa de eventos climáticos en USA entre 1996 y 2011?

  'data.frame': 16 obs. of  2 variables:
   $ Group.1: int  1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 ...
   $ x      : num  5.25e+09 9.48e+09 9.44e+09 6.00e+09 6.50e+09 ...

El año 2005 ha sido el año en que los eventos climáticos han provocado más daño a las propiedades y las cosechas con más de 120 Billones de dólares. Coincide con el huracán Katrina que arrasó Nueva Orleans en 2005.

6.¿Que año fue el que tuvo mayores pérdidas humanas(heridos + muertes) a causa de eventos climáticos en USA entre 1996 y 2011?

7.¿Qué estado es el que ha sufrido más daños a causa de los eventos climáticos?

El estado que más daños materiales ha sufrido en EEUU desde 1996 hasta el 2011 es el estado de California seguidos de Louisiana y Florida.

8.¿Qué estado ha sufrido más victimas a causa eventos climáticos?

El estado que ha sufrido más víctimas a causa del los eventos climáticos entre 1996 y 2011 ha sido el estado de Texas

Estadística Descriptiva

Vamos a proceder a un análisis parametrico de las diferentes variables que tenemos y vamos a empezar por las variables contínuas

Para ello vamos a realizar un dotplot, para ver la distribución de los datos de dichas variables, hemos escogido un dotplot, porque creo que de esta manera se visualiza mejor la distrubición de los datos.

Variable Muertes(FATALITIES)

     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
  0.00000   0.00000   0.00000   0.05606   0.00000 158.00000 
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

Vemos que la mayoria de eventos provocan pocas muertes, ya que los datos se agrupan hacia la izquierda, vemos un valor extremo y por eso hemos realizado un segundo dotplot eliminando ese valor extremo y centrandonos en la zona donde estan agrupados los datos

Variable Heridos(INJURIES)

    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
   0.000    0.000    0.000    0.376    0.000 1150.000 
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

En la distribución de heridos observamos que volvemos a tener los datos agrupados a la izquierda con algunos valores extremos que son los que hacen que la media sea tan pequeña y la desviación tan grande.

Variable daño a las cosechas(CROPDMG)

     Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
   0.0000    0.0000    0.0000    0.2185    0.0000 1510.0000 
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

Como esta pasando con todas las variables los valores extremos hacen que tengamos los datos agrupados a la izquierda del mapa.

Variable daños materiales(PROPDMG)

    Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
0.00e+00 0.00e+00 1.00e-05 2.20e-03 5.00e-05 1.15e+02 
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.
`stat_bindot()` using `bins = 30`. Pick better value with `binwidth`.

Vemos la distribución de los datos, como pasa en todas las variables de este data set, los valores extremos condicionan la forma del histograma.

Variables de class factor

#hacemos un resumen de las variables factor
variables <- subset(stormdata, select = c("EVTYPE", "STATE"))

summary(variables,10)
               EVTYPE              STATE      
 THUNDERSTORM WIND:43092   Texas      :11376  
 HAIL             :22679   Iowa       : 9960  
 FLASH FLOOD      :18992   Alabama    : 6598  
 TORNADO          :12366   Ohio       : 5936  
 LIGHTNING        :11128   Mississippi: 5923  
 FLOOD            : 9500   Georgia    : 5554  
 HIGH WIND        : 5391   Virginia   : 5434  
 STRONG WIND      : 3360   New York   : 5002  
 WINTER STORM     : 1460   Tennessee  : 4976  
 (Other)          : 7266   (Other)    :74475  
str(variables)
'data.frame':   135234 obs. of  2 variables:
 $ EVTYPE: Factor w/ 40 levels "ASTRONOMICAL LOW TIDE",..: 39 32 23 13 32 23 39 13 13 39 ...
 $ STATE : Factor w/ 52 levels "Alabama","Alaska",..: 1 1 1 1 1 1 1 1 1 1 ...

En el resumen vemos la cantidad de eventos que hay por tipo(EVTYPE) donde el más frecuente son los vientos huracanados(THUNDERSTORM WIND). El estado que sufre el mayor número de eventos climáticos es el estado de Texas.

Dejamos sin analizar las variables BGN_DATE y YEAR que son los años en los que ocurren los eventos y la fecha de inicio, ya que no aportan mucha información y se han usado para transformar y categorizar los eventos.

Probabilidad y Simulación

Vamos a calcular unas probabilidades a partir de los datos sobre eventos climáticos que hemos analizado.

Probabilidad de que un tornado en el estado de Florida cause más de un muerto asumiendo que sigue una distribución normal

La probabilidad de que un tornado en Florida cause más de un muerto es de: 0.3070775

¿Probabilidad de que un periodo de sequia en el estado de Kansas provoque más de 10millones de $ en daños?.¿Y de que produzca entre 50 y 100 millones de daños?(asumimos distribución normal de mean=mean , sd=sd)

La probabilidad de que una sequia produzca más de 10m de $ es: 0.6405432
La probabilidad de que una sequia produzca más de 10m de $ es: 0.1663751

Probabilidad de que una inundación cause más de 1 billon de $ en daños(sin contar cosechas)

La probabilidad de que una inundación en USA provoque más de 1 billon de $ en daños es,: 0.3070775

Simulación

Vamos a simular el total de muertes que pueden provocar futuros tornados, para ellos hemos eliminado los valores extremos que hay y hemos acotado el rango a tornados que causan entre 5 y 50 muertes.

#Vamos a simular el total de muertes que provocaran los tornados 
#para ello usaremos los datos de los tornados que causan entre 5 y 50 victimas
simulacion <- stormdata[stormdata$EVTYPE == "TORNADO",]
simulacion1 <- simulacion[simulacion$FATALITIES <= 200 & simulacion$FATALITIES >=1,]

#calculamos la media y la SD reales para luego comparar con la simulación
mean <- mean(simulacion1$FATALITIES)
sd <- sd(simulacion1$FATALITIES)

#Asumimos que las victimas por tornadas siguen una distribucion uniforme en el intervalo 
#5-50 vamos a generar los datos
set.seed(111)
datos <- runif(10000, 5,50)
hist(datos)

meandatos <-mean(datos)
sddatos <- sd(datos)
mean== meandatos
´ [1] FALSE
sd == sddatos
´ [1] FALSE

Al ver los resultados de la simulación, observando el dotplot entre el rango 5,50 asumimos que las muertes provocadas por los tornados seguian una distribución uniforme. El resultado de la simulación despues de sumular 10000 tornados(los mismos que han ocurrido aproximadamente entre 1996 y 2011) la media y la desvicion estandar teóricas de la simulación no coinciden con las reales, así que esta simulación no nos serviria para poder inferir sobre ello.

Regresion

Queremos comprobar si cuando un evento es muy destructivo hay relación entre la cantidad de pérdidas económicas materiales y la cantidad de pérdidas económicas en las cosechas


Call:
lm(formula = CROPDMG ~ PROPDMG, data = regresion)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.09532 -0.00022 -0.00022 -0.00022  1.50326 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 2.161e-04  2.111e-05   10.24   <2e-16 ***
PROPDMG     1.110e-03  6.590e-05   16.84   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.007763 on 135232 degrees of freedom
Multiple R-squared:  0.002092,  Adjusted R-squared:  0.002085 
F-statistic: 283.5 on 1 and 135232 DF,  p-value: < 2.2e-16

El R-squared es de 0,002 lo que nos indica que practicamente no hay correlación,esto lo vemos en los gráfico , ya que los puntos no muestran una relación entre sí solamente que se agrupan alrededor del 0.

Viendo que hay valores extremos que pueden influir en la regresión vamos a ajustar los parámetros del modelo eliminando estos valores.


Call:
lm(formula = CROPDMG ~ PROPDMG, data = regresion2)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.02375 -0.00018 -0.00017 -0.00017  0.99983 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept) 1.739e-04  1.776e-05   9.792   <2e-16 ***
PROPDMG     4.480e-02  2.067e-03  21.678   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.006514 on 135194 degrees of freedom
Multiple R-squared:  0.003464,  Adjusted R-squared:  0.003457 
F-statistic: 469.9 on 1 and 135194 DF,  p-value: < 2.2e-16

Con el ajuste la correlación ha subido un poco pero sigue sin ser significatico y el aspecto del scatterplot es muy parecido al primero , así que podemos concluir que no hay relación directa entre los daños causados a las propiedades y a las cosechas por los eventos climáticos.

Conclusiones

-Podemos concluir después del análisis que los eventos climáticos en cuanto a víctimas son los tornados y las olas de calor, así como los que provocan más daños materiales son las inundaciones así como las sequías son la principal causa de pérdidas económicas en las cosechas.

-El 2005 fue el año de los últimos 15 donde más daño hubo a causa de los eventos climáticos, coincidiendo con el huracán katrina que arrasó en Nueva Orleans dejando unas pérdidas de más de 120 billones de dólares.

-El año 1998 fue el que dejó más víctimas(heridos + muertes) con más de 10.000 víctimas,este año coincidió con la ola de calor que arrasó Illinois dejando más de 800 muertos.

-Viendo el mapa de daños por estado, observamos que Califormia es el estado que más daños ha sufrido y como los estados costeros del sur son los que sufren más daños, entre ellos Texas, Florida y Louisiana, mientras que los estados centrales son los que menos pérdidas han sufrido.

-Viendo el mapa de muertes por estado, la que mayor muertos ha tenido en los últimos 15 años a causa de los eventos climáticos ha sido Texas. Otra vez se observa que los estados costeros son los que registran más muertes, esto deber ser a causa de las tormentas tropicales y hucaranes.

-El evento que ocurre más frecuentemente en EEUE son los vientos huracanados y el estado que más eventos ha sufrido ha sido el estado de Texas.

-Los datos y las visualizaciones estan muy condicionados por grandes catástrofes que presentan valores extremos en cuanto a pérdidas económicas.Para un futuro se podría hacer más hincapie en esta situación.

-La simulación no ha salido como esperabamos, observamos en la distribución de los datos que quitando valores extremos, las muertes a causa de los tornados tenian una distribución uniforme, pero la simulación de 10.000 tornados ha dejado claro que no.

-Tambien concluimos que no hay relación directa entre los daños ocasionados a las propiedades y el daño ocasionado a las cosechas por un evento.Tiene sentido puesto que los estados con más cultivos son los del medio Oeste que tambien son los que la población está más deslocalizada.

Futuros análisis

-Para futuros análisis podriamos pensar en utilizar la nueva versión de la base de datos de NOAA, que es más completa y se pueden analizar más datos.

-Tambien se podrian analizar las perdidas económicas aplicando la inflacción anual y así tener unos datos más reales.

-Hacer más incapie en la limpieza de datos y eliminar las grandes catástrofes climáticas, ya que tienen valores tan extremos, que desvian el peso real de los demás eventos.