Displacement from natural disasters (blue) and conflict (orange) in 2020


Is this true?


Let’s look into this

Overview


What do we mean by “climate and weather”?

  1. Long-term climate trends
    1. changes in average surface temperature
    2. changes in average precipitation
    3. sea level rise
    4. sea ice melt
  2. Short-term weather “shocks”
    1. unusually hot/cold weather
    2. unusually dry/wet weather
  3. Discrete weather events
    1. extreme weather (e.g. storms, tornadoes)
    2. visibility obstructions (e.g. clouds, haze)
    3. floods
    4. droughts
    5. tsunamis


 

The storm is coming?

Applications of Meteorological Data to the Study of Conflict


Climate change as a driver of armed conflict and violence

  1. Direct links between temperature, precipitation and political violence (Kevane and Gray 2008, Hendrix and Salehyan 2012, Levy and Sidel 2014, Mares and Moffett 2016)

  2. Indirect effects on violence, through migration, resource competition, food insecurity (Ash and Obradovich 2020, Jones et al. 2017)

  3. Impacts on social unrest in specific settings, like urban areas (Koren et al. 2021, Koubi et al. 2021)


 

 

A cause of war?


Short-term weather and violence

  1. Cloud cover as instrumental variable for drone strikes (Mahmood and Jetter 2019, Saeed and Spagat 2021)

  2. Weather shocks as instrumental variable for famine (Rozenas and Zhukov 2019)

  3. Rainfall shocks as instrumental variable for economic growth (Miguel et al 2004, Miguel and Satyanath 2010, Sarsons 2015, Mellon 2023)


 

 

\(W\) is the instrumental variable


What do we know?

 

 

There is a positive correlation between higher temperatures and violence


At the macro level, civil conflict is more likely in hotter, drier times

 

Around the globe

Conflict in tropics

Civil wars in Africa


Communal and inter-group conflict also more likely in climate-stressed times

 

In Kenya

In East Africa

In Brazil


Similar correlations with other types of unrest across the globe

 

Regime change

Riots in Africa

Riots in India


As well as for crime, sexual assault and other violence in the U.S.

 

Crime in U.S.

Rape in U.S.

Fights at stadiums


Correlation \(\neq\) causation

  1. Emerging consensus that climate change by itself does not “cause” conflict (Hsiang and Burke 2014, Van Uexkull and Buhaug 2021)

  2. Effect is likely indirect, though mechanisms like:

    1. demographic changes (McAdam 2017, Dorward and Fox 2022, Koubi et al 2021)
    2. resource competition (Njiru 2012, Harvey and Pilgrim 2011)
    3. youth bulges (Barakat and Urdal 2009, Nordas and Davenport 2013)
    4. migration (Adamson 2006, Nagabatla et al 2021, Nordas 2014, Menashe-Oren 2020)
    5. state capacity (Koren and Sarbahi 2018)


 

 

 

 

Demographic time bomb?

Varieties of Meteorological Data


Historical weather & climate raster data (partial list)

Source/link Spatial resolution Frequency Availability Free? Global?
NOAA 0.5 \(\times\) 0.5 degree Monthly 1900-2014 \(\checkmark\) \(\checkmark\)
CRUTS 0.5 \(\times\) 0.5 degree Monthly 1901-2022 \(\checkmark\)
ERA5 0.25 \(\times\) 0.25 degree Hourly 1940-Present \(\checkmark\) \(\checkmark\)
GLDAS 0.25 \(\times\) 0.25 degree Hourly 1948-Present \(\checkmark\) \(\checkmark\)
FLDAS 0.1 \(\times\) 0.1 degree Monthly 1982-2016 \(\checkmark\) \(\checkmark\)
TerraClimate 0.04 \(\times\) 0.04 degree Monthly 1958-2023 \(\checkmark\) \(\checkmark\)

Climate model future predictions (partial list)

Source/link Spatial resolution Free? Global?
CESM / CIME 0.5 \(\times\) 0.5 degree \(\checkmark\) \(\checkmark\)
GFDL-ESM 1 \(\times\) 1 degree \(\checkmark\) \(\checkmark\)
MPAS Voronoi mesh \(\checkmark\) \(\checkmark\)
GISS Model E, E2R 1 \(\times\) 1 degree \(\checkmark\) \(\checkmark\)
E3SM v2 1 \(\times\) 1 degree \(\checkmark\) \(\checkmark\)

Greenhouse gas emissions (partial list)

Source/link Spatial resolution Frequency Availability Free? Global?
EDGAR 0.1 \(\times\) 0.1 degree Annual 1970-Present \(\checkmark\) \(\checkmark\)
ESS-DIVE 1 \(\times\) 1 degree Annual 1751-2013 \(\checkmark\) \(\checkmark\)
Global Carbon Atlas City-level Annual 1960-Present \(\checkmark\) \(\checkmark\)
EPA-FLIGHT Facility-level Annual 2010-Present \(\checkmark\)

Extreme weather events (partial list)

Source/link Spatial resolution Availability Free? Global?
NOAA Storm Events Points 1950-2023 \(\checkmark\)
EM-DAT Points, admin units 1988-Present \(\checkmark\) \(\checkmark\)
GDIS Points (centroids) 1960-2018 \(\checkmark\) \(\checkmark\)

 

Words of caution

  1. Existing research conceptualizes climate change and conflicts in diverse ways (Meierding 2013, Raleigh and Urdal 2007, Sharifi et al 2021, Van Uexkull and Buhaug 2021)

  2. Complexity of causal pathways, patchy data, disagreement over measurement, analytical approaches (Adams et al 2018, Sakaguchi et al 2017, Sheffran et al 2012)

  3. Differences in assumptions, data & methods lead to vastly different conclusions (Hsiang and Burke 2014, Buhaug et al 2014, Van Uexkull and Buhaug 2021)


 

 

The answer is “it depends”

Vignettes


Overview of lab exercise

 

  1. Changes in summer temperatures by country
  2. Drought severity and violence during the 2011 Arab spring

We will compare average monthly high temperatures in July 2023 to July 1958

Vignette 1 / Step 1


And calculate a new raster that shows where the changes were lowest/highest

Vignette 1 / Step 2


We will then aggregate these changes by country, to see who was most affected

Vignette 1 / Step 3


We will then calculate yearly averages of severe drought indices

Vignette 2 / Step 1


We will extract drought indices for the Middle East and North Africa

Vignette 2 / Step 2


And will see if countries more affected by drought saw more violence in 2011

Vignette 2 / Step 3


We can obtain monthly mean high temperature data from climatologylab.org/terraclimate.html


There are several types of data here. See the “guide for dataset abbreviations”


We want tmax (mean high temperatures) and PDSI (drought index)


Let’s download the “Individual years” data


The file naming convention is TerraClimate_[variable]_[year].nc. Go to TerraClimate_tmax_2023.nc


Download this file through the HTTPServer link


Do the same for the 1958 temperature data TerraClimate_tmax_1958.nc


And the 2010 drought index data TerraClimate_PDSI_2010.nc


We will use global country-level boundaries data from naturalearthdata.com


We want the “Small scale data, 1:100m”. Click on the Cultural link


Click on the “Download countries” link under “Admin 0 - Countries” to get the zip


We will be using the same event data on violence as in the last two labs:
UCDP GED version 23.1, in csv format


Here is the full list of data sources and links:

Category Type Format Data source
Average monthly max temperature Raster .nc TerraClimate
Palmer Drought Severity Index Raster .nc TerraClimate
Country borders Vector (polygons) .shp Natural Earth
Political violence Table (non-geo) .csv UCDP GED

 

These are all in the Lab03WT03.zip file posted on Canvas.

Changes in summer temperatures by country


Always save your progress!
Go to Project \(\to\) Save As...


Vignette 1. Load the 2023 temperature data (Layer \(\to\) Add Layer \(\to\) Add Raster Layer). TerraClimate_tmax_2023.nc file in Data/TerraClimate


This is a multi-band raster. Let’s open up the layer Properties to see what these bands represent


Go to the Information tab and scroll down to Bands. There are 12 bands, corresponding to months of the year (e.g. 1 \(=\) January, 12 \(=\) December)


Let’s display temperatures for July. In Symbology, change Render type to Singleband pseudocolor and set Band to Band 07.... Adjust the other graphical parameters to taste.


Places closer to the equator are hotter. Antarctica is very cold


Let’s also load the tmax raster data for 1958


Once both rasters are loaded, open the Raster Calculator...


Set the Expression to "TerraClimate_tmax_2023@7"-"TerraClimate_tmax_1958@7" (July temp in 2023 minus July temp in 1958). Save the output as tmax_diff.tif


This will take a few minutes to compute


The tmax_diff raster should look something like this


Let’s examine the distribution of global temperature changes. In the layer Properties for tmax_diff, open the Histogram tab. Click Compute Histogram


Most temperature changes were positive, with a mode around \(+\) 2 degrees Celsius


Let’s calculate average changes by country. Load the ne_110m_admin_0_countries.shp file


Once the borders are loaded, open Zonal Statistics from the Processing Toolbox. Set Input layer \(=\) ne_110m_admin_0_countries, Raster layer \(=\) tmax_diff, prefix \(=\) tmax_diff_, Statistics to calculate \(=\) Mean. Save the output as tmax_diff.geojson


North Africa and Central Asia appear to have had the most acute increases in July temperatures


Clicking on the \(\Sigma\) button (“Show Statistical Summary”), we can look up some descriptive stats. The average country saw an increase of 1.77 degrees Celsius


To enable a variety of statistical plotting functions in QGIS, we need to enable the Data Plotly plugin. Go to Plugins \(\to\) Manage and Install Plugins


This will open a window, through which you can install third-party extensions


Search for plotly and install the plugin


Make sure the the box is checked next to Data Plotly after installation


To access Data Plotly, activate the Plugins Toolbar.
Go to View \(\to\) Toolbars \(\to\) check box next to Plugins Toolbar


The icon for Data Plotly can be tricky to find.
Look for an icon that looks like a statistical graphic, as shown here \(\downarrow\). Click on it


You can also access it through View \(\to\) Panels \(\to\) check box next to Data Plotly


This should open a new DataPlotly panel in the project window.


Let’s create an interactive histogram with Plotly. Set Plot type \(=\) Histogram, Layer \(=\) tmax_diff, Grouping field \(=\) tmaxdiff_mean. Click Create Plot


Clicking on the individual bars of the histogram will highlight the countries that fall into that bin, such as here for increases between 4 and 5 degrees


…increases of 3-4 degrees


…increases of 2-3 degrees


…increases of 1-2 degrees (the most numerous category)


…increases between 0 and 1 degree


…decreases of 0 to 1 degree


…decreases of 1 to 2 degrees


…and decreases of 2 to 3 degrees (just Uruguay here)

Drought severity and violence during the 2011 Arab spring


Vignette 2! Let’s create a regional subset of countries. The ne_110m... file has a variable called REGION_WB, where one of the categories is “Middle East & North Africa”


Go to Select by Expression, set Expression to REGION_WB='Middle East & North Africa', and click Select Features


Export the selected features to a new file


Save the layer as mena.geojson. Make sure the box is checked next to “Save only selected features”


A new layer with 20 countries should appear in your project window


Load the drought index raster TerraClimate_PDSI_2010.nc


Another multiband raster. Open up the layer Properties to see the bands


As before, there are 12 bands here, one for each month


Let’s calculate the average annual drought index, over all months.
Open the Raster Calculator and set Expression to ("TerraClimate_PDSI_2010@1"+"TerraClimate_PDSI_2010@2"+ "TerraClimate_PDSI_2010@3"+"TerraClimate_PDSI_2010@4"+ "TerraClimate_PDSI_2010@5"+"TerraClimate_PDSI_2010@6"+ "TerraClimate_PDSI_2010@7"+"TerraClimate_PDSI_2010@8"+ "TerraClimate_PDSI_2010@9"+"TerraClimate_PDSI_2010@10"+ "TerraClimate_PDSI_2010@11"+"TerraClimate_PDSI_2010@12")/12
(you may want to copy and paste this one). Save the raster as pdsi_2010_mean.tif



This will take a few minutes to process


The output will look something like this: a single-band raster of averages


Calculate country averages. Open Zonal Statistics, set Input layer \(=\) mena, Raster layer \(=\) pdsi_2010_mean, prefix \(=\) pdsi2010_, Statistics to calculate \(=\) Mean. Save the output as mena_pdsi.geojson


Try visualizing the country-level results. Lower index scores \(=\) worse drought


The drought index is negative virtually everywhere except Western Sahara


Finally, let’s link this up with data on violent events. Load GEDEvent_v23_1.csv, with spatial index


Select by Expression: year=2011. Click Select Features


Open the Count Points in Polygon tool. Select Polygons \(=\) mena_pdsi, Points \(=\) GEDEvent_v23_1. Make sure the box is checked next to Selected Features Only for the points. Name the count field events2011, and save the output file as mena_pdsi_ged.geojson. Click Run


Open the Plotly tool. Set Plot type \(=\) Scatter Plot, Layer \(=\) mena_pdsi_ged, X field \(=\) pdsi2010_mean, Y field \(=\) events2011. Click Create Plot


From the scatterplot, we can see that the highest levels of violence happened in countries with negative PDSI scores (more drought)


If we click on some of the points in the upper-left corner, we can see countries like Syria, which experienced severe drought in 2010 and high violence in 2011


… or Iraq


…or Yemen


We can adjust some of the graphical parameters to make the scatterplot more readable, like adding country labels and putting the violence variable on a logarithmic scale


Looks better now


You can also perform all these steps in R
(see replication code wt03_demo.R in Lab11WT03.zip)

Vignette 1


 

Vignette 2


Hot Tip: Scripting in Python QGIS


Tired on pointing and clicking? In almost every geoprocessing command, there is a menu called Advanced, with an option to Copy as Python Command


Paste it into a text file to see the code. The directory structure (/home/username/*) will depend on where you saved the WT03 files


You can use these code snippets to assemble a Python script with all the commands we used today (see Code/wt03_demo.py script in the Lab11WT03.zip file)


In QGIS, you can run this script through a Python console. Go to Plugins menu \(\to\) Python Console


Copy a command into the console and click “Enter” (here we are re-calculating the temperature difference raster from Vignette 1)


When QGIS finishes processing, the console will print a line that starts with 'OUTPUT':..., telling you where the output file has been saved (note that this will not load the output automatically)


We can repeat this with the next line in the code (Zonal Statistics for temperature changes by country)


When we open up the Python-generated file, and re-create the histogram, we see that the results are identical to the one we created earlier. Scripting can be very handy if you are doing batch processing with repetitive, easily-automated tasks