my-markdown-library 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. checksums.yaml +7 -0
  2. data/F24LS_md/ Lecture 4 - Public.md +347 -0
  3. data/F24LS_md/Lecture 1 - Introduction and Overview.md +327 -0
  4. data/F24LS_md/Lecture 10 - Development_.md +631 -0
  5. data/F24LS_md/Lecture 11 - Econometrics.md +345 -0
  6. data/F24LS_md/Lecture 12 - Finance.md +692 -0
  7. data/F24LS_md/Lecture 13 - Environmental Economics.md +299 -0
  8. data/F24LS_md/Lecture 15 - Conclusion.md +272 -0
  9. data/F24LS_md/Lecture 2 - Demand.md +349 -0
  10. data/F24LS_md/Lecture 3 - Supply.md +329 -0
  11. data/F24LS_md/Lecture 5 - Production C-D.md +291 -0
  12. data/F24LS_md/Lecture 6 - Utility and Latex.md +440 -0
  13. data/F24LS_md/Lecture 7 - Inequality.md +607 -0
  14. data/F24LS_md/Lecture 8 - Macroeconomics.md +704 -0
  15. data/F24LS_md/Lecture 8 - Macro.md +700 -0
  16. data/F24LS_md/Lecture 9 - Game Theory_.md +436 -0
  17. data/F24LS_md/summary.yaml +105 -0
  18. data/F24Lec_MD/LecNB_summary.yaml +206 -0
  19. data/F24Lec_MD/lec01/lec01.md +267 -0
  20. data/F24Lec_MD/lec02/Avocados_demand.md +425 -0
  21. data/F24Lec_MD/lec02/Demand_Steps_24.md +126 -0
  22. data/F24Lec_MD/lec02/PriceElasticity.md +83 -0
  23. data/F24Lec_MD/lec02/ScannerData_Beer.md +171 -0
  24. data/F24Lec_MD/lec02/demand-curve-Fa24.md +213 -0
  25. data/F24Lec_MD/lec03/3.0-CubicCostCurve.md +239 -0
  26. data/F24Lec_MD/lec03/3.1-Supply.md +274 -0
  27. data/F24Lec_MD/lec03/3.2-sympy.md +332 -0
  28. data/F24Lec_MD/lec03/3.3a-california-energy.md +120 -0
  29. data/F24Lec_MD/lec03/3.3b-a-really-hot-tuesday.md +121 -0
  30. data/F24Lec_MD/lec04/lec04-CSfromSurvey-closed.md +335 -0
  31. data/F24Lec_MD/lec04/lec04-CSfromSurvey.md +331 -0
  32. data/F24Lec_MD/lec04/lec04-Supply-Demand-closed.md +519 -0
  33. data/F24Lec_MD/lec04/lec04-Supply-Demand.md +514 -0
  34. data/F24Lec_MD/lec04/lec04-four-plot-24.md +34 -0
  35. data/F24Lec_MD/lec04/lec04-four-plot.md +34 -0
  36. data/F24Lec_MD/lec05/Lec5-Cobb-Douglas.md +131 -0
  37. data/F24Lec_MD/lec05/Lec5-CobbD-AER1928.md +283 -0
  38. data/F24Lec_MD/lec06/6.1-Sympy-Differentiation.md +253 -0
  39. data/F24Lec_MD/lec06/6.2-3D-utility.md +287 -0
  40. data/F24Lec_MD/lec06/6.3-QuantEcon-Optimization.md +399 -0
  41. data/F24Lec_MD/lec06/6.4-latex.md +138 -0
  42. data/F24Lec_MD/lec06/6.5-Edgeworth.md +269 -0
  43. data/F24Lec_MD/lec07/7.1-inequality.md +283 -0
  44. data/F24Lec_MD/lec07/7.2-historical-inequality.md +237 -0
  45. data/F24Lec_MD/lec08/macro-fred-api.md +313 -0
  46. data/F24Lec_MD/lec09/lecNB-prisoners-dilemma.md +88 -0
  47. data/F24Lec_MD/lec10/Lec10.2-waterguard.md +401 -0
  48. data/F24Lec_MD/lec10/lec10.1-mapping.md +199 -0
  49. data/F24Lec_MD/lec11/11.1-slr.md +305 -0
  50. data/F24Lec_MD/lec11/11.2-mlr.md +171 -0
  51. data/F24Lec_MD/lec12/Lec12-4-PersonalFinance.md +590 -0
  52. data/F24Lec_MD/lec12/lec12-1_Interest_Payments.md +267 -0
  53. data/F24Lec_MD/lec12/lec12-2-stocks-options.md +235 -0
  54. data/F24Lec_MD/lec13/Co2_ClimateChange.md +139 -0
  55. data/F24Lec_MD/lec13/ConstructingMAC.md +213 -0
  56. data/F24Lec_MD/lec13/EmissionsTracker.md +170 -0
  57. data/F24Lec_MD/lec13/KuznetsHypothesis.md +219 -0
  58. data/F24Lec_MD/lec13/RoslingPlots.md +217 -0
  59. data/F24Lec_MD/lec15/vibecession.md +485 -0
  60. data/F24Textbook_MD/00-intro/index.md +292 -0
  61. data/F24Textbook_MD/01-demand/01-demand.md +152 -0
  62. data/F24Textbook_MD/01-demand/02-example.md +131 -0
  63. data/F24Textbook_MD/01-demand/03-log-log.md +284 -0
  64. data/F24Textbook_MD/01-demand/04-elasticity.md +248 -0
  65. data/F24Textbook_MD/01-demand/index.md +15 -0
  66. data/F24Textbook_MD/02-supply/01-supply.md +203 -0
  67. data/F24Textbook_MD/02-supply/02-eep147-example.md +86 -0
  68. data/F24Textbook_MD/02-supply/03-sympy.md +138 -0
  69. data/F24Textbook_MD/02-supply/04-market-equilibria.md +204 -0
  70. data/F24Textbook_MD/02-supply/index.md +16 -0
  71. data/F24Textbook_MD/03-public/govt-intervention.md +73 -0
  72. data/F24Textbook_MD/03-public/index.md +10 -0
  73. data/F24Textbook_MD/03-public/surplus.md +351 -0
  74. data/F24Textbook_MD/03-public/taxes-subsidies.md +282 -0
  75. data/F24Textbook_MD/04-production/index.md +15 -0
  76. data/F24Textbook_MD/04-production/production.md +178 -0
  77. data/F24Textbook_MD/04-production/shifts.md +296 -0
  78. data/F24Textbook_MD/05-utility/budget-constraints.md +166 -0
  79. data/F24Textbook_MD/05-utility/index.md +15 -0
  80. data/F24Textbook_MD/05-utility/utility.md +136 -0
  81. data/F24Textbook_MD/06-inequality/historical-inequality.md +253 -0
  82. data/F24Textbook_MD/06-inequality/index.md +15 -0
  83. data/F24Textbook_MD/06-inequality/inequality.md +226 -0
  84. data/F24Textbook_MD/07-game-theory/bertrand.md +257 -0
  85. data/F24Textbook_MD/07-game-theory/cournot.md +333 -0
  86. data/F24Textbook_MD/07-game-theory/equilibria-oligopolies.md +96 -0
  87. data/F24Textbook_MD/07-game-theory/expected-utility.md +61 -0
  88. data/F24Textbook_MD/07-game-theory/index.md +19 -0
  89. data/F24Textbook_MD/07-game-theory/python-classes.md +340 -0
  90. data/F24Textbook_MD/08-development/index.md +35 -0
  91. data/F24Textbook_MD/09-macro/CentralBanks.md +101 -0
  92. data/F24Textbook_MD/09-macro/Indicators.md +77 -0
  93. data/F24Textbook_MD/09-macro/fiscal_policy.md +36 -0
  94. data/F24Textbook_MD/09-macro/index.md +14 -0
  95. data/F24Textbook_MD/09-macro/is_curve.md +76 -0
  96. data/F24Textbook_MD/09-macro/phillips_curve.md +70 -0
  97. data/F24Textbook_MD/10-finance/index.md +10 -0
  98. data/F24Textbook_MD/10-finance/options.md +178 -0
  99. data/F24Textbook_MD/10-finance/value-interest.md +60 -0
  100. data/F24Textbook_MD/11-econometrics/index.md +16 -0
  101. data/F24Textbook_MD/11-econometrics/multivariable.md +218 -0
  102. data/F24Textbook_MD/11-econometrics/reading-econ-papers.md +25 -0
  103. data/F24Textbook_MD/11-econometrics/single-variable.md +483 -0
  104. data/F24Textbook_MD/11-econometrics/statsmodels.md +58 -0
  105. data/F24Textbook_MD/12-environmental/KuznetsHypothesis-Copy1.md +187 -0
  106. data/F24Textbook_MD/12-environmental/KuznetsHypothesis.md +187 -0
  107. data/F24Textbook_MD/12-environmental/MAC.md +254 -0
  108. data/F24Textbook_MD/12-environmental/index.md +36 -0
  109. data/F24Textbook_MD/LICENSE.md +11 -0
  110. data/F24Textbook_MD/intro.md +26 -0
  111. data/F24Textbook_MD/references.md +25 -0
  112. data/F24Textbook_MD/summary.yaml +414 -0
  113. metadata +155 -0
@@ -0,0 +1,187 @@
1
+ ---
2
+ title: KuznetsHypothesis-Copy1
3
+ type: textbook
4
+ source_path: content/12-environmental/KuznetsHypothesis-Copy1.ipynb
5
+ chapter: 12
6
+ ---
7
+
8
+ ```python
9
+ # Importing packages
10
+
11
+ from datascience import *
12
+ import matplotlib.pyplot as plt
13
+ import numpy as np
14
+ import pandas as pd
15
+ from matplotlib import patches
16
+ %matplotlib inline
17
+ ```
18
+
19
+ # Environmental Kuznets Curve Hypothesis
20
+
21
+ The Environmental Kuznets curve hypothesis that the economic development of a nation is associated with a downward-facing U-shape. The Y-axis is in terms of the level of environmental degradation (e.g pollution, water quality, deforestation. The X-axis would be the GDP/capita. The idea is that the environmental degradation worsens, until a certain level of income, and after which it gets better. In the US this could be seen in terms of air or water quality, where the skies or rivers were very polluted in the 1960s, until the Clean Air Act and Clean Water Act were passed and Air Quality and Water Quality improved. Another motivation for the downward slope would be the idea that at some point a wealthier society demands environmental improvements.
22
+ However - could this hold for the potentially most important Pollutant C02, the main driver of anthropogenic climate change. Controversially the impacts of global CO2 pollution are not experienced locally, but are experienced as global effects. So it is not clear whether the Environmental Kuznets hypothesis will hold.
23
+
24
+ Today, we'll look to build an C02 Kuznets Curve (as below) for an *association* between the amount of CO2 emitted per capita (t/CO2) and the growing GDP per capita (USD). This dataset is collected from Our World in Data, a great source of all sorts of data types!
25
+
26
+ ![kuznets.png](kuznets.png)
27
+
28
+ ## Building our own Environmental Kuznets Curve
29
+
30
+ We start by importing data on GDP per capita and Per Capita CO2 emissions for every country in the world for as long as it has been recorded.
31
+
32
+ ```python
33
+ co2_table = Table.read_table('co2-emissions-vs-gdp.csv').drop('145446-annotations','Total population (Gapminder, HYDE & UN)','Code')
34
+ co2_table = co2_table.relabeled('Entity', 'Country')
35
+ co2_table
36
+ ```
37
+
38
+ ### Low Income Countries
39
+ Let's start by selecting a set of Low Income Countries to graph a scatter plot on the movement of CO2 intensity per capita based on GDP per capita.
40
+
41
+ ```python
42
+ #Low-Income Nations
43
+ LIH_array = make_array('Haiti', 'Afghanistan','Rwanda','Pakistan', 'Nicaragua')
44
+ LIH_table = co2_table.where('Country', are.contained_in(LIH_array))
45
+ LIH_table = LIH_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
46
+ plt.figure(figsize = (18,12), dpi=250)
47
+ LIH_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
48
+ ```
49
+
50
+ Note that each dot represents a nation at a given level of emissions and GDP per capita
51
+
52
+ With these three countries we see a few different stories:
53
+ - In Afghanistan, Haiti and Rwanda we see little income growth and little CO2 intensity growth with a slight upward trend
54
+ - In Nicaragua we see some jumping around, in fact Nicaragua GDP per capita has gone up and down, as has CO2 per capita
55
+ - In Pakistan, a larger and more populous country we see strong linear upward growth in both GDP per capita and CO2 per capita, with no signs of turning down
56
+
57
+ In these countries it is hard to tell the complete story without the exact time trend.
58
+
59
+ ### BRICS
60
+ Let's plot a similar scatter plot to examine some of the BRICS countries (rapidly growing upper middle income countries).
61
+
62
+ ```python
63
+ BRICS_array = make_array('Brazil','Russia','India','China','South Africa')
64
+ BRICS_table = co2_table.where('Country', are.contained_in(BRICS_array))
65
+ BRICS_table = BRICS_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
66
+ plt.figure(figsize = (18,12), dpi=250)
67
+ BRICS_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
68
+ ```
69
+
70
+ The BRICS nations seem to have a variety of development pathways but all show the linear trend of increasing emissions as wealth grows.
71
+ - Russia has an interesting dip while GDP per capita decrease and then increase again
72
+ - South Africa has a recent period where growth in both GDP per capita and CO2 per capita have stagnated
73
+ - China and India show linearly increasing trends, with China both wealthier and more CO2 intensive
74
+
75
+ ## Individual country graphs
76
+ Let's look at some individual countries, starting with the United States.
77
+ We can plot both total and logged quantities on a scatter plot:
78
+
79
+ ### United States
80
+
81
+ ```python
82
+ #US Example + LOG
83
+ US_table = co2_table.where('Country', 'United States').where('Year', are.between(1800,2018))
84
+ US_table = US_table.with_column('LogGDP', np.log(US_table.column('GDP per capita'))).with_column('LogCO2',np.log(US_table.column('Per capita CO2 emissions')))
85
+ US_table.scatter('GDP per capita', 'Per capita CO2 emissions')
86
+ US_table.scatter('LogGDP', 'LogCO2')
87
+ plt.figure(figsize = (18,12), dpi=250)
88
+ ```
89
+
90
+ **Looks like we have a curve!**
91
+
92
+ In the case of the US it does indeed look like the C02 per capita does indeed start to deline after about $40,000
93
+ Somewhere around 2000-2004 the CO2 emissions leveled off and then began to decline.
94
+
95
+ ### China
96
+
97
+ In COP26, China has been a large part of the discussion (and emissions). Let's have a look at their scatter plot!
98
+
99
+ ```python
100
+ #China Example + LOG
101
+ NO_table = co2_table.where('Country', 'China').where('Year', are.between(1800,2018))
102
+ NO_table = NO_table.with_column('LogGDP', np.log(NO_table.column('GDP per capita'))).with_column('LogCO2',np.log(NO_table.column('Per capita CO2 emissions')))
103
+ NO_table.scatter('GDP per capita', 'Per capita CO2 emissions')
104
+ NO_table.scatter('LogGDP', 'LogCO2')
105
+ plt.figure(figsize = (18,12), dpi=250)
106
+ ```
107
+
108
+ Indeed it appears that China has an inflection point and is starting to level off in the Carbon intensity per capita
109
+
110
+ ### India
111
+
112
+ What about India's scatter plot?
113
+
114
+ ```python
115
+ #India Example + LOG
116
+ NO_table = co2_table.where('Country', 'India').where('Year', are.between(1800,2018))
117
+ NO_table = NO_table.with_column('LogGDP', np.log(NO_table.column('GDP per capita'))).with_column('LogCO2',np.log(NO_table.column('Per capita CO2 emissions')))
118
+ NO_table.scatter('GDP per capita', 'Per capita CO2 emissions')
119
+ NO_table.scatter('LogGDP', 'LogCO2')
120
+ plt.figure(figsize = (18,12), dpi=250)
121
+ ```
122
+
123
+ Let's look at a set of other High Income Nations:
124
+
125
+ ```python
126
+ HIN_array = make_array('United States', 'Netherlands', 'United Kingdom','Germany','Canada')
127
+ HIN_table = co2_table.where('Country', are.contained_in(HIN_array))
128
+ HIN_table = HIN_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
129
+ HIN_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
130
+ plt.figure(figsize = (18,12), dpi=250)
131
+ ```
132
+
133
+ As in the US and Norway, these nations have experienced a boom, stagnation, and now to some extent a downward trend. Let's finally plot all the previously observed nations together in one singular scatter plot:
134
+
135
+ ```python
136
+ ALL_array = np.append((np.append(LIH_array,BRICS_array)), HIN_array)
137
+ ALL_table = co2_table.where('Country', are.contained_in(ALL_array))
138
+ ALL_table = ALL_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
139
+ ALL_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
140
+ plt.figure(figsize = (18,12), dpi=250)
141
+ ```
142
+
143
+ Here we see evidence for an Environmental Kuznets Curve.
144
+
145
+ It seems, at least to some extent, that as nations develop economically, the level of environmental degradation reaches a peak and then declines, mapping a downward-facing U-curve.
146
+
147
+ ## Criticism of the Environmental Kuznets Curve Hypothesis
148
+
149
+ Some questions we ought to ask ourselves in the end are:
150
+ * Do all types of environmental degradation follow the curve? What if we plot Energy, Land, & Resource usage?
151
+ * What we plotted today shows the ratio between GDP and CO2 per capita, but what about the *absolute* numbers of emissions?
152
+ * What is the true long-term shape of the curve? Could it reshape itself to an "N" as an economy passes a certain threshold?
153
+ * What about its applicability on a global scale? Knowing that the HINs have a habit of exporting pollution to LINs, what will happen as LIN grow economically?
154
+
155
+ These are just some questions environmental economists have asked themselves throughout the years since the curve was hypothesized in 1955. Some, including Perman and Stern (2003) conclude that the level of environmental degradation has much more to do with a constant "battle" between scale and time than income alone. As nations scale up (BRICS, for instance) the growth results in higher emissions, while countries with lower growth (LIN & HIN) seem more influenced by the "time-effect", which results in lower emissions. Others, among Krueger & Grossman, argue that there is "no evidence that environmental quality deteriorates steadily with economic growth."
156
+
157
+ More on these theories can be found in the recommended readings below.
158
+
159
+ As data scientists motivated to help heal the plant with the tools of environmental economics, we can help to find these answers!
160
+
161
+ ## What's next?
162
+
163
+ If you are interested in this area, there are even more fascinating applications of Data Science to environmental topics such as: finding the social cost of carbon, the valuation of our environment, and the economics of emissions trading. Besides purely economical modeling, the field of environmental data science is rapidly growing as we collect more and more data on our planet and its resources. Applying the power of Satellite Imagery, Machine Learning, and Geographic Information Systems (GIS), one can follow both technology and policy-based paths, both ensured to have a positive impact in shaping a data-driven, sustainable future.
164
+
165
+ ## Further recommended readings
166
+
167
+ Levelized Cost of Carbon Abatement: An Improved Cost-Assessment Methodology for a Net-Zero Emissions World (also the main source of this Jupyter Notebook)
168
+
169
+ https://www.energypolicy.columbia.edu/publications/levelized-cost-carbon-abatement-improved-cost-assessment-methodology-net-zero-emissions-world/
170
+
171
+ Dynamic vs. Static costs are described further in K.Gillingham & J.H Stock's The Cost of Reducing Greenhouse Gas Emissions (italic) from 2018. - A highly recommended reading out of scope for this class.
172
+
173
+ https://scholar.harvard.edu/files/stock/files/gillingham_stock_cost_080218_posted.pdf
174
+
175
+
176
+ EPA article on the Economics of Climate Change:
177
+ https://www.epa.gov/environmental-economics/economics-climate-change
178
+
179
+ Draw your own curve program:
180
+ https://tamc.github.io/macc/
181
+
182
+ Abatement curve for crops:
183
+ https://github.com/aj-sykes92/ggmacc/blob/main/README_files/figure-gfm/full-macc-1.png
184
+
185
+
186
+ Aalborg University's software:
187
+ https://github.com/matpri/EPLANoptMAC
@@ -0,0 +1,187 @@
1
+ ---
2
+ title: KuznetsHypothesis
3
+ type: textbook
4
+ source_path: content/12-environmental/KuznetsHypothesis.ipynb
5
+ chapter: 12
6
+ ---
7
+
8
+ ```python
9
+ # HIDDEN
10
+ #Importing packages
11
+ from datascience import *
12
+ import matplotlib.pyplot as plt
13
+ import numpy as np
14
+ import pandas as pd
15
+ from matplotlib import patches
16
+ %matplotlib inline
17
+ ```
18
+
19
+ # Environmental Kuznets Curve Hypothesis
20
+
21
+ The Environmental Kuznets curve hypothesis that the economic development of a nation is associated with a downward-facing U-shape. The Y-axis is in terms of the level of environmental degradation (e.g pollution, water quality, deforestation. The X-axis would be the GDP/capita. The idea is that the environmental degradation worsens, until a certain level of income, and after which it gets better. In the US this could be seen in terms of air or water quality, where the skies or rivers were very polluted in the 1960s, until the Clean Air Act and Clean Water Act were passed and Air Quality and Water Quality improved. Another motivation for the downward slope would be the idea that at some point a wealthier society demands environmental improvements.
22
+ However - could this hold for the potentially most important Pollutant C02, the main driver of anthropogenic climate change. Controversially the impacts of global CO2 pollution are not experienced locally, but are experienced as global effects. So it is not clear whether the Environmental Kuznets hypothesis will hold.
23
+
24
+ Today, we'll look to build an C02 Kuznets Curve (as below) for an *association* between the amount of CO2 emitted per capita (t/CO2) and the growing GDP per capita (USD). This dataset is collected from Our World in Data, a great source of all sorts of data types!
25
+
26
+ ![kuznets.png](kuznets.png)
27
+
28
+ ## Building our own Environmental Kuznets Curve
29
+
30
+ We start by importing data on GDP per capita and Per Capita CO2 emissions for every country in the world for as long as it has been recorded.
31
+
32
+ ```python
33
+ co2_table = Table.read_table('co2-emissions-vs-gdp.csv').drop('145446-annotations','Total population (Gapminder, HYDE & UN)','Code')
34
+ co2_table = co2_table.relabeled('Entity', 'Country')
35
+ co2_table
36
+ ```
37
+
38
+ ### Low Income Countries
39
+ Let's start by selecting a set of Low Income Countries to graph a scatter plot on the movement of CO2 intensity per capita based on GDP per capita.
40
+
41
+ ```python
42
+ #Low-Income Nations
43
+ LIH_array = make_array('Haiti', 'Afghanistan','Rwanda','Pakistan', 'Nicaragua')
44
+ LIH_table = co2_table.where('Country', are.contained_in(LIH_array))
45
+ LIH_table = LIH_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
46
+ plt.figure(figsize = (18,12), dpi=250)
47
+ LIH_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
48
+ ```
49
+
50
+ Note that each dot represents a nation at a given level of emissions and GDP per capita
51
+
52
+ With these three countries we see a few different stories:
53
+ - In Afghanistan, Haiti and Rwanda we see little income growth and little CO2 intensity growth with a slight upward trend
54
+ - In Nicaragua we see some jumping around, in fact Nicaragua GDP per capita has gone up and down, as has CO2 per capita
55
+ - In Pakistan, a larger and more populous country we see strong linear upward growth in both GDP per capita and CO2 per capita, with no signs of turning down
56
+
57
+ In these countries it is hard to tell the complete story without the exact time trend.
58
+
59
+ ### BRICS
60
+ Let's plot a similar scatter plot to examine some of the BRICS countries (rapidly growing upper middle income countries).
61
+
62
+ ```python
63
+ BRICS_array = make_array('Brazil','Russia','India','China','South Africa')
64
+ BRICS_table = co2_table.where('Country', are.contained_in(BRICS_array))
65
+ BRICS_table = BRICS_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
66
+ plt.figure(figsize = (18,12), dpi=250)
67
+ BRICS_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
68
+ ```
69
+
70
+ The BRICS nations seem to have a variety of development pathways but all show the linear trend of increasing emissions as wealth grows.
71
+ - Russia has an interesting dip while GDP per capita decrease and then increase again
72
+ - South Africa has a recent period where growth in both GDP per capita and CO2 per capita have stagnated
73
+ - China and India show linearly increasing trends, with China both wealthier and more CO2 intensive
74
+
75
+ ## Individual country graphs
76
+ Let's look at some individual countries, starting with the United States.
77
+ We can plot both total and logged quantities on a scatter plot:
78
+
79
+ ### United States
80
+
81
+ ```python
82
+ #US Example + LOG
83
+ US_table = co2_table.where('Country', 'United States').where('Year', are.between(1800,2018))
84
+ US_table = US_table.with_column('LogGDP', np.log(US_table.column('GDP per capita'))).with_column('LogCO2',np.log(US_table.column('Per capita CO2 emissions')))
85
+ US_table.scatter('GDP per capita', 'Per capita CO2 emissions')
86
+ US_table.scatter('LogGDP', 'LogCO2')
87
+ plt.figure(figsize = (18,12), dpi=250)
88
+ ```
89
+
90
+ **Looks like we have a curve!**
91
+
92
+ In the case of the US it does indeed look like the C02 per capita does indeed start to deline after about $40,000
93
+ Somewhere around 2000-2004 the CO2 emissions leveled off and then began to decline.
94
+
95
+ ### China
96
+
97
+ In COP26, China has been a large part of the discussion (and emissions). Let's have a look at their scatter plot!
98
+
99
+ ```python
100
+ #China Example + LOG
101
+ NO_table = co2_table.where('Country', 'China').where('Year', are.between(1800,2018))
102
+ NO_table = NO_table.with_column('LogGDP', np.log(NO_table.column('GDP per capita'))).with_column('LogCO2',np.log(NO_table.column('Per capita CO2 emissions')))
103
+ NO_table.scatter('GDP per capita', 'Per capita CO2 emissions')
104
+ NO_table.scatter('LogGDP', 'LogCO2')
105
+ plt.figure(figsize = (18,12), dpi=250)
106
+ ```
107
+
108
+ Indeed it appears that China has an inflection point and is starting to level off in the Carbon intensity per capita
109
+
110
+ ### India
111
+
112
+ What about India's scatter plot?
113
+
114
+ ```python
115
+ #India Example + LOG
116
+ NO_table = co2_table.where('Country', 'India').where('Year', are.between(1800,2018))
117
+ NO_table = NO_table.with_column('LogGDP', np.log(NO_table.column('GDP per capita'))).with_column('LogCO2',np.log(NO_table.column('Per capita CO2 emissions')))
118
+ NO_table.scatter('GDP per capita', 'Per capita CO2 emissions')
119
+ NO_table.scatter('LogGDP', 'LogCO2')
120
+ plt.figure(figsize = (18,12), dpi=250)
121
+ ```
122
+
123
+ Let's look at a set of other High Income Nations:
124
+
125
+ ```python
126
+ HIN_array = make_array('United States', 'Netherlands', 'United Kingdom','Germany','Canada')
127
+ HIN_table = co2_table.where('Country', are.contained_in(HIN_array))
128
+ HIN_table = HIN_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
129
+ HIN_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
130
+ plt.figure(figsize = (18,12), dpi=250)
131
+ ```
132
+
133
+ As in the US and Norway, these nations have experienced a boom, stagnation, and now to some extent a downward trend. Let's finally plot all the previously observed nations together in one singular scatter plot:
134
+
135
+ ```python
136
+ ALL_array = np.append((np.append(LIH_array,BRICS_array)), HIN_array)
137
+ ALL_table = co2_table.where('Country', are.contained_in(ALL_array))
138
+ ALL_table = ALL_table.where('GDP per capita', are.above_or_equal_to(0)).where('Per capita CO2 emissions', are.above_or_equal_to(0))
139
+ ALL_table.scatter('GDP per capita', 'Per capita CO2 emissions',group='Country')
140
+ plt.figure(figsize = (18,12), dpi=250)
141
+ ```
142
+
143
+ Here we see evidence for an Environmental Kuznets Curve.
144
+
145
+ It seems, at least to some extent, that as nations develop economically, the level of environmental degradation reaches a peak and then declines, mapping a downward-facing U-curve.
146
+
147
+ ## Criticism of the Environmental Kuznets Curve Hypothesis
148
+
149
+ Some questions we ought to ask ourselves in the end are:
150
+ * Do all types of environmental degradation follow the curve? What if we plot Energy, Land, & Resource usage?
151
+ * What we plotted today shows the ratio between GDP and CO2 per capita, but what about the *absolute* numbers of emissions?
152
+ * What is the true long-term shape of the curve? Could it reshape itself to an "N" as an economy passes a certain threshold?
153
+ * What about its applicability on a global scale? Knowing that the HINs have a habit of exporting pollution to LINs, what will happen as LIN grow economically?
154
+
155
+ These are just some questions environmental economists have asked themselves throughout the years since the curve was hypothesized in 1955. Some, including Perman and Stern (2003) conclude that the level of environmental degradation has much more to do with a constant "battle" between scale and time than income alone. As nations scale up (BRICS, for instance) the growth results in higher emissions, while countries with lower growth (LIN & HIN) seem more influenced by the "time-effect", which results in lower emissions. Others, among Krueger & Grossman, argue that there is "no evidence that environmental quality deteriorates steadily with economic growth."
156
+
157
+ More on these theories can be found in the recommended readings below.
158
+
159
+ As data scientists motivated to help heal the plant with the tools of environmental economics, we can help to find these answers!
160
+
161
+ ## What's next?
162
+
163
+ If you are interested in this area, there are even more fascinating applications of Data Science to environmental topics such as: finding the social cost of carbon, the valuation of our environment, and the economics of emissions trading. Besides purely economical modeling, the field of environmental data science is rapidly growing as we collect more and more data on our planet and its resources. Applying the power of Satellite Imagery, Machine Learning, and Geographic Information Systems (GIS), one can follow both technology and policy-based paths, both ensured to have a positive impact in shaping a data-driven, sustainable future.
164
+
165
+ ## Further recommended readings
166
+
167
+ Levelized Cost of Carbon Abatement: An Improved Cost-Assessment Methodology for a Net-Zero Emissions World (also the main source of this Jupyter Notebook)
168
+
169
+ https://www.energypolicy.columbia.edu/publications/levelized-cost-carbon-abatement-improved-cost-assessment-methodology-net-zero-emissions-world/
170
+
171
+ Dynamic vs. Static costs are described further in K.Gillingham & J.H Stock's The Cost of Reducing Greenhouse Gas Emissions (italic) from 2018. - A highly recommended reading out of scope for this class.
172
+
173
+ https://scholar.harvard.edu/files/stock/files/gillingham_stock_cost_080218_posted.pdf
174
+
175
+
176
+ EPA article on the Economics of Climate Change:
177
+ https://www.epa.gov/environmental-economics/economics-climate-change
178
+
179
+ Draw your own curve program:
180
+ https://tamc.github.io/macc/
181
+
182
+ Abatement curve for crops:
183
+ https://github.com/aj-sykes92/ggmacc/blob/main/README_files/figure-gfm/full-macc-1.png
184
+
185
+
186
+ Aalborg University's software:
187
+ https://github.com/matpri/EPLANoptMAC
@@ -0,0 +1,254 @@
1
+ ---
2
+ title: MAC
3
+ type: textbook
4
+ source_path: content/12-environmental/MAC.ipynb
5
+ chapter: 12
6
+ ---
7
+
8
+ ```python
9
+ # Importing packages
10
+
11
+ from datascience import *
12
+ import matplotlib.pyplot as plt
13
+ import numpy as np
14
+ import pandas as pd
15
+ from matplotlib import patches
16
+ %matplotlib inline
17
+ ```
18
+
19
+ # Marginal Abatement Cost Curves
20
+
21
+ ## Marginal Cost
22
+
23
+ As of know, you should be familiar with the economic concept of **marginal cost**. The classical textbook example is a production factory, so let's call ours Peter's Pens Limited. Whenever Peter's Pens' management is deciding whether or not to increase production to maximize their profit, they observe the firm's marginal cost: the change in its **total cost** that occurs as 1 more pen is produced. In this case, we measure the marginal cost in $ / per extra pen produced. In environmental economics, we talk about the **marginal cost of emissions** and the **marginal cost of emission abatement**. We think of it as follows:
24
+
25
+ $$ \text{MC of Emissions (\$/ton)} = \frac{\text{$\Delta$ Cost of Emissions (\$)}}{\text{$\Delta$ Quantity of Emissions (tons)}}$$
26
+
27
+ And:
28
+
29
+ $$ \text{MC of Emission Abatement (\$/ton)} = \frac{\text{$\Delta$ Cost of Emissions Abatement (\$)}}{\text{$\Delta$ Quantity of Emission Abated (tons)}}$$
30
+
31
+ ## Government Intervention
32
+
33
+ Let's say that Peter's Pens Limited is operating in a market where the government aims to make firms **internalize** the negative externality created by $CO_2$ pollution from their production. From earlier, we know that the government may choose between **prescriptive** or **market-based** policies, but for this case we assume they chose the latter. In that case, the government introduces a *Pigouvian tax* on per ton of $CO_2$ emitted from all firms. As any Pigouvian tax, its rate is set to the *social marginal cost of the negative externality* it is set to internalize. This is the *social cost of carbon*, quantified by extensive research. In the big picture, it pushes the private marginal cost towards the higher social marginal cost of emissions. As with any price increase, we assume the ‘supplied’ quantity of emissions to be pushed leftwards (decreased). This results in a new equilibrium quantity of emissions at a higher price (= social marginal cost) and the quantity reached becomes the *optimal quantity* of emissions in society. This can be seen in the diagram below. Now, how does the management of Peter’s Pens Limited react to the new market conditions?
34
+
35
+ ![](tax.png)
36
+
37
+ ### The Firm’s Reaction
38
+
39
+ From a ‘bottom-up-perspective’, the management at Peter’s Pens Limited is faced with two choices in reaction to the new emissions tax: The Business-as-Usual (BAU) alternative or the Emissions Abatement alternative. The firm can either choose to continue emitting and pay the tax or invest in new, environmentally friendly technologies that abate their $CO_2$ emissions. A rational decision maker ought to invest in abatement technologies with a marginal cost of abatement up to the emissions tax put in place. Assuming they chose to pursue the latter, how would they prioritize investments within the firm? By observing the cost and abatement potential of each investment, the firm sorts its options from cheapest to most expensive and starts ‘picking’ the low-hanging fruits of $CO_2$ abatement. At any given carbon tax rate, they reduce their tax bill to $0 and observe their total abatement as the sum of all technologies invested in. The resulting plot: The Marginal Abatement Cost (MAC) Curve of Peter’s Pens Limited. Here's how a simple MAC for Peter's Pens might look:
40
+
41
+ ![SampleMACC_Nov23.png](SampleMACC_Nov23.png)
42
+
43
+ In this example, the firm has a few activities with a low cost of abatement, and then a few with higher cost of abatement. It would make sense for the firm to start with the lowest cost of abatement first.
44
+
45
+ ### Back to the Government
46
+
47
+ Returning to the government policymaker’s perspective, we can motivate this approach to a market wide perspective. Just as Peter’s Pens has their firm-specific MAC, society as a whole has one. Through research on policy and technological interventions, an environmental data science team can quantify the *abatement potential* and the *abatement cost* of different technologies (e.g electric cars, wind & solar power generation), policies (e.g fuel standards), and land management projects (e.g soil restoration). From here, public policy can start ‘picking’ the low-hanging fruits of the lowest cost technology first.
48
+
49
+ Earlier, we described the effect of introducing a tax on the emissions ‘market’ and observed how rational decision-makers in individual firms react by constructing their own MAC curves. Now, let’s say that the government has set an emission reduction target but has not decided on a specific tax rate yet. How could they guarantee that the target is met? By taking the cumulative sum of the abatement potential of each intervention they expect to take place at a given rate, they should keep doing so until their sum equals the emission reduction target. From there, they observe the marginal abatement cost of the last intervention they added to the sum. This could be a way to set the emissions tax rate. Here's how a simplified version of the MAC could look:
50
+
51
+ ![image.png](image.png)
52
+
53
+ ### Conclusion
54
+
55
+ In conclusion, both an individual firm and society as a whole could be modeled to have MAC curves. By either choosing an emission reduction target or a emissions tax rate, one can arrive at a lowest cost level of abatement. Whenever an emission tax is introduced to the market, rational firms build their MAC curves and start investing in the cheapest relevant technologies up to the level of the given tax rate to avoid paying the tax. A rational policy maker can map out the different abatement opportunities in a society as a whole and prioritize the cheapest alternatives. Public policy could stop emissions abatement when the technology or policy we invest in has a higher marginal cost than the societal marginal cost of emissions. From there, any intervention reduces either individual (firm) or societal welfare.
56
+
57
+ Now, let’s delve deeper into the MAC curve and build one of our own for Methane Abatement.
58
+
59
+ ## The McKinsey Marginal Abatement Cost Curve (MAC)
60
+
61
+ As earlier described, the Marginal Abatement Cost Curve gives policy makers and firms an opportunity to differentiate the costs of the multiple approaches we have in reducing our carbon (CO2) emissions. It shows where society can get the best "bang for the buck" when the goal is to abate carbon emissions. The **Abatement Potential (GtCO2 per year)** follows the x-axis, and the ** Marginal Abatement Cost (€ per ton of CO2)** lies on the y-axis.
62
+
63
+ Each rectangle represents a specific technology or policy (e.g switch to LED lights or install Carbon Capture Systems (CCS) in older coal plants). The *wider* the rectangle, the *larger* the abatement potential, and the *taller* the rectangle, the *higher* abatement cost for that specific intervention.
64
+
65
+ Below you'll find a very influential MAC out there, the McKinsey MAC from 2009. It has the goal of showing the tradoffs in a single visualization of GHG emissions across a variety of sectors and across all countries. A policy maker, or innovator, or investor could decide to focus on areas where GHG emissions can be reduced at a low cost.
66
+
67
+ ![Screen%20Shot%202021-05-15%20at%201.39.57%20PM.png](mac.png)
68
+
69
+ ### Why are some costs negative?
70
+
71
+ Something that understandably strikes a lot of observers from the plot above is the concept of *negative costs*. Take LEDs (about - €100 per tCO2) for instance: The negative cost here entails that for every investment that reduces CO2 from traditional lightning by 1 ton CO2, the investor receives a €100 saving. In one sense these are all investments that should happen regardless of the GHG consequences they make economic sense. One way to motivate this is that the decision maker may not be able to see the long term benefits in a short-term decision making framework. People dont rush out to buy $5 LED light bulbs when they have working incandescent light bulbs.
72
+
73
+ The cause of negative costs are disputed, but a commonly used idea is that within our current market model, there exists *inefficiencies* such as lack of incentives or information that prohibit market participants from taking the full advantage of the returns offered from investing in technologies with negative costs.
74
+
75
+ ## Constructing a MAC for Methane Gas Abatement
76
+
77
+ For an illustrative example we will construct a Marginal Abatement Curve for Methane emissions from the Oil and Gas Sector.
78
+ We start by importing a dataset on methane abatement from the International Environmental Agency (IEA):
79
+
80
+ ```python
81
+ abatement_table = Table.read_table("abatement_data.csv").where('Cost',are.between(-10.1,10)).where('Possible Savings', are.below(200)).drop('Emissions').relabel('Possible Savings', 'Abatement Potential').relabel('Cost','Abatement Cost')
82
+ abatement_table
83
+ ```
84
+
85
+ ```python
86
+ selection = 'Asia Pacific'
87
+ Group = abatement_table.where('Region', selection)
88
+ Group
89
+ ```
90
+
91
+ ```python
92
+ #The find_x_pos function used for plotting! (out of scope)
93
+
94
+ def find_x_pos(widths):
95
+ cumulative_widths = [0]
96
+ cumulative_widths.extend(np.cumsum(widths))
97
+ half_widths = [i/2 for i in widths]
98
+ x_pos = []
99
+ for i in range(0, len(half_widths)):
100
+ x_pos.append(half_widths[i] + cumulative_widths[i])
101
+ return x_pos
102
+ ```
103
+
104
+ ```python
105
+ #Prepare the data for plotting
106
+ width_group = Group.column('Abatement Potential')
107
+ height_group = Group.column('Abatement Cost')
108
+ new_x_group = find_x_pos(width_group)
109
+ ```
110
+
111
+ With the following function, we introduce an arbritary level of taxation to measure the total abatement outcome later.
112
+
113
+ ```python
114
+ #The methane_tax function -- Let's introduce a tax!
115
+ def methane_tax(tax, table):
116
+ if tax < min(table.column('Abatement Cost')):
117
+ print("No Abatement")
118
+ else:
119
+ abatement = table.where('Abatement Cost', are.below_or_equal_to(tax))
120
+ total_abatement = sum(abatement.column('Abatement Potential'))
121
+ abatement_technologies = abatement.column('Abatement technology')
122
+ print('Methane tax: ', tax)
123
+ print('Total Abatement: ', total_abatement)
124
+ print("")
125
+ print("Abatement Technologies", abatement_technologies)
126
+ ```
127
+
128
+ ```python
129
+ #The group_plot function used for plotting (out of scope)
130
+ def group_plot(tax):
131
+ print(f"Methane: ${tax}")
132
+ methane_tax(tax, Group)
133
+ plt.figure(figsize=(18,12))
134
+ plt.bar(new_x_group, height_group,width=width_group,edgecolor = 'black')
135
+ plt.title("Marginal Abatement Cost Curve (MAC) for the Asia Pacific Region", size = 20)
136
+ plt.xlabel('Abatement Potential', fontsize = 14)
137
+ plt.ylabel('Abatement Cost', fontsize = 14)
138
+ plt.axhline(y=tax, color='r',linewidth = 2)
139
+
140
+ group_plot(4)
141
+ ```
142
+
143
+ ```python
144
+ #Prepare data for plotting (second round)
145
+ width = abatement_table.column('Abatement Potential')
146
+ height = abatement_table.column('Abatement Cost')
147
+ new_x = find_x_pos(width)
148
+ ```
149
+
150
+ ```python
151
+ #Let's give each type of technology a different color!
152
+ abatement_colors_dict = {}
153
+ count = 0
154
+ colors = ['#EC5F67', '#F29056', '#F9C863', '#99C794', '#5FB3B3', '#6699CC', '#C594C5','#85E827','#F165FD','#1F9F7F','#945CF8','#ff3a1d','#2a8506']
155
+ for i in set(abatement_table['Abatement technology']):
156
+ abatement_colors_dict[i] = colors[count]
157
+ count += 1
158
+
159
+ colors_mapped = list(pd.Series(abatement_table['Abatement technology']).map(abatement_colors_dict))
160
+ abatement_table = abatement_table.with_column('Color', colors_mapped)
161
+ ```
162
+
163
+ ```python
164
+ #The Methane curve plot - function!
165
+ def mckinsey_curve(tax):
166
+ print(f"Methane Tax: ${tax}")
167
+ methane_tax(tax, abatement_table)
168
+ plt.figure(figsize=(18,12))
169
+ plt.bar(new_x, height, width=width, linewidth=0.1, color=abatement_table['Color'], edgecolor = "black")
170
+ plt.title('The McKinsey Abatement Cost Curve (MAC)', size = 20)
171
+ plt.xlabel('Abatement Potential', fontsize = 14)
172
+ plt.ylabel('Abatement Cost', fontsize = 14)
173
+ plt.axhline(y=tax, color='r', linewidth = 2)
174
+
175
+ plt.figure(figsize=(18,12))
176
+ plt.bar(abatement_colors_dict.keys(), 1, color = abatement_colors_dict.values())
177
+ plt.xticks(rotation=45)
178
+ plt.title('Legend', size = 20)
179
+
180
+ mckinsey_curve(3)
181
+ ```
182
+
183
+ What a plot! From here, we can differentiate the multiple methane abatement technologies on a cost basis, finding the most efficient ways of reducing methane emissions from gas production. We also observe the result of introducing a tax: With a tax of \$3 per ton, we expect the total abatement to be almost 20.000 tons within our industry.
184
+
185
+ ## The MAC curve's important limitations
186
+
187
+ Before moving on to the next topic of this chapter, we ought to consider the drawbacks of our newfound knowledge:
188
+
189
+ ### Limitation 1: Introducing Capital Intensity
190
+
191
+ From the MAC curve for CO2 (see figure 1), we are interested in finding the **capital intensity of an intervention**. This is different from the **Marginal Abatement Cost**, as it does not take potential savings from e.g lower energy consumption in the future into its calculation. However, it's a great measurement for which technologies require the highest *upfront capital* investment to abate an amount of GHG.
192
+
193
+
194
+ The formula is as follows:
195
+
196
+ $$CI = \frac{\text{Additional Investment}}{\text{Lifetime Emissions Savings}}$$
197
+
198
+ Where Additional Investment is the the additional upfront investment for new technology relative to the Business as Usual (BAU) alternative).
199
+
200
+ Had we re-arranged the MAC curve from figure 1 for capital intensity, it would have looked like this:
201
+
202
+ ![Screen%20Shot%202021-08-11%20at%2012.41.27%20PM.png](ci_curve.png)
203
+
204
+ ### Limitation 2: Lack of Dynamic Cost Assessment
205
+
206
+ The most crucial limitations of the MAC curve is its inability to consider **Dynamic Costs**. In 2009, when the MAC was first created, it only considered **Static Costs**. Let's define them within the context of solar energy prices (graph below):
207
+
208
+ **Static Costs**
209
+ * The fixed costs of a new intervention, unchanged over a lifetime of an investment. Think of it as the costs you observe from this current point of view in time and expect to pay years ahead. For example, the 1976 Solar Energy Price at +100 USD/Watt.
210
+
211
+
212
+
213
+ **Dynamic Costs**
214
+
215
+ * Cost considering potential cost-reduction from increased efficiency, learning-by-doing, and other positive spillovers. For example, the actual cost of Solar Energy in 2019 at below 1 USD/Watt.
216
+
217
+
218
+
219
+ As a result of this shortcoming, the MAC curve tends to *overestimate costs* and do not fully represent the required investments within the energy transition (Kesicki and Edwins, 2012; Vogt-Schilb et al., 2015). It is not hard to understand that people were skeptical of investing in solar energy when the static costs were that high! A current example of this is the Carbon Capture & Storage (CCS) intervention: With high static costs, it might look like an unfavourable investment. What would it look like if we took dynamic costs into our calculations?
220
+
221
+ **A final note on the MAC curve:** As future data scientists, we have a responsibility to improve the MAC curve, and use our skills in prediction and analysis to assess dynamic costs in GHG abatement with higher certainty. The original McKinsey MAC has rounded its 10th year anniversary. Perhaps it's time for you to build a new one?
222
+
223
+ ![solar-pv-prices.png](pv_prices.png)
224
+
225
+ ## What's next?
226
+
227
+ If you are interested in this area, there are even more fascinating applications of Data Science to environmental topics such as: finding the social cost of carbon, the valuation of our environment, and the economics of emissions trading. Besides purely economical modeling, the field of environmental data science is rapidly growing as we collect more and more data on our planet and its resources. Data Science can apply to these problems the power of Satellite Imagery, Machine Learning, and Geographic Information Systems (GIS). These tools can help to build a positive impact in shaping a data-informed, sustainable future.
228
+
229
+ ## Further recommended readings
230
+
231
+ Levelized Cost of Carbon Abatement: An Improved Cost-Assessment Methodology for a Net-Zero Emissions World (also the main source of this Jupyter Notebook)
232
+
233
+ https://www.energypolicy.columbia.edu/sites/default/files/file-uploads/LCCA_CGEP-Report_101620.pdf
234
+
235
+ Dynamic vs. Static costs are described further in in K.Gillingham & J.H Stock's The Cost of Reducing Greenhouse Gas Emissions (italic) from 2018. - A highly recommended reading out of scope for this class.
236
+
237
+ https://scholar.harvard.edu/files/stock/files/gillingham_stock_cost_080218_posted.pdf
238
+
239
+ Goldman Sachs Research: Carbonomics: The Future of Energy in the Age of Climate Change
240
+
241
+ https://www.goldmansachs.com/insights/pages/carbonomics.html
242
+
243
+ EPA article on the Economics of Climate Change:
244
+ https://www.epa.gov/environmental-economics/economics-climate-change
245
+
246
+ Draw your own curve program:
247
+ https://tamc.github.io/macc/
248
+
249
+ Abatement curve for crops:
250
+ https://github.com/aj-sykes92/ggmacc/blob/main/README_files/figure-gfm/full-macc-1.png
251
+
252
+
253
+ Aalborg University's software:
254
+ https://github.com/matpri/EPLANoptMAC