Skip to content

Code to plot FEMA's National Flood Insurance Program (NFIP) claims statistics

Notifications You must be signed in to change notification settings

danielreispereira/nfip

 
 

Repository files navigation

FEMA's Flood Insurance Program - Analysis & Maps using R

The National Flood Insurance Program (NFIP) by the Federal Emergency Management Agency (FEMA) in the United States enables property owners in participating communities to purchase insurance protection from the government against losses from flooding. A number of studies in the recent past have analyzed the NFIP and also its feasibility. To my knowledge, there is no readily available code to analyze the data and other statistics on NFIP provided by FEMA.

Some relevant links:

Here is my attempt to clean and format the data from FEMA and also here are some interesting graphics.

I wanted to make these maps interactive using googleVis, but googleVis does not seem to have the capability to do so at the resolution of a county.

All my code and data are available from here - https://github.com/RationShop/nfip

# analyze policies and claims data from NFIP for each county FEMA NFIP
# policies and claims stats from (Policy & Claim Statistics for Flood
# Insurance)
# http://www.fema.gov/policy-claim-statistics-flood-insurance/policy-claim-statistics-flood-insurance/policy-claim-13

# required libraries
library(stringr)
## Warning: package 'stringr' was built under R version 3.0.2
library(ggplot2)

# required functions
source("analyze_policies.R")  # function to preprocess policies data
source("analyze_claims.R")  # function to preprocess claims data

policies data

policies <- Fn_Analyze_Policies()
## reading policies by county file dated -  2013-10-20 09:45:46

claims data

claims <- Fn_Analyze_Claims()
## reading claims by county file dated -  2013-10-20 09:44:26

combine county data on policies and claims

all_data <- merge(policies, claims, by = c("state", "county"), all = TRUE)
# convert state and county names to be consistent with ggplot2
all_data$state <- tolower(all_data$state)
all_data$county <- tolower(all_data$county)
# remove ' county' and ' parish' from county names
all_data$county <- gsub(" county", "", all_data$county)
all_data$county <- gsub(" parish", "", all_data$county)

geo referencing info on counties and states

geo_county <- map_data("county")
names(geo_county) <- c("long", "lat", "group", "order", "state", "county")
geo_state <- map_data("state")

data for graphics

gfx_data <- merge(geo_county, all_data, by = c("state", "county"))
gfx_data <- gfx_data[order(gfx_data$order), ]
# discretise variables of interest
gfx_data$policies_gfx <- cut(gfx_data$policies, breaks = c(1, 30, 100, 300, 
    1000, 10000, 4e+05), labels = c("1 - 30", "30 - 100", "100 - 300", "300 - 1k", 
    "1k - 10k", "10k - 400k"))
gfx_data$payments_gfx <- cut(gfx_data$total_pay/10^6, breaks = c(0, 0.05, 0.4, 
    1.7, 6.3, 50, 7300), labels = c("0 - 50k", "50k - 400k", "400k - 1.7M", 
    "1.7M - 6.3M", "6.3M - 50M", "50M - 7.3B"))

plot policies

plot_map <- ggplot(data = gfx_data) + geom_polygon(aes(long, lat, group = group, 
    fill = policies_gfx)) + geom_path(data = geo_state, aes(x = long, y = lat, 
    group = group), fill = NA, na.rm = TRUE) + labs(list(title = "NFIP Policies Per County", 
    x = NULL, y = NULL)) + guides(fill = guide_legend(title = "Policies Per County")) + 
    scale_fill_brewer(palette = "Accent") + coord_fixed()
# save plot
png("nfip_policies.png", width = 10, height = 8, units = "in", res = 72)
print(plot_map)
garbage <- dev.off()

![figure 1] nfip1

plot payments

plot_map <- ggplot(data = gfx_data) + geom_polygon(aes(long, lat, group = group, 
    fill = payments_gfx)) + geom_path(data = geo_state, aes(x = long, y = lat, 
    group = group), fill = NA, na.rm = TRUE) + labs(list(title = "NFIP Payments Per County (US$)", 
    x = NULL, y = NULL)) + guides(fill = guide_legend(title = "Payments Per County (US$)")) + 
    scale_fill_brewer(palette = "Accent") + coord_fixed()
png("nfip_payments.png", width = 10, height = 8, units = "in", res = 72)
print(plot_map)
garbage <- dev.off()

![figure 2] nfip2

About

Code to plot FEMA's National Flood Insurance Program (NFIP) claims statistics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • R 100.0%