This is a repeat of an analysis I first did in 2013. One of the signatures of climate change is that it alters the frequency and probability of climate-related events like the global monthly mean temperature. Let me illustrate.
Let’s use the NOAA NCDC data for this analysis. You can get it online at https://www.ncdc.noaa.gov/cag/global/time-series/globe/land_ocean/1/2/1880-2021/data.csv.
URL <- "https://www.ncdc.noaa.gov/cag/global/time-series/globe/land_ocean/all/1/1880-2021/data.csv"
setwd("~/Desktop/Climate")
download.file(URL, "noaa.csv")
noaa <- read.csv("noaa.csv", header = FALSE)
noaa <- noaa[-c(1:5), ]
names(noaa) <- c("Year", "Temperature")
noaa$Time <- seq.Date(as.Date("1880-01-01"), origin = "1970-01-01", by = "month", length.out = length(noaa$Temperature))
noaa$Temperature <- as.numeric(noaa$Temperature)
Once we have the data formatted, we can do an analysis like this for starters: I created a subset of the data, then used linear regression to find the trend since 1970.
noaa.ts <- ts(noaa$Temperature, start = c(1880, 1), frequency = 12)
noaa_1970 <- subset(noaa, Time >= as.Date("1970-01-01"))
noaa.1970.ts <- ts(noaa_1970$Temperature, start = c(1970, 1), frequency = 12)
plot(noaa.ts, xlab = "Year", ylab = "Temperature anomaly (ºC)", main = "NCDC monthly global temperature anomalies, 1880-2021")
noaa_arima <- auto.arima(noaa.1970.ts, ic = c("bic"))
n_a_order <- arimaorder(noaa_arima)
noaa_gls <- gls(noaa.1970.ts~time(noaa.1970.ts), correlation = corARMA(p = n_a_order[1], q = n_a_order[3]))
curve(noaa_gls$coefficients[1] + noaa_gls$coefficients[2]*x, add = TRUE, col = "red", lwd = 1.5)
noaa_ci <- intervals(noaa_gls)
This is the familiar way to show that mean global temperatures have risen over time. Since 1970, global temperatures have risen 0.1793431 per decade (95% confidence interval 0.1707054 to 0.1879808). However, it doesn’t really help the reader intuitively grasp just how that rise changes the probability of certain monthly mean temperatures. For that, we can calculate the density kernel of different decades.
#Split the temperature record into different decades
noaa.1880_1889 <- subset(noaa, Time >= as.Date("1880-01-01") & Time < as.Date("1890-01-01"))
noaa.1950_1959 <- subset(noaa, Time >= as.Date("1950-01-01") & Time < as.Date("1960-01-01"))
noaa.1970_1979 <- subset(noaa, Time >= as.Date("1970-01-01") & Time < as.Date("1980-01-01"))
noaa.1980_1989 <- subset(noaa, Time >= as.Date("1980-01-01") & Time < as.Date("1990-01-01"))
noaa.1990_1999 <- subset(noaa, Time >= as.Date("1990-01-01") & Time < as.Date("2000-01-01"))
noaa.2000_2009 <- subset(noaa, Time >= as.Date("2000-01-01") & Time < as.Date("2010-01-01"))
noaa.2010_2019 <- subset(noaa, Time >= as.Date("2010-01-01") & Time < as.Date("2020-01-01"))
#Create the density kernels
D1880s <- density(noaa.1880_1889$Temperature)
D1950s <- density(noaa.1950_1959$Temperature)
D1970s <- density(noaa.1970_1979$Temperature)
D1980s <- density(noaa.1980_1989$Temperature)
D1990s <- density(noaa.1990_1999$Temperature)
D2000s <- density(noaa.2000_2009$Temperature)
D2010s <- density(noaa.2010_2019$Temperature)
#Graphing the density kernels
plot(D1880s, main="Density plot of global temperatures during selected decades", xlab="Temperature anomalies (ºC)",xlim=c(-0.75,1.5), ylim=c(0,4), lwd=1.5)
points(D1950s, type = "l", col = "blue", lwd = 1.5)
points(D1970s, type = "l", col = "darkgreen", lwd = 1.5)
points(D1980s, type = "l", col = "green", lwd = 1.5)
points(D1990s, type = "l", col = "orange", lwd = 1.5)
points(D2000s, type = "l", col = "darkred", lwd = 1.5)
points(D2010s, type = "l", col = "red", lwd = 1.5)
legend("topleft", legend = c("1880s", "1950s", "1970s", "1980s", "1990s", "2000s", "2010s"), col = c("black", "blue", "darkgreen", "green", "orange", "darkred", "red"), lwd = 2)
Statistics students will recognize these as real-life approximations of the famous bell-curve used to determine probabilities. Notice how the density curves march progressively to the right along the x-axis since the 1970s, visualizing how the probability of global mean temperatures has shifted toward increasingly hotter temperatures.
We can confirm this by calculating the probability of different monthly temperatures in different decades. For instance, the mean temperature in the 2010s is 0.7979167. By definition, that has a probability of 0.5 or 50% in the 2010s. The probability of getting that value in the 1970s is calculated below:
mean_1970s <- mean(noaa.1970_1979$Temperature)
mean_2010s <- mean(noaa.2010_2019$Temperature)
n_1970s <- length(noaa.1970_1979$Temperature)
sd_1970s <- sd(noaa.1970_1979$Temperature)
qt_1970s <- (mean_2010s - mean_1970s)/(sd_1970s/sqrt(n_1970s))
prob <- pt(qt_1970s, df = n_1970s-1, lower.tail = FALSE)
The probability of getting a monthly global mean temperature of 0.7979167 in the 1970s was 1.3672669^{-87}. Yet by the 2010s, that sort of temperature was the norm with a 0.50 probability. That’s an increase in probability of 3.6569304^{86} in only 40 years. This is what we mean when we say climate change alters the probability of certain events. Certain events become more likely, others become less likely. But it’s a slow process, taking decades. By then, thanks to the phenomenon of shifting baselines, we no longer realize just how much our world has changed (Klein and Thurstan 2016).
You can also see above that the hottest monthly means of the 1970s are now the coldest monthly means of the 2010s. When the coldest months today match the warmest months of the 1970s (my birth decade, by the way), you can definitely say the overall climate has shifted. We’re no longer living with the possibility of climate change. We’re living with climate changed, with all the effects on human civilization that reality will bring in the future.
Literature Cited
Klein and Thurstan, 2016. Acknowledging Long-Term Ecological Change: The Problem of Shifting Baselines. pp 11-29 in Máñez and Poulsen, editors. Perspectives on Oceans Past: A Handbook of Marine Environmental History. Springer, London, UK http://ndl.ethernet.edu.et/bitstream/123456789/77671/1/Kathleen%20Schwerdtner%20M%C3%A1%C3%B1ez.pdf#page=24