This project was done when I was still an undergraduate student. At the time, I only learned about simple ordinary least squares linear regression. The primary purposes for posting this code is to demonstrate the data curating process and how to create advanced plots. Some code chunks were omitted as various code chunks only had slight difference (i.e., if three chunks were very similar, then only one was shown).

library(tidyverse)
library(cowplot)
library(ggpubr)
library(ggpmisc)
library(modelr)
library(forecast)
library(graphics)

Data Processing & Curating

dftempconc <- dftempconc1 %>%
  mutate(
    Period = as_factor(case_when(
      Year < 1915 ~ "1880-1914",
      Year < 1950 ~ "1915-1949",
      Year < 1985 ~ "1950-1984",
      Year >= 1985 ~ "1985-2019"
      )),
    Temperature = as_factor(case_when(
      Land_Ocean_Temp < quantile(Land_Ocean_Temp, probs = 0.25, na.rm = TRUE)  ~ "13.45-13.71",
      Land_Ocean_Temp < quantile(Land_Ocean_Temp, probs = 0.5, na.rm = TRUE) ~ "13.72-13.87",
      Land_Ocean_Temp < quantile(Land_Ocean_Temp, probs = 0.75, na.rm = TRUE) ~ "13.88-14.17",
      Land_Ocean_Temp >= quantile(Land_Ocean_Temp, probs = 0.75, na.rm = TRUE) ~ "14.18-14.89"
      )),
    CO2_Conclevel = as_factor(case_when(
      CO2_Concentration < quantile(CO2_Concentration, probs = 0.25, na.rm = TRUE) ~ "287-306",
      CO2_Concentration < quantile(CO2_Concentration, probs = 0.5, na.rm = TRUE) ~ "306-318",
      CO2_Concentration < quantile(CO2_Concentration, probs = 0.75, na.rm = TRUE) ~ "318-354",
      CO2_Concentration >= quantile(CO2_Concentration, probs = 0.75, na.rm = TRUE) ~ "354-409"
      )),
    CH4_Conclevel = as_factor(case_when(
      CH4_Concentration < quantile(CH4_Concentration, probs = 0.25, na.rm = TRUE) ~ "13.45-13.71",
      CH4_Concentration < quantile(CH4_Concentration, probs = 0.5, na.rm = TRUE) ~ "13.72-13.87",
      CH4_Concentration < quantile(CH4_Concentration, probs = 0.75, na.rm = TRUE) ~ "13.88-14.17",
      CH4_Concentration >= quantile(CH4_Concentration, probs = 0.75, na.rm = TRUE) ~ "14.18-13.89"
      )),
    N2O_Conclevel = as_factor(case_when(
      N2O_Concentration < quantile(N2O_Concentration, probs = 0.25, na.rm = TRUE) ~ "13.45-13.71",
      N2O_Concentration < quantile(N2O_Concentration, probs = 0.5, na.rm = TRUE) ~ "13.72-13.87",
      N2O_Concentration < quantile(N2O_Concentration, probs = 0.75, na.rm = TRUE) ~ "13.88-14.17",
      N2O_Concentration >= quantile(N2O_Concentration, probs = 0.75, na.rm = TRUE) ~ "14.18-13.89"
      ))
    )

Results

Temperature VS Year By Gas Concentrations (1880-2019)

tempyear_lm <- lm(Land_Ocean_Temp ~ Year, data = dftempconc, na.action = na.exclude)
tempintpreds <- as_tibble(predict(tempyear_lm, newdata=yearint, interval="predict", level=0.95)) %>%
  mutate(Year = yearint$Year) %>%
  select(Year, everything())
tempyearco2 <- dftempconc %>%
  ggplot(aes(x = Year, y = Land_Ocean_Temp)) +
  ggtitle("Temperature VS Year By CO2 Concentration (1880-2019)") +
  scale_x_continuous(limits=c(1880,2019), breaks = seq(1880, 2020, 20)) +
  scale_y_continuous(limits = c(13.11, 14.9), breaks = seq(13.2, 15, 0.4)) +
  ylab("Land-Ocean Temperature (°C)") +
  geom_smooth(method="lm", color="black", size=1, linetype=2, se=FALSE) +
  geom_ribbon(aes(ymin=tempintpreds$lwr, ymax=tempintpreds$upr), fill="darkgrey", alpha=0.2) +
  geom_point(aes(color=CO2_Concentration), size=4) +
  scale_color_gradient(limits=c(287, 409), breaks = c(300, 350, 400), low = "yellow", high = "red", na.value="grey", name = "Concentration (ppm)") +
  stat_regline_equation(aes(label =  paste(..eq.label..)),
                        color="red3", label.x = 1881, label.y = 14.66, size=5) +
  stat_regline_equation(aes(label =  paste(..rr.label..)),
                        color="red3", label.x = 1881, label.y = 14.51, size=5) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=3), sep = "")),
                  color="red3", size=5, label.x = 0.052, label.y = 0.68) +
  theme_bw() +
  theme(plot.title = element_text(size = 14, hjust = 0.5, face = "bold"), 
        axis.title = element_text(size = 12, face="bold"), 
        axis.text = element_text(size = 11),
        legend.key.height = unit(1, "cm"),
        legend.title = element_text(size=10, face="bold", hjust = 0.5),
        legend.text = element_text(size=10),
        legend.position = "right")
tempyearco2

Concentration Data

co2df <- dftempconc %>% filter(!is.na(CO2_Concentration)) %>%
  select(Year, Period, Land_Ocean_Temp, Temperature, CO2_Concentration, CO2_Conclevel)
co2concyearlm <- lm(CO2_Concentration ~ Year, data = co2df)
co2concyearpreds <- as_tibble(predict(co2concyearlm, newdata = co2df, interval="predict", level=0.95))
co2combinedDF <- cbind(co2df, co2concyearpreds)
CO2concyear_plot <- ggplot(data = co2combinedDF) +
  ggtitle("CO2 Concentration VS Year by Temperature (1880-2018)", subtitle = "Prediction Interval") +
  ylab("CO2 Concentration ppm)") +
  geom_point(aes(x = Year, y = CO2_Concentration, color=Temperature), size=3) +
  # geom_smooth(aes(x = Year, y = CO2_Concentration), method="lm", se=FALSE, linetype=2, color="black", size=1) +
  geom_line(aes(x = Year, y = fit), linetype=2, color="black", size=1) +
  geom_ribbon(aes(x = Year, ymin = lwr, ymax = upr), fill="grey", alpha=0.2) +
  stat_regline_equation(aes(x = Year, y = CO2_Concentration, label =  paste(..eq.label..)),
                        color="green4", size=5, label.x = 1881, label.y = 395.5) +
  stat_regline_equation(aes(x = Year, y = CO2_Concentration, label =  paste(..rr.label..)),
                        color="green4", size=5, label.x = 1881, label.y = 380.5) +
  stat_fit_glance(aes(x = Year, y = CO2_Concentration, label = paste("p = ", signif(..p.value.., digits=2), sep = "")),
                  method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  color="green4", size=5, label.x = 0.052, label.y = 0.7) +
  scale_x_continuous(limits = c(1880,2018), breaks = seq(1880, 2020, 20)) +
  scale_y_continuous(limits = c(244,409), breaks = seq(250, 410, 40)) +
  scale_color_manual(values=c("blue", "green3", "yellow", "red"), name = "Temp (°C)")  +
  theme_bw() +
  theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 12),
        plot.subtitle = element_text(hjust = 0.5, size = 11),
        axis.title = element_text(face="bold", size = 11),
        axis.text = element_text(size = 11),
        legend.key.height = unit(1, "cm"),
        legend.key.width = unit(1, "cm"),
        legend.title = element_text(face="bold", hjust = 0.5, size = 15),
        legend.text = element_text(size = 14),
        legend.justification = "bottom",
        legend.background = element_rect(color="black"),
        legend.box = "vertical", 
        legend.position = "right")
# CO2concyear_plot
ch4df <- dftempconc %>% filter(!is.na(CH4_Concentration)) %>%
  select(Year, Period, Land_Ocean_Temp, Temperature, CH4_Concentration, CH4_Conclevel)
ch4concyearlm <- lm(CH4_Concentration ~ Year, data = ch4df)
ch4concyearpreds <- as_tibble(predict(ch4concyearlm, newdata = ch4df, interval="predict", level=0.95))
ch4combinedDF <- cbind(ch4df, ch4concyearpreds)
N2Odf <- dftempconc %>% filter(!is.na(N2O_Concentration)) %>%
  select(Year, Period, Land_Ocean_Temp, Temperature, N2O_Concentration, N2O_Conclevel)
N2Oconcyearlm <- lm(N2O_Concentration ~ Year, data = N2Odf)
N2Oconcyearpreds <- as_tibble(predict(N2Oconcyearlm, newdata = N2Odf, interval="predict", level=0.95))
N2OcombinedDF <- cbind(N2Odf, N2Oconcyearpreds)
conctop <- plot_grid(NULL, CO2concyear_plot, NULL, rel_widths = c(1, 4, 1), ncol=3)
concbottom <- plot_grid(CH4concyear_plot, N2Oconcyear_plot)
plot_grid(conctop, concbottom, nrow = 2)

Population VS Year

popyearlm <- lm(Population ~ Year, data = dfworld)
popyearpreds <- as_tibble(predict(popyearlm, newdata=yearintw, interval="predict", level=0.95)) %>%
  mutate(Year = yearintw$Year) %>%
  select(Year, everything())
popyearplot <- dfworld %>%
  ggplot(aes(x = Year, y = Population)) +
  ggtitle("Population VS Year By Temperature (1955-2017)") +
  #geom_smooth(method="lm", color="black", size=1, linetyoe=2, se=FALSE) +
  #geom_ribbon(aes(ymin = popyearpreds$lwr, ymax = popyearpreds$upr), fill="violetred", alpha=0.2) +
  scale_x_continuous(limits = c(1955,2017), breaks = seq(1955, 2015, 10)) +
  xlab("Year") +
  scale_y_continuous(limits=c(2.25,7.75), breaks = seq(2.5, 7.5, 0.5)) +
  ylab("Population in Billions") +
  geom_point(aes(color=Temperature), size=4) +
  scale_color_manual(values=c("blue", "green3", "yellow", "red"), name = "Temp (°C)") +
  stat_regline_equation(aes(label =  paste(..eq.label..)),
                        color="violetred", label.x = 1955.5, label.y = 7.2, size=5) +
  stat_regline_equation(aes(label =  paste(..rr.label..)),
                        color="violetred", label.x = 1955.5, label.y = 6.76, size=5) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=3), sep = "")),
                  color="violetred", size=5, label.x = 0.053, label.y = 0.72) +
  theme_bw() +
  theme(plot.title = element_text(size = 14, hjust = 0.5, face = "bold"), 
        axis.title = element_text(size = 12, face="bold"), 
        axis.text = element_text(size = 11),
        legend.key.height = unit(1, "cm"),
        legend.title = element_text(size=10, face="bold", hjust = 0.5),
        legend.justification = "center",
        legend.text = element_text(size=10),
        legend.background = element_rect(color="black"),
        legend.box = "vertical", 
        legend.position = c(0.85, 0.25),
        panel.grid.minor=element_blank())
popyearplot

Emissions

co2emissyearlm <- lm(CO2_Emissions ~ Year, data = dfworld, na.action = na.exclude)
co2emissyearpreds <- as_tibble(predict(co2emissyearlm, newdata=yearintw, interval="predict", level=0.95)) %>%
  mutate(Year = yearintw$Year) %>%
  select(Year, everything())

ch4emissyearlm <- lm(CH4_Emissions ~ Year, data = dfworld2, na.action = na.exclude)
ch4emissyearpreds <- as_tibble(predict(ch4emissyearlm, newdata=yearintw2, interval="predict", level=0.95)) %>%
  mutate(Year = yearintw2$Year) %>%
  select(Year, everything())

n2oemissyearlm <- lm(N2O_Emissions ~ Year, data = dfworld2, na.action = na.exclude)
n2oemissyearpreds <- as_tibble(predict(n2oemissyearlm, newdata=yearintw2, interval="predict", level=0.95)) %>%
  mutate(Year = yearintw2$Year) %>%
  select(Year, everything())
CO2emissionsyear_plot <- dfworld %>%
  ggplot(aes(x = Year, y = CO2_Emissions), na.rm=TRUE) +
  ggtitle("CO2 Emissions VS Year (1955-2017)") +
  scale_x_continuous(limits = c(1955,2017), breaks = seq(1955, 2015, 10)) +
  scale_y_continuous(limits = c(43,378), breaks = seq(50, 400, 100)) +
  ylab("CO2 Emissions (100 m. tCO2e)") +
  geom_ribbon(aes(ymin=co2emissyearpreds$lwr, ymax=co2emissyearpreds$upr), fill="darkgrey", alpha=0.2) +
  geom_point(aes(y=CO2_Emissions[c(TRUE, rep(c(NA, TRUE), 30), NA, TRUE)], color=Temperature, shape=CO2_Conclevel), size=5, na.rm = T) +
  scale_color_manual(values=c("blue", "green3", "yellow", "red"), name = "Temp (°C)") +
  scale_shape_manual(values = c(15, 16, 17, 18), na.translate=FALSE, name="Conc (ppb)") +
  stat_regline_equation(aes(label=paste(..eq.label..)), 
                        color="red", size=4, label.x = 1955.5, label.y = 363) +
  stat_regline_equation(aes(label=paste(..rr.label..)), 
                        color="red", size=4, label.x = 1955.5, label.y = 326) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=2), sep = "")),
                  color="red", size=4, label.x = 0.054, label.y = 0.72) +
  theme_bw() +
  theme(plot.title = element_text(size = 12, hjust = 0.5, face = "bold"),
        axis.title = element_text(size = 10, face="bold"),
        axis.text = element_text(size = 10),
        legend.key.width = unit(0.3, "cm"),
        legend.key.height = unit(0.4, "cm"),
        legend.title = element_text(size=10, face="bold", hjust = 0.5),
        legend.justification = "center",
        legend.text = element_text(size=10),
        legend.spacing.x = unit(0.25, "cm"),
        legend.background = element_rect(color="black"),
        legend.box = "vertical", 
        legend.position = "right",
        panel.grid.minor.x=element_blank())
emissionstop <- plot_grid(NULL, CO2emissionsyear_plot, NULL, nrow=1, rel_widths = c(1, 3, 1))
emissionsbottom <- plot_grid(CH4emissionsyear_plot, N2Oemissionsyear_plot, nrow=1)
plot_grid(emissionstop, emissionsbottom, nrow=2)

Temperature VS Time

Enitire Dataset (1880-2019)

tempyear <- dftempconc %>%
  ggplot(aes(x = Year, y = Land_Ocean_Temp)) +
  ggtitle("Temperature VS Year (1880-2019)") +
  scale_x_continuous(limits=c(1880,2019), breaks = seq(1880, 2020, 20)) +
  scale_y_continuous(limits = c(13.11, 14.9), breaks = seq(13.2, 15, 0.4)) +
  ylab("Land-Ocean Temperature (°C)") +
  geom_smooth(method="lm", color="black", size=1, linetype=2, se=FALSE) +
  geom_ribbon(aes(ymin=tempintpreds$lwr, ymax=tempintpreds$upr), fill="darkgrey", alpha=0.2) +
  geom_point(size=3, color="mediumvioletred") +
  stat_regline_equation(aes(label =  paste(..eq.label..)),
                        color="mediumvioletred", label.x = 1881, label.y = 14.66, size=5) +
  stat_regline_equation(aes(label =  paste(..rr.label..)),
                        color="mediumvioletred", label.x = 1881, label.y = 14.51, size=5) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=3), sep = "")),
                  color="mediumvioletred", size=5, label.x = 0.052, label.y = 0.68) +
  theme_bw() +
  theme(plot.title = element_text(size = 14, hjust = 0.5, face = "bold"), 
        axis.title = element_text(size = 12, face="bold"), 
        axis.text = element_text(size = 11),
        legend.key.height = unit(1, "cm"),
        legend.title = element_text(size=10, face="bold", hjust = 0.5),
        legend.text = element_text(size=10),
        legend.position = "right")
tempyear

By Intervals

# int1 is from 1880-1935
dftempyear1 <- filter(dftempconc, Year <= 1935)
yearint1 <- tibble(Year = dftempyear1$Year)
tempint1lm <- lm(Land_Ocean_Temp ~ Year, data = dftempyear1, na.action = na.exclude)
tempint1preds <- as_tibble(predict(tempint1lm, newdata=yearint1, interval="predict", level=0.95)) %>%
  mutate(Year = yearint1$Year) %>%
  select(Year, everything())

# int2 is from 1936 to 1979
dftempyear2 <- filter(dftempconc, Year > 1935 & Year < 1980)
yearint2 <- tibble(Year = dftempyear2$Year)
tempint2lm <- lm(Land_Ocean_Temp ~ Year, data = dftempyear2, na.action = na.exclude)
tempint2preds <- as_tibble(predict(tempint2lm, newdata=yearint2, interval="predict", level=0.95)) %>%
  mutate(Year = yearint2$Year) %>%
  select(Year, everything())

# int3 is from 1980-2019
dftempyear3 <- filter(dftempconc, Year >= 1980)
yearint3 <- tibble(Year = dftempyear3$Year)
tempint3lm <- lm(Land_Ocean_Temp ~ Year, data = dftempyear3, na.action = na.exclude)
tempint3preds <- as_tibble(predict(tempint3lm, newdata=yearint3, interval="predict", level=0.95)) %>%
  mutate(Year = yearint3$Year) %>%
  select(Year, everything())
tempyear1plot <- dftempyear1 %>%
  ggplot(aes(x = Year, y = Land_Ocean_Temp), na.rm = TRUE) +
  ggtitle("Temperature VS Year (1880-1935)") +
  scale_x_continuous(limits = c(1880, 1935), breaks = seq(1880, 1930, 10)) +
  scale_y_continuous(limits = c(13.43, 14.96), breaks = seq(13.4, 15, 0.4)) +
  ylab("Land-Ocean Temperature (°C)") +
  geom_point() +
  geom_smooth(method="lm", color="red", size=1, se=FALSE) +
  geom_ribbon(aes(ymin=tempint1preds$lwr, ymax=tempint1preds$upr), fill="red", alpha=0.2) +
  stat_regline_equation(aes(label =  paste(..eq.label..)),
                        color="red", label.x = 1881, label.y = 14.93, size=4) +
  stat_regline_equation(aes(label =  paste(..rr.label..)),
                        color="red", label.x = 1881, label.y = 14.82, size=4) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=3), sep = "")),
                  color="red", size=4, label.x = 0.062, label.y = 0.81) +
  theme_bw() +
  theme(plot.title = element_text(size = 12, hjust = 0.5, face = "bold"),
        axis.title = element_text(size = 10, face="bold"),
        axis.text = element_text(size = 10),
        legend.position="none")
tempyear2plot <- dftempyear2 %>%
  ggplot(aes(x = Year, y = Land_Ocean_Temp), na.rm = TRUE) +
  ggtitle("Temperature VS Year (1936-1979)") +
  scale_x_continuous(limits = c(1936, 1979), breaks = seq(1935, 1980, 10)) +
  scale_y_continuous(limits = c(13.43, 14.96), breaks = seq(13.4, 15, 0.4)) +
  ylab("Land-Ocean Temperature (°C)") +
  geom_point() +
  geom_smooth(method="lm", color="green4", size=1, se=FALSE) +
  geom_ribbon(aes(ymin=tempint2preds$lwr, ymax=tempint2preds$upr), fill="green4", alpha=0.2) +
  stat_regline_equation(aes(label =  paste(..eq.label..)),
                        color="green4", label.x = 1936.5, label.y = 14.93, size=4) +
  stat_regline_equation(aes(label =  paste(..rr.label..)),
                        color="green4", label.x = 1936.5, label.y = 14.82, size=4) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=3), sep = "")),
                  color="green4", size=4, label.x = 0.058, label.y = 0.81) +
  theme_bw() +
  theme(plot.title = element_text(size = 12, hjust = 0.5, face = "bold"),
        axis.title = element_text(size = 10, face="bold"),
        axis.text = element_text(size = 10),
        legend.position="none")
tempyear3plot <- dftempyear3 %>%
  ggplot(aes(x = Year, y = Land_Ocean_Temp), na.rm = TRUE) +
  ggtitle("Temperature VS Year (1980-2019)") +
  scale_x_continuous(limits = c(1980, 2019), breaks = seq(1980, 2020, 10)) +
  scale_y_continuous(limits = c(13.43, 14.96), breaks = seq(13.4, 15, 0.4)) +
  ylab("Land-Ocean Temperature (°C)") +
  geom_point() +
  geom_smooth(method="lm", color="blue", size=1, se=FALSE) +
  geom_ribbon(aes(ymin=tempint3preds$lwr, ymax=tempint3preds$upr), fill="blue", alpha=0.2) +
  stat_regline_equation(aes(label =  paste(..eq.label..)),
                        color="blue", label.x = 1980.5, label.y = 14.93, size=4) +
  stat_regline_equation(aes(label =  paste(..rr.label..)),
                        color="blue", label.x = 1980.5, label.y = 14.82, size=4) +
  stat_fit_glance(method = 'lm', method.args = list(formula = y ~ x), geom = "text_npc",
                  aes(label = paste("p = ", signif(..p.value.., digits=3), sep = "")),
                  color="blue", size=4, label.x = 0.058, label.y = 0.81) +
  theme_bw() +
  theme(plot.title = element_text(size = 12, hjust = 0.5, face = "bold"),
        axis.title = element_text(size = 10, face="bold"),
        axis.text = element_text(size = 10),
        legend.position="none")
plot_grid(tempyear1plot, tempyear2plot, tempyear3plot, ncol=3)

Predicting Future Temperatures

predsYear <- tibble(Year = c(2020:2200))
future1880lm <- as_tibble(predict(tempyear_lm, newdata = predsYear, interval="predict", level=0.95))  %>%
  mutate(Year = predsYear$Year, Predicting_Model = c("1880-2019 lm")) %>%
  select(Year, Predicting_Model, everything())
future1980lm <- as_tibble(predict(tempint3lm, newdata = predsYear, interval="predict", level=0.95))  %>%
  mutate(Year = predsYear$Year, Predicting_Model = c("1980-2019 lm")) %>%
  select(Year, Predicting_Model, everything())
futuretemps <- future1880lm %>%
  full_join(future1980lm) %>%
  arrange(Year)
temps1880trends <- tempintpreds %>%
  mutate(Predicting_Model = "1880-2019 lm")
temps1980trends <- tempint3preds %>%
  mutate(Predicting_Model = "1980-2019 lm")
temps <- tibble(Year = dftempconc$Year, Temperature = dftempconc$Land_Ocean_Temp)
tempsboth <- futuretemps %>%
  full_join(temps1880trends) %>%
  full_join(temps1980trends) %>%
  full_join(temps, by="Year") %>%
  arrange(Year)
futureplot <- tempsboth %>%
  ggplot(aes(x = Year, y = fit, color=Predicting_Model)) +
  ggtitle("Predicted Future Land-Ocean Temperatures", subtitle = "Historic Trends VS Recent Trends") +
  scale_x_continuous(limit = c(1880,2200), breaks = seq(1880, 2200, 40)) +
  scale_y_continuous(limit = c(13.11,18.49), breaks = seq(13.5, 18.5, 0.5)) +
  ylab("Predicted Temperature (°C)") +
  labs(fill="Model", color="Model") +
  geom_line(size=1.2) +
  geom_line(aes(y=lwr, color=Predicting_Model), linetype = 5, size=1, show.legend=FALSE) +
  geom_line(aes(y=upr, color=Predicting_Model), linetype = 5, size=1, show.legend=FALSE) +
  geom_ribbon(aes(ymin=lwr, ymax=upr, fill=Predicting_Model), alpha=0.2) +
  geom_hline(yintercept=14.85, linetype = 3, color = "black", size = 1) +
  geom_hline(yintercept=16.85, linetype = 3, color = "black", size = 1) +
  geom_point(aes(y=Temperature), na.rm=T) +
  theme_bw() +
  theme(plot.title = element_text(size = 20, hjust = 0.5, face = "bold"), 
        plot.subtitle = element_text(size = 16, hjust = 0.5),
        axis.title = element_text(size = 15, face="bold"), 
        axis.text = element_text(size = 12),
        legend.title = element_text(size=15, face="bold", hjust = 0.5), 
        legend.text = element_text(size=12), 
        legend.position = c(0.16, 0.82),
        legend.background = element_rect(color="black", fill = "gainsboro"), 
        panel.grid.minor.y=element_blank())
futureplot

Ranking Models By \(R^{2}\)

Top 10 Models

Model \(R^{2}\) Time Period
\(Population\) ~ \(Year\) \(0.998\) 1955-2017
\(Concentrations: CO_{2}\) ~ \(N_{2}O\) \(0.997\) 1880-2016
\(N_{2}O\ Concentration\) ~ \(Population\) \(0.992\) 1955-2017
\(CO_{2}\ Concentration\) ~ \(Population\) \(0.988\) 1955-2017
\(CO_{2}\ Emissions\) ~ \(Year\) \(0.974\) 1955-2017
\(CO_{2}\ Concentration\) ~ \(CO_{2}\ Emissions\) \(0.971\) 1955-2017
\(CO_{2}\ Emissions\) ~ \(Population\) \(0.971\) 1955-2017
\(CH_{4}\ Concentration\) ~ \(Year\) \(0.966\) 1880-2018
\(Emissions: CO_{2}\) ~ \(CH_{4}\) \(0.934\) 1970-2012
\(N_{2}O\ Concentration\) ~ \(LandOceanTemp\) \(0.912\) 1880-2018
\(CH_{4}\ Emissions\) ~ \(Year\) \(0.911\) 1970-2012

Miscellaneous Models

Model \(R^{2}\) Time Period
\(Population\) ~ \(Year\) \(0.998\) 1955-2017
\(LandOceanTemp\) ~ \(Population\) \(0.871\) 1955-2017
\(LandOceanTemp(Recent)\) ~ \(Year\) \(0.834\) 1980-2019
\(LandOceanTemp\) ~ \(Year\) \(0.768\) 1880-2019

CO2 Models

Model \(R^{2}\) Time Period
\(CO_{2}\ Concentration\) ~ \(Population\) \(0.988\) 1955-2017
\(CO_{2}\ Emissions\) ~ \(Year\) \(0.974\) 1955-2017
\(CO_{2}\ Concentration\) ~ \(CO_{2}\ Emissions\) \(0.971\) 1955-2017
\(CO_{2}\ Emissions\) ~ \(Population\) \(0.971\) 1955-2017
\(CO_{2}\ Concentration\) ~ \(LandOceanTemp\) \(0.885\) 1880-2018
\(CO_{2}\ Concentration\) ~ \(Year\) \(0.855\) 1880-2018
\(CO_{2}\ Emissions\) ~ \(LandOceanTemp\) \(0.837\) 1955-2017

CH4 Models

Model \(R^{2}\) Time Period
\(CH_{4}\ Concentration\) ~ \(Year\) \(0.966\) 1880-2018
\(CH_{4}\ Emissions\) ~ \(Year\) \(0.911\) 1970-2012
\(CH_{4}\ Emissions\) ~ \(Population\) \(0.909\) 1970-2012
\(CH_{4}\ Concentration\) ~ \(Population\) \(0.874\) 1955-2017
\(CH_{4}\ Concentration\) ~ \(LandOceanTemp\) \(0.803\) 1880-2018
\(CH_{4}\ Emissions\) ~ \(LandOceanTemp\) \(0.780\) 1970-2012
\(CH_{4}\ Concentration\) ~ \(CH_{4}\ Emissions\) \(0.706\) 1970-2012

N2O Models

Model \(R^{2}\) Time Period
\(N_{2}O\ Concentration\) ~ \(Population\) \(0.992\) 1955-2017
\(N_{2}O\ Concentration\) ~ \(LandOceanTemp\) \(0.912\) 1880-2018
\(N_{2}O\ Concentration\) ~ \(Year\) \(0.900\) 1880-2016
\(N_{2}O\ Emissions\) ~ \(Year\) \(0.754\) 1970-2012
\(N_{2}O\ Emissions\) ~ \(Population\) \(0.751\) 1970-2012
\(N_{2}O\ Emissions\) ~ \(LandOceanTemp\) \(0.703\) 1970-2012
\(N_{2}O\ Concentration\) ~ \(N_{2}O\ Emissions\) \(0.649\) 1970-2012

Concentration Models

Concentrataion Models \(R^{2}\) Time Period
\(CO_{2}\) ~ \(N_{2}O\) \(0.997\) 1880-2016
\(CH_{4}\) ~ \(N_{2}O\) \(0.907\) 1880-2016
\(CO_{2}\) ~ \(CH_{4}\) \(0.859\) 1880-2018

Emissions Models

Emissions Models \(R^{2}\) Time Period
\(CO_{2}\) ~ \(CH_{4}\) \(0.934\) 1970-2012
\(CH{4}\) ~ \(CO_{2}\) \(0.807\) 1970-2012
\(CO_{2}\) ~ \(N_{2}O\) \(0.639\) 1970-2012