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
| \(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
| \(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
| \(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
| \(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
| \(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
| \(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
| \(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 |