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.
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
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
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
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.
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
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
'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.
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.
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
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.
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
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.
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.
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.
#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.
Vamos a calcular unas probabilidades a partir de los datos sobre eventos climáticos que hemos analizado.
La probabilidad de que un tornado en Florida cause más de un muerto es de: 0.3070775
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
La probabilidad de que una inundación en USA provoque más de 1 billon de $ en daños es,: 0.3070775
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.
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.
-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.
-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.