Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
557 lines (435 sloc) 23.8 KB
---
title: "The Environment as Collective Action Problem"
subtitle: POSC 1020 -- Introduction to International Relations
author: Steven V. Miller
institute: Department of Political Science
titlegraphic: /Dropbox/teaching/clemson-academic.png
date:
output:
beamer_presentation:
template: ~/Dropbox/miscelanea/svm-r-markdown-templates/svm-latex-beamer.tex
latex_engine: xelatex
dev: cairo_pdf
fig_caption: false
slide_level: 3
make149: true
mainfont: "Open Sans"
titlefont: "Titillium Web"
---
```{r setup, include=FALSE, cache=F, message=F, warning=F, results="hide"}
knitr::opts_chunk$set(cache=TRUE)
knitr::opts_chunk$set(fig.path='figs/')
knitr::opts_chunk$set(cache.path='cache/')
knitr::opts_chunk$set(
fig.process = function(x) {
x2 = sub('-\\d+([.][a-z]+)$', '\\1', x)
if (file.rename(x, x2)) x2 else x
}
)
```
```{r loadstuff, include=FALSE}
library(tidyverse)
library(lubridate)
library(stringr)
library(stevemisc)
library(scales)
library(knitr)
library(weathermetrics)
library(WDI)
library(artyfarty)
data(co2data)
data(sealevels)
data(odgi)
data(so2data)
data(arcticseaice)
GTTS <- read_csv("~/Dropbox/data/global-temperature-time-series/annual_csv.csv")
```
# Introduction
### Puzzle(s) for Today
*Why is it so hard to cooperate on the environment when threats to it constitute a threat to life on earth?*
###
```{r carbondioxide-emissions-all-time, eval=T, echo=F, fig.height=8.5, fig.width = 14}
co2data %>%
ggplot(.,aes(year,co2)) + theme_steve_web() +
geom_ribbon(aes(ymin=-Inf, ymax=co2),
alpha=0.3, fill="grey66") +
geom_line(size=1.1) +
geom_hline(yintercept = 300, linetype = "dashed") +
annotate("text", x=-796562,y=305, hjust=0, label="1912: mean carbon dioxide emissions pass 300ppm for the first time in the history of the planet.",
family = "Open Sans") +
geom_hline(yintercept = 400, linetype = "dashed") +
annotate("text", x=-796562,y=405, hjust=0, label="2015: mean carbon dioxide emissions pass 400ppm for the first time in the history of the planet.",
family = "Open Sans") +
scale_x_continuous(breaks=seq(-800000, 0, by= 50000),
labels = scales::comma) +
xlab("Year (Negative Values = BC)") + ylab("Carbon Dixode Emissions (ppm)") +
labs(title = "Estimated Carbon Dioxide Emissions Through the History of the Planet, 800,000 BC to 2017",
subtitle = "What's happening right now is more than just a normal ''cycle.''",
caption = "Data: cobbled from various sources, including EPA, IAC/Eidgenössische Technische Hochschule estimates, and NOAA Earth System Research Laboratory")
```
###
```{r vanishing-sea-ice, eval=T, echo=F, fig.height=8.5, fig.width = 14}
arcticseaice %>%
ggplot(.,aes(Year, Annual)) + theme_steve_web() + #,ymin=lb_annual, ymax=ub_annual
geom_ribbon(aes(ymin=-Inf, ymax=Annual),
alpha=0.3, fill="skyblue3") +
geom_line(size=1.1, color="skyblue3", alpha = 0.9) +
ylab("Annual Sea Ice Extent (10^6 sq km)") +
scale_x_continuous(breaks = seq(1900, 2015, by = 5)) +
# geom_ribbon(alpha = I(0.2), color = I("black")) +
labs(title = "The Arctic Sea Ice is Rapidly Vanishing in Our Lifetime",
subtitle = "The Arctic shows no sign of returning to the reliably frozen region of recent past decades.",
caption = "Data: Connolly et al. (2017), ''Re-calibration of Arctic sea ice extent datasets using Arctic surface air temperature records''. *Hydrological Sciences Journal* 62(8): 1317--40.")
```
###
```{r sea-level-change, eval=T, echo=F, fig.height=8.5, fig.width = 14, warning =F}
sealevels %>%
ggplot(.,aes(year,y=adjlev,ymin = lb, ymax = ub)) + theme_steve_web() +
geom_ribbon(alpha = I(0.2), color = "black", fill="blue") + geom_line() +
scale_x_continuous(breaks = seq(1880, 2020, by = 10)) +
xlab("Year") + ylab("Cumulative Sea-Level Change (Inches)") +
geom_hline(yintercept = 0, linetype = "dashed") +
labs(title = "Global Average Absolute Sea Level Change, 1880 to 2013",
subtitle = "Absolute sea level change refers to the height of the ocean surface regardless of whether nearby land is rising or falling.",
caption = "Data: CSIRO via EPA.")
```
###
```{r very-stupid-graph, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
GTTS %>%
filter(Source == "GISTEMP") %>%
mutate(Mean = ((9/5)*Mean) + 58) %>%
ggplot(.,aes(Year,Mean)) + geom_line() +
geom_smooth(method="loess") +
scale_x_continuous(breaks=seq(1880, 2015, by = 5)) +
ylim(-0.5, 100) +
theme_steve_web() +
xlab("Year") + ylab("Average Temperature (in Fahrenheit)") +
labs(title = "A Very Stupid Graph on How Global Temperatures Have Changed Over Time, 1880-2016",
subtitle = "You can easily ''lie'' with data by misrepresenting scale and, importantly, context.",
caption = "Data: Global Temperature Time Series. Inspiration: National Review Online (https://twitter.com/NRO/status/676516015078039556)")
```
###
```{r mean-temperature-anomalies, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
GTTS %>%
filter(Source == "GISTEMP") %>%
# mutate(Mean = ((9/5)*Mean) + 58) %>%
ggplot(.,aes(Year,Mean)) + geom_line() +
geom_smooth(method="loess") +
scale_x_continuous(breaks=seq(1880, 2015, by = 5)) +
# ylim(-0.5, 4.1) +
# scale_x_date(date_breaks = "10 years", date_minor_breaks = "2 months", date_labels = "%Y") +
theme_steve_web() +
# geom_hline(yintercept = 2, linetype = "dashed") +
# geom_hline(yintercept = 4, linetype = "dashed") +
# annotate("text", x= 2016, hjust=1, y = 2.1, label = "William Nordhaus, 1977 (c.f. CNN): ''Rising seas, mass extinctions, super droughts, increased wildfires, intense hurricanes, decreased crops and fresh water''") +
annotate("text", x= 2016, hjust=1, y = 0.025,
label = "1950-1980 Base Period",
family="Open Sans") +
# annotate("text", x=2016, hjust = 1, y=4.1, label = "World Bank: ''substantial species extinction, extensive loss of ecosystem functioning, large risks to global and regional food security''") +
labs(title = "Annual Mean Temperature Anomalies (in Celsius) Relative to 1950-1980 Base Period",
subtitle = "Thing is we've known about this for like the past 30 years and...",
caption = "Data: Global Temperature Time Series") +
geom_hline(yintercept = 0, linetype = "dashed")
```
###
```{r mean-temperature-anomalies-context, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
GTTS %>%
filter(Source == "GISTEMP") %>%
ggplot(.,aes(Year,Mean)) + geom_line() +
geom_smooth(method="loess") +
scale_x_continuous(breaks=seq(1880, 2015, by = 5)) +
ylim(-0.5, 4.1) +
# scale_x_date(date_breaks = "10 years", date_minor_breaks = "2 months", date_labels = "%Y") +
theme_steve_web() +
geom_hline(yintercept = 2, linetype = "dashed") +
geom_hline(yintercept = 4, linetype = "dashed") +
annotate("text", x= 2016, hjust=1, y = 2.1, label = "William Nordhaus, 1977 (c.f. CNN): ''Rising seas, mass extinctions, super droughts, increased wildfires, intense hurricanes, decreased crops and fresh water''",
family="Open Sans") +
annotate("text", x= 2016, hjust=1, y = 0.1, label = "1950-1980 Base Period",
family = "Open Sans") +
annotate("text", x=2016, hjust = 1, y=4.1, label = "World Bank: ''substantial species extinction, extensive loss of ecosystem functioning, large risks to global and regional food security''",
family = "Open Sans") +
labs(title = "Annual Mean Temperature Anomalies (in Celsius) Relative to 1950-1980 Base Period",
subtitle = "Thing is we've known about this for like the past 30 years and...",
caption = "Data: Global Temperature Time Series") +
geom_hline(yintercept = 0, linetype = "dashed")
```
###
```{r clemson-weather-2017-1950-2018, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F, message=F}
Clemson <- read_csv("https://gist.githubusercontent.com/svmiller/80a8837ec169b5cb853b0991a0f82a18/raw/fb1e6fe001b5beee0678478547a2bd7c7a1bf64a/clemson-weather-data.csv")
Clemson %>%
mutate(date = as.Date(date),
year = lubridate::year(date),
month = lubridate::month(date),
day = lubridate::day(date),
yd = lubridate::yday(date),
tmax = celsius.to.fahrenheit(value/10)) -> Clemsonweatherdata
Clemsonweatherdata %>%
filter(year < 2017) %>%
filter(!(month == 2 & day == 29)) %>%
select(date, year:yd, everything()) %>%
group_by(yd) %>%
mutate(
upper = max(tmax, na.rm = TRUE), # identify max value for each day
lower = min(tmax, na.rm = TRUE), # identify min value for each day
avg = mean(tmax, na.rm = TRUE), # calculate mean value for each day
se = sd(tmax, na.rm = TRUE) / sqrt(length(tmax)), # calculate standard error of mean
avg_upper = avg + (qt(.975, df = n()) * se), # calculate 95% CI for mean
avg_lower = avg - (qt(.975, df = n()) * se) # calculate 95% CI for mean
) -> past_data
Clemsonweatherdata %>%
filter(year == 2017) %>%
group_by(year) %>% # create matching x-axis as historical data
ungroup() -> c17
# create dataframe that represents the lowest temp for each day for the historical data
past_lows <- past_data %>%
group_by(yd) %>%
summarise(past_low = min(tmax, na.rm = TRUE)) # identify lowest temp for each day from 1995-2013
# create dataframe that identifies the days in 2014 in which the temps were lower than all previous 19 years
present_lows <- c17 %>%
left_join(past_lows) %>% # merge historical lows to current year low data
mutate(record = ifelse(tmax < past_low, "Y", "N")) %>% # identifies if current year was record low
filter(record == "Y") # filter for days that represent current year record lows
# create dataframe that represents the highest temp for each day for the historical data
past_highs <- past_data %>%
group_by(yd) %>%
summarise(past_high = max(tmax, na.rm = TRUE)) # identify highest temp for each day from 1995-2013
# create dataframe that identifies the days in 2014 in which the temps were higher than all previous 19 years
present_highs <- c17 %>%
left_join(past_highs) %>% # merge historical highs to current year low data
mutate(record = ifelse(tmax > past_high, "Y", "N")) %>% # identifies if current year was record high
filter(record == "Y") # filter for days that represent current year record highs
# function to turn y-axis labels into degree formatted values
dgr_fmt <- function(x, ...) {
parse(text = paste(x, "*degree", sep = ""))
}
# create y-axis variable
a <- dgr_fmt(seq(0, 110, by = 10))
# create a small dataframe to represent legend symbol for 2017 Temperature
legend_data <- data.frame(x = seq(175, 182), y = rnorm(8, 15, 2))
# create dates for last day of each month
last_days <- c17 %>%
group_by(month) %>%
slice(last(day)) %>%
.$yd
ggplot(past_data, aes(yd, tmax)) +
theme_steve_web() +
theme(plot.background = element_blank(),
panel.grid.minor = element_blank(),
panel.grid.major = element_blank(),
# panel.border = element_blank(),
# panel.background = element_blank(),
# axis.ticks = element_blank(),
# #axis.text = element_blank(),
# axis.title = element_blank()
) +
geom_linerange(past_data,
mapping = aes(x = yd, ymin = lower, ymax = upper),
colour = "wheat2", alpha=.1) +
geom_linerange(past_data,
mapping = aes(x = yd, ymin = avg_lower, ymax = avg_upper),
colour = "wheat4") +
geom_line(c17, mapping = aes(x = yd, y = tmax, group = 1)) +
geom_vline(xintercept = 0, colour = "wheat4", linetype=1, size=1) +
geom_hline(yintercept = seq(0, 110, by = 10), colour = "white", linetype = 1) +
geom_vline(xintercept = last_days, colour = "wheat4", linetype = 3, size = .5) +
coord_cartesian(ylim = c(0, 110)) +
scale_y_continuous(breaks = seq(0, 110, by = 10), labels = a) +
scale_x_continuous(expand = c(0, 0),
breaks = c(15, 45, 75, 105, 135, 165, 195, 228, 258, 288, 320, 350),
labels = month.name) +
xlab("") + ylab("Daily High (in Fahrenheit)") +
geom_point(data = present_lows, aes(x = yd, y = tmax), colour = "blue3") +
geom_point(data = present_highs, aes(x = yd, y = tmax), colour = "firebrick3") +
# annotate("segment", x = 78, xend = 84, y = 20, yend = 17, colour = "blue3") +
# annotate("text", x = 86, y = 15, label = "We had 23 days that were \nthe coldest since 1995", size = 3, colour = "blue3", hjust = 0) +
# annotate("segment", x = 268, xend = 274, y = 80, yend = 84, colour = "firebrick3") +
# annotate("text", x = 276, y = 84, label = "We had 18 days that were \nthe warmest since 1995", size = 3, colour = "firebrick3", hjust = 0) +
ggtitle("Clemson's 2017 Temperatures Relative to the 1950-1980 Period",
subtitle = "Clemson had an unusually mild winter in 2017 in which the city saw 11 record highs from January to March relative to the 1950-1980 period.") +
labs(caption = "Source: NOAA. Inspiration: https://github.com/bradleyboehmke/Dayton-Weather-2018\nNote: red/blue dots indicate record highs/lows relative to 1950-1980 period.") +
# theme(
# plot.title = element_text(face = "bold", colour = "#3C3C3C", size = 20),
# plot.subtitle = element_text(size = 9, color = "#3F3F3F"),
# plot.caption = element_text(size = 6, color = "#3F3F3F", hjust = 0)
# ) +
annotate("segment", x = 181, xend = 181, y = 5, yend = 25, colour = "wheat2", size=3) +
annotate("segment", x = 181, xend = 181, y = 12, yend = 18, colour = "wheat4", size=3) +
geom_line(data=legend_data, aes(x=x,y=y)) +
annotate("segment", x = 183, xend = 185, y = 17.7, yend = 17.7, colour = "wheat4", size=.5) +
annotate("segment", x = 183, xend = 185, y = 12.2, yend = 12.2, colour = "wheat4", size=.5) +
annotate("segment", x = 185, xend = 185, y = 12.2, yend = 17.7, colour = "wheat4", size=.5) +
annotate("text", x = 196, y = 14.75, label = "NORMAL RANGE", size=2, colour="gray30") +
annotate("text", x = 172, y = 14.75, label = "2017\nTEMPERATURE", hjust=1, size=2, colour="gray30") +
annotate("text", x = 193, y = 25, label = "RECORD HIGH", size=2, colour="gray30") +
annotate("text", x = 193, y = 5, label = "RECORD LOW", size=2, colour="gray30")
```
###
```{r ozone-depletion, eval=T, echo=F, fig.height = 8.5, fig.width=15, warning=F}
odgi %>%
filter(Category == "ODGI(new in 2012) Antarctic" | Category == "ODGI(new in 2012) Mid-Lat") %>%
rename(Metric = Category) %>%
ggplot(.,aes(Year, Value, group=Metric, color=Metric, linetype=Metric)) + theme_steve_web() +
geom_line(size=1.5) +
xlab("Year") + ylab("Ozone-Depleting Gas Index") +
scale_x_continuous(breaks=seq(1990, 2015, by=5)) +
theme(legend.position = "bottom") +
labs(title = "Ozone Depletion Constitutes a (Partial) Success on an Issue Notorious for Collective Action Problems",
subtitle = "Overall, the ODGI-A/ODGI-ML and sum chlorines (in ppts) has fallen, as have several particular/conspicuous chlorines (e.g. CFC-11 and CFC-12) even as others (like halon and HCFC) have slightly risen.",
caption = "Data: NOAA Ozone Depleting Gas Index")
```
# Collective Action and the Environment
### Collective Action and the Environment
Remember the prisoner's dilemma? The environment looks a lot like that.
- Mutual cooperation is the Pareto optimal outcome.
- Defection is the dominant strategy.
- Benefits are diffuse; costs are concentrated.
- Temptations to free-ride are real.
### Collective Action and the Environment
Environmental politics are unique in that our choices produce **externalities.**
- i.e. a cost/benefit to a third-party not involved in the choice.
If a country pumps CFCs/CO2 into the atmosphere, or a firm dumps waste into an important waterway, others bear those costs despite not being involved in the "transaction."
- Likewise, litter-pickup volunteers create an externality for their charity.
### The Environment as Public Good
Many environmental issues assume the form of public goods/public bads.
- Nonexcludable
- Nonrivalrous
These mostly arise from nature.
- i.e. we share one atmosphere, one climate, one ozone layer, etc...
## The Environment as Commons
### The Environment as Commons
The environment was an unregulated "common" for the longest time.
- Countries/actors were free to use/pollute as they saw fit.
Recent efforts have tried to rein this in:
- Kyoto Protocol (1997)
- Emissions Trading Scheme (2005)
### The Environment as Commons
However, these advancements have important limitations.
- Kyoto binds only those that have signed it.
- Countries like Canada and Russia even opted out.
- The U.S. signed the protocol but never ratified it.
- "Cap-and-trade" harnesses private incentives but it's not clear how cost-effective they are.
- They further may not matter "overall."
### The Environment as Commons
Other environmental issues (prominently: fishing) involve **common-pool resources.**
- i.e. resources are non-excludable, but rivalrous.
Self-interested actors pursue conventions amid this problem.
- You'll notice: it's still a prisoner's dilemma.
## Solving Collective Action Problems
### Solving Collective Action Problems
Collective action problems are tough, but not impossible.
### The Importance of Group Size and Concentration
Collective action problems, like acid rain, are tractable in smaller groups and when externalities are concentrated.
- The costs of acid rain emissions fell largely on those that were the core of the problem.
- The actors involved were either isolated (e.g. US/Canada) or concentrated in Europe.
- LRTAP did well to address the problem of acid rain, at least in developed/Western countries.
- China and India still have these problems, though.
###
```{r sulfure-dioxide, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
so2data %>%
ggplot(.,aes(year, y=meanppb, ymin = lb, ymax= ub)) +
theme_steve_web() +
geom_ribbon(alpha = I(0.2), color = "black", fill="yellow4") + geom_line() +
xlab("Year") + ylab("Sulfur Dioxide Concentration (ppb)") +
scale_x_continuous(breaks = seq(1980, 2016, by = 4)) +
geom_hline(yintercept = 75, linetype = "dashed") +
annotate("text", x= 1981, hjust=0, y = 83, label = "National Standard (75ppb)",
family="Open Sans") +
labs(title = "Sulfur Dioxide Emissions in the U.S. Have Decreased 87% Since 1980",
subtitle = "The U.S. has largely met the 75ppb line by 2010 in large measure because of the EPA and the concentrated costs acid rain pose on the populations of polluting countries.",
caption = "Data: Environmental Protetion Agency (EPA)")
```
###
```{r chlorofluorocarbons, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
odgi %>%
filter(Area == "Antarctic") %>%
filter(Category == "CFC-12" | Category == "CFC-11" | Category == "CFC-113") %>%
ggplot(.,aes(Year, Value, group=Category, color=Category, linetype=Category)) + theme_steve_web() +
geom_line(size=1.5) +
xlab("Year") + ylab("Chlorine Presence in Antarctica (in ppt)") +
scale_x_continuous(breaks=seq(1990, 2015, by=5)) +
theme(legend.position = "bottom") +
labs(title = "Chlorofluorocarbon (CFC) Emissions Have (Generally) Fallen As Well",
subtitle = "This followed because costs were concentrated on a few countries, as were the proposed benefits.",
caption = "Data: NOAA Ozone Depleting Gas Index")
```
### Solving the Prisoner's Dilemma
Same things that promote cooperation in the prisoner's dilemma help us understand cooperation on the environment.
- Iteration: repeated interaction raises costs associated with defection.
- Linkage: LRTAP was successful because it involved mutually dependent trading partners (e.g. US-Canada)
### Solving the Prisoner's Dilemma
It's useful to bundle public goods with private benefits.
- e.g. deforestation is usually linked with erosion control and ecotourism.
- e.g. DuPont and CFC bans.
Prisoner's dilemmas become tractable with the emergence of "privileged groups."
- i.e. why the U.S. and China are key actors on the future of environmental politics.
###
```{r co2_emissions_country, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
WDI(country = "all", indicator = c("en.atm.co2e.pc","EN.ATM.CO2E.KT"),
start = 1960, end = 2014, extra = FALSE, cache = NULL) %>% tbl_df() %>%
rename(co2epc = en.atm.co2e.pc,
co2e = EN.ATM.CO2E.KT) %>%
mutate(ccode = countrycode::countrycode(iso2c, "iso2c", "cown"),
ccode2 = countrycode::countrycode(country, "country.name","cown")) %>%
mutate(ccode = ifelse(is.na(ccode), ccode2, ccode)) %>%
# filter(!is.na(ccode)) %>%
group_by(year) %>%
mutate(worldco2e = max(co2e, na.rm=T)) %>%
filter(!is.na(ccode)) %>%
mutate(sumco2ey = sum(co2e, na.rm=T),
co2epert = co2e/worldco2e,
co2epertlab = paste0(round(co2epert*10),"%")) -> co2emissionscountry
co2emissionscountry %>%
arrange(-year, -co2epert) %>%
filter(year == 2014) %>%
head(10) %>%
mutate(labl = paste0(mround2(co2epert),"%")) %>%
ggplot(.,aes(reorder(country, -co2epert), co2epert)) + theme_steve_web() +
geom_bar(stat="identity", alpha=0.8, color="black", fill="#619cff") +
geom_text(aes(label=labl), vjust=-.5, colour="black",
position=position_dodge(.9), size=4) +
xlab("Country") + ylab("Country % of World Carbon Dioxide Emissions, 2014") +
labs(title = "Country Percentage of Carbon Dioxide Emissions, 2014",
subtitle = "China is the biggest volume emmiter of carbon dioxide and India, if you can believe it, is just eight-tenths of a percent from being the median.",
caption = "Data: Carbon Dioxide Information Analysis Center, Environmental Sciences Division, Oak Ridge National Laboratory.")
```
###
```{r co2_emissions_countrypc, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
co2emissionscountry %>%
arrange(-year, -co2epc) %>%
filter(year == 2014) %>%
head(10) %>%
mutate(labl = round(co2epc, 2)) %>%
ggplot(.,aes(reorder(country, -co2epc), co2epc)) + theme_steve_web() +
geom_bar(stat="identity", alpha=0.8, color="black", fill="#619cff") +
geom_text(aes(label=labl), vjust=-.5, colour="black",
position=position_dodge(.9), size=4) +
xlab("Country") + ylab("Country Carbon Dioxide Emissions, 2014 (Kilotons per Capita)") +
labs(title = "Country Carbon Dioxide Emissions per Capita, 2014",
subtitle = "China might be the biggest emitter, but it's the Gulf states (and the United States) that dominate this list of per capita emitters.",
caption = "Data: Carbon Dioxide Information Analysis Center, Environmental Sciences Division, Oak Ridge National Laboratory.")
```
###
```{r co2_emissions_select, eval=T, echo=F, fig.height = 8.5, fig.width=14, warning=F}
co2emissionscountry %>%
arrange(-year, -co2e) %>%
filter(iso2c %in% c("CN","US","IN","GB","JP","DE","RU")) %>%
rename(Country = country) %>%
ggplot(.,aes(year,co2epc, color=Country,linetype=Country)) +
theme_steve_web() + geom_line(size=1.1) +
scale_color_manual(values = pal("google")) +
scale_x_continuous(breaks = seq(1960, 2015, by = 5)) +
xlab("Year") + ylab("Country Carbon Dioxide Emissions, 2014 (Kilotons per Capita)") +
labs(title = "Carbon Dioxide Emissions per Capita for Select Countries, 1960-2014",
subtitle = "The U.S. has always been a high-volume emitter and large per capita emitter as well. The emissions for China, always a large-population country, have risen concurrent with its development.",
caption = "Data: Carbon Dioxide Information Analysis Center, Environmental Sciences Division, Oak Ridge National Laboratory.")
```
# Conclusion
### Conclusion
Environmental politics are a prisoner's dilemma.
- Cooperation is Pareto optimal but defection is dominant strategy.
- Costs get concentrated as benefits are diffuse.
- This takes peculiar forms when considering externalities and common-pool resources.
Prisoner's dilemmas are solvable, but still tricky.
- Important to link public goods with private benefits.
- The "dilemma" gets magnified the larger the group.
You can’t perform that action at this time.