DATA_606_Lab2

Load the required libraries and the data

View the names of the variables from the dataset

library(tidyverse)
library(openintro)

data(nycflights)
names(nycflights)
##  [1] "year"      "month"     "day"       "dep_time"  "dep_delay" "arr_time" 
##  [7] "arr_delay" "carrier"   "tailnum"   "flight"    "origin"    "dest"     
## [13] "air_time"  "distance"  "hour"      "minute"


Quick peek at the data

glimpse(nycflights)
## Rows: 32,735
## Columns: 16
## $ year      <int> 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, 2013, ~
## $ month     <int> 6, 5, 12, 5, 7, 1, 12, 8, 9, 4, 6, 11, 4, 3, 10, 1, 2, 8, 10~
## $ day       <int> 30, 7, 8, 14, 21, 1, 9, 13, 26, 30, 17, 22, 26, 25, 21, 23, ~
## $ dep_time  <int> 940, 1657, 859, 1841, 1102, 1817, 1259, 1920, 725, 1323, 940~
## $ dep_delay <dbl> 15, -3, -1, -4, -3, -3, 14, 85, -10, 62, 5, 5, -2, 115, -4, ~
## $ arr_time  <int> 1216, 2104, 1238, 2122, 1230, 2008, 1617, 2032, 1027, 1549, ~
## $ arr_delay <dbl> -4, 10, 11, -34, -8, 3, 22, 71, -8, 60, -4, -2, 22, 91, -6, ~
## $ carrier   <chr> "VX", "DL", "DL", "DL", "9E", "AA", "WN", "B6", "AA", "EV", ~
## $ tailnum   <chr> "N626VA", "N3760C", "N712TW", "N914DL", "N823AY", "N3AXAA", ~
## $ flight    <int> 407, 329, 422, 2391, 3652, 353, 1428, 1407, 2279, 4162, 20, ~
## $ origin    <chr> "JFK", "JFK", "JFK", "JFK", "LGA", "LGA", "EWR", "JFK", "LGA~
## $ dest      <chr> "LAX", "SJU", "LAX", "TPA", "ORF", "ORD", "HOU", "IAD", "MIA~
## $ air_time  <dbl> 313, 216, 376, 135, 50, 138, 240, 48, 148, 110, 50, 161, 87,~
## $ distance  <dbl> 2475, 1598, 2475, 1005, 296, 733, 1411, 228, 1096, 820, 264,~
## $ hour      <dbl> 9, 16, 8, 18, 11, 18, 12, 19, 7, 13, 9, 13, 8, 20, 12, 20, 6~
## $ minute    <dbl> 40, 57, 59, 41, 2, 17, 59, 20, 25, 23, 40, 20, 9, 54, 17, 24~

Exercise 1
How do these three histograms compare

Histograms provide a view of the data density. Smaller the binwidth, better is the shape of the data distribution, which make it more convenient to describe the result.

Are features revealed in one that are obscured in another?

Yes, more the data gets splits in different bins, better features are revealed from the data.


Exercise 2
Create a new data frame that includes flights headed to SFO in February, and save this data frame as sfo_feb_flights. How many flights meet these criteria?
sfo_feb_flights <- nycflights %>%
  filter(dest == "SFO", month == 2)
nrow(sfo_feb_flights)
## [1] 68

68 flights headed to SFO in February.


Exercise 3
Describe the distribution of the arrival delays of these flights using a histogram and appropriate summary statistics. Hint: The summary statistics you use should depend on the shape of the distribution.
ggplot(data = sfo_feb_flights, aes(x = arr_delay)) +
  geom_histogram(binwidth = 10)

The distribution of the arrival delays of SFO flights is unimodal and right skewed with a long tail to the right.

Exercise 4
Calculate the median and interquartile range for arr_delays of flights in in the sfo_feb_flights data frame, grouped by carrier. Which carrier has the most variable arrival delays?
sfo_feb_flights %>%
  group_by(carrier) %>%
  summarise(median_arrdelay = median(arr_delay), iqr_arrdelay = IQR(arr_delay), n_flights = n())

Carrier VX had the most variable delay value. In terms of number of flights, UA had the most delays.


Exercise 5
Suppose you really dislike departure delays and you want to schedule your travel in a month that minimizes your potential departure delay leaving NYC. One option is to choose the month with the lowest mean departure delay. Another option is to choose the month with the lowest median departure delay. What are the pros and cons of these two choices?
monthly_data <- nycflights %>%
  group_by(month) %>%
  summarise(median_depdelay = median(dep_delay), mean_depdelay = mean(dep_delay), iqr_depdelay = IQR(dep_delay), minimum=min(dep_delay), maximum=max(dep_delay), variance = maximum - minimum, n_flights = n()) 

Lets first group by the flights by month, to study its distribution comparing the median departure delay vs mean departure delay. The number of flights every month have been more or less similar, even distribution. Given the uniform distribution of the flight data across the months as per as number of flight, the mean is a better measure of central tendency. Based on the monthly_data set, October seemed to be the best month to travel.

If the data distribution was skewed heavily across the months, then median would have been a better measure of central tendency.


Exercise 6
If you were selecting an airport simply based on on time departure percentage, which NYC airport would you choose to fly out of?
nycflights <- nycflights %>%
  mutate(dep_type = ifelse(dep_delay < 5, "on time", "delayed"))

nycflights %>%
  group_by(origin) %>%
  summarise(ot_dep_rate = sum(dep_type == "on time") / n()) %>%
  arrange(desc(ot_dep_rate))

LGA would be the preferred NYC airport based on the punctuality of the departures.


Exercise 7
Mutate the data frame so that it includes a new variable that contains the average speed, avg_speed traveled by the plane for each flight (in mph). Hint: Average speed can be calculated as distance divided by number of hours of travel, and note that air_time is given in minutes.
nycflights <- nycflights %>%
  mutate(avg_speed = (nycflights$distance/nycflights$air_time))


Exercise 8
Make a scatterplot of avg_speed vs. distance. Describe the relationship between average speed and distance. Hint: Use geom_point().
attach(nycflights)
plot(avg_speed, distance, main="Scatterplot",
   xlab="Average Speed ", ylab="Distance", pch=19) 


Exercise 9
Replicate the following plot. Hint: The data frame plotted only contains flights from American Airlines, Delta Airlines, and United Airlines, and the points are colored by carrier. Once you replicate the plot, determine (roughly) what the cutoff point is for departure delays where you can still expect to get to your destination on time.
filter_flights <- nycflights %>%
  filter((carrier == "AA") | ( carrier == 'DL') | (carrier == 'UA'))


qplot(dep_delay, arr_delay, main="Scatterplot",
   xlab="Departure Delay", ylab="Arrival Delay",colour = carrier, data = filter_flights)