Airquality Assignment

Author

Rachel Saidi

Published

May 5, 2023

Airquality Tutorial and Homework Assignment

Source: AirNow.gov

Load in the library

Because airquality is a pre-built dataset, we can write it to our data directory to store it for later use.

The source for this dataset is the New York State Department of Conservation and the National Weather Service of 1973 for five months from May to September recorded daily.

library(tidyverse)

Load the dataset into your global environment

data("airquality")

Look at the structure of the data

the function, head, will only disply the first 6 rows of the dataset. Notice in the global environment to the right, there are 153 observations (rows)

View the data using the “head” function

head(airquality)
  Ozone Solar.R Wind Temp Month Day
1    41     190  7.4   67     5   1
2    36     118  8.0   72     5   2
3    12     149 12.6   74     5   3
4    18     313 11.5   62     5   4
5    NA      NA 14.3   56     5   5
6    28      NA 14.9   66     5   6

Calculate Summary Statistics

If you want to look at specific statistics, here are some variations on coding. Here are 2 different ways to calculate “mean.”

mean(airquality$Temp)
[1] 77.88235
mean(airquality[,4])
[1] 77.88235

Calculate Median, Standard Deviation, and Variance

median(airquality$Temp)
[1] 79
sd(airquality$Wind)
[1] 3.523001
var(airquality$Wind)
[1] 12.41154
order(airquality$Wind)
  [1]  53 121 126 117  99  62  54  66  98 127  68  80 125  30  70 119  52  55
 [19]  69  79 109 122 123 136  11  39  77  82  93  96 124 139 149   1  31  71
 [37]  89  90  91  95  97 110 128   2  27  44  56  57  61  86 101 118 143 152
 [55]   7  10  32  36  72  85  87 102  13  35  43  49  63  64  92 145  12  20
 [73]  21  23  33  38  83 106 116 120 133  51  58  78 100 108 112 131 141 142
 [91] 146 147  14  42  65  67 111 130 132 137   4  16  19  41  46  50  59  81
[109]  84 103 104 105 107 138 153  17  24  28  88   3 115 144  15 150   8  40
[127]  45  94 140   5  37  73  76 114 151   6  26  29  47  60  74  75 134 113
[145] 129 135  34  22  25 148  18   9  48

airquality

Rename the Months from number to names

Number 5 - 9 to May through September

airquality$Month[airquality$Month == 5]<- "May"
airquality$Month[airquality$Month == 6]<- "June"
airquality$Month[airquality$Month == 7]<- "July"
airquality$Month[airquality$Month == 8]<- "August"
airquality$Month[airquality$Month == 9]<- "September"

Now look at the summary statistics of the dataset

See how Month has changed to have characters instead of numbers

summary(airquality$Month)
   Length     Class      Mode 
      153 character character 

Month is a categorical variable with different levels, called factors.

This is one way to reorder the Months so they do not default to alphabetical (you will see another way to reorder DIRECTLY in the chunk that creates the plot below in Plot 1)

airquality$Month<-factor(airquality$Month, levels=c("May", "June","July", "August", "September"))

Plot 1: Create a histogram categorized by Month

Here is a first attempt at viewing a histogram of temperature by the months May through September. We will see that temperatures increase over these months. The median temperature appears to be about 75 degrees.

Reorder the legend so that it is not the default (alphabetical), but rather in chronological order.

fill = Month colors the histogram by months between May - Sept.

scale_fill_discrete(name = “Month”…) provides the month names on the right side as a legend.

p1 <- airquality |>
  ggplot(aes(x=Temp, fill=Month)) +
  geom_histogram(position="identity")+
  scale_fill_discrete(name = "Month", 
                      labels = c("May", "June","July", "August", "September")) +
  labs(x = "Monthly Temperatures from May - Sept", 
       y = "Frequency of Temps",
       title = "Histogram of Monthly Temperatures from May - Sept, 1973",
       caption = "New York State Department of Conservation and the National Weather Service")  #provide the data source
p1
`stat_bin()` using `bins = 30`. Pick better value with `binwidth`.

Is this plot useful in answering questions about monthly temperature values?

Plot 2: Improve the histogram using ggplot

Outline the bars in white using the color = “white” command

Use alpha to add some transparency (values between 0 and 1)

Change the binwidth

Histogram of Average Temperature by Month

Add some transparency and white borders around the histogram bars. Here July stands out for having high frequency of 85 degree temperatures. The dark purple color indicates overlaps of months due to the transparency.

p2 <- airquality |>
  ggplot(aes(x=Temp, fill=Month)) +
  geom_histogram(position="identity", alpha=0.5, binwidth = 5, color = "white")+
  scale_fill_discrete(name = "Month", labels = c("May", "June","July", "August", "September")) +
  labs(x = "Monthly Temperatures from May - Sept", 
       y = "Frequency of Temps",
       title = "Histogram of Monthly Temperatures from May - Sept, 1973",
       caption = "New York State Department of Conservation and the National Weather Service")
p2

Did this improve the readability of the plot?

Plot 3: Create side-by-side boxplots categorized by Month

We can see that August has the highest temperatures based on the boxplot distribution.

p3 <- airquality |>
  ggplot(aes(x = Month, y = Temp, fill = Month)) + 
  labs(x = "Months from May through September", y = "Temperatures", 
       title = "Side-by-Side Boxplot of Monthly Temperatures",
       caption = "New York State Department of Conservation and the National Weather Service") +
  geom_boxplot() +
  scale_fill_discrete(name = "Month", labels = c("May", "June","July", "August", "September"))
p3 

Notice that the points above and below the boxplots in June and July are outliers.

Plot 4: Make the same side-by-side boxplots, but in grey-scale

Use the scale_fill_grey command for the grey-scale legend, and again, use fill=Month in the aesthetics

Side by Side Boxplots in Gray Scale

Here we just changed the color palette to gray scale using scale_fill_grey

p4 <- airquality |>
  ggplot(aes(Month, Temp, fill = Month)) + 
  labs(x = "Monthly Temperatures", y = "Temperatures", 
       title = "Side-by-Side Boxplot of Monthly Temperatures",
       caption = "New York State Department of Conservation and the National Weather Service") +
  geom_boxplot()+
  scale_fill_grey(name = "Month", labels = c("May", "June","July", "August", "September"))
p4

Plot 5: Now make one new plot on your own, that is meaningfully different from the 4 I have shown you. You can select any of the variables in this dataset. Be sure to explore the dataset to see which variables are included that we have not explored yet. You may create a scatterplot, histogram, boxplot, or something else.

  • Be sure to include a title, axis label, and caption for the datasource.

  • Then write a brief essay, described below.

Be sure to write a brief essay that describes the plot you have created, what the plot shows, and what code you used to make this modification.


p5 <- airquality |>
  ggplot(aes(x = Wind, y = Temp, color = Temp)) +
  scale_color_gradient(low = "#FAEEED",high = "#FF3B36") +
  facet_wrap(~Month, scales = "free") + #Source: Chat.openai. For Months to have their own graphs, and the axis to vary based on the data
  geom_point(size = 1.2) +
  geom_smooth(method = "loess", se = FALSE, color = "darkblue", linetype = "dashed") + #Source: Chat.openai. This is for the line dashes. 
  labs(x = "Wind Speed (mph)", 
       y = "Temperature (°F)", 
       title = "Multifaceted Exploration: Wind Speed & Temperature Trends Over Months",
       caption = "New York State Department of Conservation and the National Weather Service") +
  theme_minimal() + #Source: Chat.openai for all "theme" +
  theme(plot.title = element_text(size = 13, face = "bold", hjust = 0.5), #Title of plot
        axis.title = element_text(size = 9.5), #The axis title of the plot for x and y axis
        axis.text = element_text(size = 10), #The number size of the x and y axis
        legend.title = element_text(size = 11), #Temp variable name in the legend far right
        legend.text = element_text(size = 10), #Temperatures of numbers in the legend far right 
        strip.text = element_text(size = 11, face = "italic"), #Months
        plot.caption = element_text(size = 9.5, color = "blue", hjust = 0.5, margin = margin(t = 2) #Caption
        ))
  
p5
`geom_smooth()` using formula = 'y ~ x'

Essay

This data point plot offers a comprehensive exploration of the two variables wind speed and temperature, while examining trends across various months in the data set from May to September. The multifaceted approach for this plot allows an understanding of how the variables intersect in different months and shows insights into potential variations of heat based on the wind.

The point plot I created has a LOESS Smoothing line, which is a dashed blue line to capture the underlying trend of the data. The focus of it is to see the pattern. The color gradient for the scatter points ranged from a soft to a vibrant red, enhancing the visual appeal of how temperature is affected by wind speed.

The theme of this point plot shows a title, axis labels, and a caption to show the interpretation of what the plot and variables mean. For me to create the plot, I used ggplot2 and the tidyverse package to utilize different code functions that modify the plot.

In conclusion, my point plot “Multifaceted Exploration of Wind Speed and Temperature Trends Over Months”, offers a great comprehensive visual that analyzes the relationship between wind speed and temperature in different months. This plot serves as a powerful tool for exploring variations and patterns that could show how our months would be from spring to fall.