<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Biospherica &#187; Climate</title>
	<atom:link href="http://joewheatley.net/category/climate/feed/" rel="self" type="application/rss+xml" />
	<link>http://joewheatley.net</link>
	<description>Earth Vegetation</description>
	<lastBuildDate>Thu, 29 Jul 2010 15:16:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Large-scale vegetation-rainfall correlations in Africa</title>
		<link>http://joewheatley.net/response-of-african-vegetation-to-drought/</link>
		<comments>http://joewheatley.net/response-of-african-vegetation-to-drought/#comments</comments>
		<pubDate>Wed, 12 May 2010 16:35:59 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[ecosystem model]]></category>
		<category><![CDATA[Africa]]></category>
		<category><![CDATA[Drought]]></category>
		<category><![CDATA[NDVI]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=2012</guid>
		<description><![CDATA[Weather and climatic variability affect vegetation on continental scales. Intuitively, healthy vegetation is greener. A quantitative index of &#8220;greenness&#8221; called Normalised Difference Vegetation Index (NDVI) was developed by NASA.  The index takes values between 0 and 1. NDVI is related to the fraction of photosynthetically active radiation absorbed by the vegetation canopy. It is a [...]]]></description>
			<content:encoded><![CDATA[<p>Weather and climatic variability affect vegetation on continental scales. Intuitively, healthy vegetation is greener. A quantitative index of &#8220;greenness&#8221; called <em>Normalised Difference Vegetation Index</em> (<strong><a href="http://www.nasa.gov/topics/earth/features/obscure_data.html">NDVI</a></strong>) was developed by NASA.  The index takes values between 0 and 1. NDVI is related to the fraction of photosynthetically active radiation absorbed by the vegetation canopy. It is a powerful tool in vegetation monitoring.</p>
<p>Quantifying the relationship between weather and vegetation on a regional scale is a statistical problem which requires long time-series of NDVI. <strong><a href="http://glcf.umd.edu/data/gimms/" target="_blank">GIMMS</a></strong> is a  25 year (1981-2006) NDVI dataset based on inputs from a sequence of NOAA weather satellites carrying <strong><a href="http://noaasis.noaa.gov/NOAASIS/ml/avhrr.html">AVHRR</a></strong> radiometers. The GIMMS team removed satellite drift, calibration  effects <em>etc.</em>[1] Of course NDVI has a complex spatial variation which is related to variations in  vegetation cover type, not to weather variations. To isolate the impact of weather variations, it makes sense to &#8220;standardize&#8221; NDVI. <em>Vegetation Condition Index</em> (VCI) is:</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=VCI%3D%5Cfrac%7BNDVI%20%5C%3B%20%5C%3A-%5C%3B%20%5C%3ANDVI_%7Bmin%7D%7D%7BNDVI_%7Bmax%7D-NDVI_%7Bmin%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='VCI=\frac{NDVI \; \:-\; \:NDVI_{min}}{NDVI_{max}-NDVI_{min}}' title='VCI=\frac{NDVI \; \:-\; \:NDVI_{min}}{NDVI_{max}-NDVI_{min}}' class='latex' /></p>
<p>For example, NDVI<sub>min</sub> might refer to the minimum local May NDVI value observed during 1981-2006. A tropical rainforest and a semi-arid region have very different NDVI, but both may have VCI close to  1 during a favourable period.</p>
<p>The maps below show the correlation between VCI and 3-month <a href="http://joewheatley.net/visualizing-drought/" target="_blank">Standardized Precipitation Index</a> (SPI3) computed for Africa by calendar month. GIMMS 8km NDVI was upscaled to 200km to match the scale of gridded monthly climate datasets for precipitation (<a href="http://lwf.ncdc.noaa.gov/oa/wmo/wdcamet-ncdc.html">GPCP</a>).[2] The red areas correspond to areas of high correlation between VCI and SPI3. Vegetation in these areas responsive to rainfall variations on a 3-month timescale. A striking feature  is the line high correlation in the Sahel   region. Vegetation in the Sahel is highly sensitive to drought. Southern Africa is also highly rainfall sensitive during Dec-May. It is impressive that the combination of datasets of very different origins (GPCP and GIMMS) produces spatially and temporally consistent information.</p>
<h2 style="text-align: center;">Sensitivity of Vegetation to Precipitation 1981-2006</h2>
<p><a href="http://joewheatley.net/wp-content/uploads/2010/05/AF_VCI_SPI3Hyrbid_correl1.png"><img class="aligncenter size-large wp-image-2230" title="AF_VCI_SPI3Hyrbid_correl" src="http://joewheatley.net/wp-content/uploads/2010/05/AF_VCI_SPI3Hyrbid_correl1-1024x754.png" alt="AF_VCI_SPI3Hyrbid_correl" width="1024" height="754" /></a></p>
<h3>R code snippets</h3>
<p>Most of the effort is in pre-processing the climate and NDVI data so that they share the same projection, grid, time coordinate etc. GDAL and the interp() function from the akima package were used for this purpose. Eventually we end up with SPI3 and VCI data represented by N × T matrices where N = Nx ×Ny is the dimension of the spatial maps and T is the number of observations. From there,  SPI3 and VCI maps were organized by calendar month,</p>
<p><code>vci.m   &lt;- lapply(seq(1:12),function(m) vci[,seq(from=m, to=T, by=12)])<br />
spi3.m &lt;- lapply(seq(1:12), function(m) spi3[,seq(from=m, to=T, by=12)])</code></p>
<p>Correlation maps between VCI and SPI3  for each calendar month are obtained from,</p>
<p><code>corr.maps &lt;- lapply(seq(1:12),function(m) sapply(seq(1:N), function(i) cor( vci.m[[m]][i,],spi3.m[[m]][i,]) ))</code></p>
<p>Finally the above map table was produced using spplot() from the sp package with overlays from the maps package.</p>
<p style="text-align: left;">
<p style="text-align: left;">
<p style="text-align: left;">[1] <span style="color: #888888;"> Tucker, C.J., J.E. Pinzon, and M.E. Brown (2004),  Global Inventory Modeling and Mapping Studies, NA94apr15b.n11-VIg, 2.0,  Global  Land Cover Facility, University of Maryland, College Park, Maryland,  04/15/1994.</span></p>
<p style="text-align: left;">[2]<span style="color: #888888;"> SG: Adler, R.F., G.J. Huffman, A. Chang, R.  Ferraro, P. Xie,     J. Janowiak, B. Rudolf, U. Schneider, S. Curtis, D. Bolvin, A.  Gruber, J. Susskind, P.     Arkin, 2003: The Version 2 Global Precipitation Climatology Project  (GPCP) Monthly     Precipitation Analysis (1979-Present). J. Hydrometeor., 4,1147-1167. </span></p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/response-of-african-vegetation-to-drought/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visualizing the jet stream</title>
		<link>http://joewheatley.net/visualizing-the-jet-stream/</link>
		<comments>http://joewheatley.net/visualizing-the-jet-stream/#comments</comments>
		<pubDate>Thu, 14 Jan 2010 21:11:41 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[weather forecast]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=1704</guid>
		<description><![CDATA[Jet streams are narrow tubes of strong westerly winds which circle the earth at ≈ 10km elevation. These strong winds separate regions of cold and warm air. Surface weather at mid-latitudes is affected by the chaotic meanderings of jet streams.

The above wind speed maps are based on NCEP GFS analysis at 300mb pressure level (equivalent to [...]]]></description>
			<content:encoded><![CDATA[<p>Jet streams are narrow tubes of strong westerly winds which circle the earth at ≈ 10km elevation. These strong winds separate regions of cold and warm air. Surface weather at mid-latitudes is affected by the chaotic meanderings of jet streams.</p>
<p><a href="http://joewheatley.net/wp-content/uploads/2010/01/jetstream.png"><img class="aligncenter size-large wp-image-1706" title="jetstream" src="http://joewheatley.net/wp-content/uploads/2010/01/jetstream-1023x566.png" alt="jetstream" width="1023" height="566" /></a></p>
<p>The above wind speed maps are based on NCEP GFS analysis at 300mb pressure level (equivalent to ≈ 10km). The speed scale is in m/s.</p>
<p>There are many interesting things to notice about these maps. Firstly, there are several (5 or 6) planetary scale meanders of the jet stream. The meanders are called <em>planetary</em> or <em>Rossby</em> waves. Secondly, the enclosed area is larger and wind speeds higher in the northern hemisphere. This situation is reversed during the southern winter. Notice the closed loop of clockwise circulating air close to New Zealand. In this case a jet stream meander has grown large, become unstable and broken off. The loop encloses a pocket of cold air. Such detached loops can persist and remain in the same location for days.</p>
<p>The graphic below shows the GFS 300mb analysis wind speeds for ooUTC 19 Jan 2010 and the forecast wind speeds for 00UTC 20 &amp; 21 January.  Rossby wave propogation can be seen clearly (the ridges and troughs advance anticlockwise in the Northern hemisphere, clockwise in the Southern Hemisphere)</p>
<p><a href="http://joewheatley.net/wp-content/uploads/2010/01/jetstream.forecast.png"><img class="aligncenter size-full wp-image-1753" title="jetstream.forecast" src="http://joewheatley.net/wp-content/uploads/2010/01/jetstream.forecast.png" alt="jetstream.forecast" width="834" height="795" /></a></p>
<h3>code</h3>
<p>300mb wind velocities (zonal wind component <em>Uvel</em> and meridonal wind component <em>Vvel</em>) at 300mb were extracted from 0.5° GFS grib files. In an <strong><a href="../ncep-global-forecast-system/" target="_blank">earlier post</a></strong> complete GFS forecasts in grib2 format were downloaded and relevant fields extracted using the wgrib2 utility. In fact, it is possible to download only the required fields. This much faster partial-http option uses <strong><a href="http://curl.haxx.se/" target="_blank">cURL</a></strong> and an easy to use <strong><a href="http://www.perl.org/" target="_self">Perl</a> </strong>script called <strong><a href="http://www.cpc.noaa.gov/products/wesley/get_gfs.html" target="_self">get_gfs.pl</a></strong> from NCEP.</p>
<p><strong><a href="http://joewheatley.net/wp-content/uploads/2010/01/jet.R" target="_blank">jet.R</a></strong> is the script which produced the above graphics. Here Roger Bivand&#8217;s <em>sp</em> and <em>rgdal</em> packages are used to transform the latitude-longitude GFS projection to  a polar projection. For example, wind speeds in the northern hemisphere are contained in the <em>SpatialGridDataFrame</em> object <em>sg_north.</em> It is transformed into <em>Universal Polar Stereographic</em> (<em>ups </em>in the Proj.4 library) using<br />
<code>sg_north &lt;- spTransform(sg, CRS("+proj=ups +north"))<br />
sg_north@bbox &lt;- polar_north@bbox</code><br />
Unfortunately<em> spTransform()</em> produces a <em>SpatialPoints</em> object, because the grid is non-uniform after transformation. To recover a <em>SpatialGrid</em> object, the <em>interp()</em> function from package <em>akima</em> was used to resample back onto a regular grid. This is the slowest part of <em>jet.R.<br />
</em></p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/visualizing-the-jet-stream/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>NCEP Global Forecast System</title>
		<link>http://joewheatley.net/ncep-global-forecast-system/</link>
		<comments>http://joewheatley.net/ncep-global-forecast-system/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 11:14:32 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[GFS]]></category>
		<category><![CDATA[R]]></category>
		<category><![CDATA[weather forecast]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=1192</guid>
		<description><![CDATA[Just about everyone is familiar with weather maps. There are many situations where it is useful to combine the underlying numerical weather data with other types of information. Accessing  the weather data is a necessary first step.
The output from the U.S. National Centers for Environmental Prediction (NCEP) Global  Forecast System (GFS) is freely available. The [...]]]></description>
			<content:encoded><![CDATA[<p>Just about everyone is familiar with weather maps. There are many situations where it is useful to combine the underlying numerical weather data with other types of information. Accessing  the weather data is a necessary first step.</p>
<p>The output from the U.S. National Centers for Environmental Prediction (<strong><a href="http://www.nco.ncep.noaa.gov/" target="_blank">NCEP</a></strong>) Global  Forecast System (GFS) is freely available. The surface resolution of the model is ≈ 0.3º× 0.3°. The model runs every 6 hours, producing forecasts at 3-hourly intervals extending out to 16 days. As an example of output from GFS, the map (below) shows the predicted average  temperature at 2 metres over the entire globe for the next 24 hr (date of this post). The map shows predicted cold conditions in Europe, and the continuing heatwave in Australia.</p>
<p><a href="http://joewheatley.net/wp-content/uploads/2009/12/t2m.jpeg"><img class="aligncenter size-large wp-image-1685" title="t2m" src="http://joewheatley.net/wp-content/uploads/2009/12/t2m-1024x572.jpg" alt="t2m" width="1024" height="572" /></a></p>
<h3>How the map was made</h3>
<p><strong><a href="http://www.nco.ncep.noaa.gov/pmb/products/gfs/" target="_blank">GFS forecasts</a></strong> are in a format called GRIB2. According to Wikipedia, <em><strong>&#8220;</strong>GRIB (GRIdded Binary) is a mathematically concise data format commonly used in meteorology to store historical and forecast weather data.&#8221; </em>GRIB files contain physical fields such as temperature, humidity etc defined on a spatial grid, as well as boundary conditions such as vegetation type and elevation. The data might be assimilated from observations, or output from a forecast model.</p>
<p>The first step is to translate the GRIB into a raster format such as <strong><a href="http://www.unidata.ucar.edu/software/netcdf/" target="_blank">netcdf</a></strong> which can be read in <em>R</em><strong><em>. </em></strong>For example, the GRIB2 file <em>gfs.2009121700/gfs.t00z.sfluxgrbf03.grib2</em> contains the 3-hr forecast surface data on 17 Dec 2009  produced at 00 UTC (midnight universal time). An inventory of the data contained in this file can be seen <strong><a href="http://www.nco.ncep.noaa.gov/pmb/products/gfs/gfs.t00z.sfluxgrbf00.grib2.shtml" target="_blank">here</a></strong>. Download this forecast as <em>temp.grb</em></p>
<p><code>loc=file.path("ftp://ftp.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.2009121700/gfs.t00z.sfluxgrbf03.grib2")<br />
download.file(loc,"temp.grb",mode="wb")</code></p>
<p>To read <em>temp.grb</em> a utility called <strong><a href="http://www.cpc.noaa.gov/products/wesley/wgrib2/" target="_blank">wgrib2</a></strong> needs to be installed on your system. Then data such as land fraction can extracted into a netcdf file <em>LAND.nc</em> using the <em>R</em> shell command</p>
<p><code>shell("wgrib2 -s temp03.grb | grep :LAND: | wgrib2 -i temp00.grb -netcdf LAND.nc",intern=T)</code></p>
<p>The ncdf package can now be used to read the contents of <em>LAND.nc</em>.</p>
<p><code>library(ncdf)<br />
landFrac &lt;-open.ncdf("LAND.nc")<br />
land &lt;- get.var.ncdf(landFrac,"LAND_surface")<br />
x &lt;- get.var.ncdf(landFrac,"longitude")<br />
y &lt;- get.var.ncdf(landFrac,"latitude")</code></p>
<p>The 1152×576 matrix <em>land</em> takes values 1 for land and 0 for water (sea-ice is 1). x and y are the longitude and latitude of the non-uniform GFS grid.</p>
<p>2m temperature data can be read in the same way. The average of the first 8  forecasts was called <em>t2m.mean</em> and plotted using <em>image.plot()</em> from the fields package:</p>
<p><code>library(fields)<br />
rgb.palette &lt;- colorRampPalette(c("snow1","snow2","snow3","seagreen","orange","firebrick"), space = "rgb")#colors<br />
image.plot(x,y,t2m.mean,col=rgb.palette(200),axes=F,main=as.expression(paste("GFS 24hr Average 2M Temperature",day,"00 UTC",sep="")),axes=F,legend.lab="o C")<br />
contour(x,y,land,add=TRUE,lwd=1,levels=0.99,drawlabels=FALSE,col="grey30") #add land outline </code></p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/ncep-global-forecast-system/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How big is the uncertainty in the global temperature trend?</title>
		<link>http://joewheatley.net/serial-correlation-and-global-temperature-trend-uncertainty/</link>
		<comments>http://joewheatley.net/serial-correlation-and-global-temperature-trend-uncertainty/#comments</comments>
		<pubDate>Tue, 08 Dec 2009 22:41:59 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=1399</guid>
		<description><![CDATA[The global temperature record shows strong serial correlation. This boosts the uncertainty in the slope of the global warming trend. Here the uncertainty in the trend is derived using one of the satellite datasets.
warming in the satellite era
Data from satellites have been used to construct a global temperature record beginning in December 1978. This covers [...]]]></description>
			<content:encoded><![CDATA[<p>The global temperature record shows strong serial correlation. This boosts the uncertainty in the slope of the global warming trend. Here the uncertainty in the trend is derived using one of the satellite datasets.</p>
<h3>warming in the satellite era</h3>
<p>Data from satellites have been used to construct a global temperature record beginning in December 1978. This covers the recent warming period. The University of Alabama at Huntsville (UAH) <strong><a href="http://vortex.nsstc.uah.edu/public/msu/t2lt/tltglhmam_5.2" target="_blank">2LT product</a></strong> gives average temperature of the lower atmosphere derived from microwave radiances. Planck&#8217;s law says that microwave radiances are related to temperature.</p>
<p>The plot below shows UAH monthly time-series and a least-squares regression fit. The slope of the regression line is 0.013ºC/year (equivalent to 0.13°C/decade or 1.3°C/century). Also shown is the <strong><a href="http://data.giss.nasa.gov/gistemp/" target="_blank">Gistemp</a></strong> global temperature time-series over the same time interval. Gistemp is based on surface weather stations. The trend in the Gistemp series is higher, 0.18°C/decade.</p>
<p style="text-align: left;"><a href="http://joewheatley.net/wp-content/uploads/2009/12/anomaly.png"><img class="aligncenter size-large wp-image-1407" title="anomaly" src="http://joewheatley.net/wp-content/uploads/2009/12/anomaly-1024x934.png" alt="anomaly" width="655" height="598" /></a></p>
<h3 style="text-align: left;">uncertainty in trend</h3>
<p>A linear regression fit to global temperatures is a statistical model in which strong residual variations are superposed on a linear warming trend. The residual variations reflect &#8220;noise&#8221; in the climate system. ENSO, random events such as volcanos, and many other modes of variability contribute to the &#8220;noise&#8221;. The &#8220;uncertainty&#8221; in the global warming trend can be estimated in the context of this statistical model.</p>
<p>From this point of view, the UAH monthly data are one realisation of a random sample of length N. In reality we only have one sample, the UAH data from the real world. However, if repeated sampling and slope measurement were possible, it would yield a range of outcomes due to noise. The width of the resulting slope probability distribution reflects the uncertainty in the global warming trend. It is evident that there is strong serial correlation in the residuals. This enhances the uncertainty, because it reduces the effective number of independent degrees of freedom in the data. Fewer degrees of freedom means more uncertainty.</p>
<p>The UAH residuals are fit to an auto-regressive model to account for serial auto-correlation. The Akaike information criterion to choose an optimal order n. For UAH it  turns out that n=2, with coefficients 0.58  and 0.24. To find the slope probability distribution 10,000 time-series were used in a Monte Carlo simulation. Each simulated time-series assumes a UAH trend-line of 0.13°C/decade and an AR(2) noise term parameterized using the AR(2) model fit to the UAH residuals. Linear regression fit on each of these simulated time-series yields the slope probablity distribution.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/12/slope.png"><img class="aligncenter size-large wp-image-1554" title="slope" src="http://joewheatley.net/wp-content/uploads/2009/12/slope-1024x942.png" alt="slope" width="491" height="452" /></a></p>
<p style="text-align: left;">A typical result is shown above along with a fit to the normal distribution. By construction the mean is 0.13°C/decade as expected. The standard error is 0.036°C/decade. This is 3.4 times greater than the standard error with independent and identically distributed (iid) residuals.</p>
<p>The 2σ confidence interval for UAH global temperature trend is 0.05 to 0.2°C/decade. Unfortunately, this is quite a wide window.<em> </em>Would another 30 years of data help? Assuming that the properties of the UAH time-series do not change, and extending the above simulation for another 30 years, the standard error is reduced from 0.035°C/decade to 0.026°C/decade. Better, but still a surprising degree of uncertainty.</p>
<h3><em>R</em> code</h3>
<p>The above analysis was carried out using <em>R</em> functions ar() and arima.sim()</p>
<p><code>fitLin &lt;-lm(GLOBAL~dates)  # linear regression fit to GLOBAL= UAH global temperature, dates = UAH dates<br />
ar.fit &lt;- ar(residuals(fitLin)) # AR model for residuals<br />
N=10000; # number of simulated UAH time-series<br />
fits &lt;- cbind(rep(0,N),rep(0,N))<br />
trend &lt;- coefficients(fitLin)[1] + dates*coefficients(fitLin)[2] # UAH trend line<br />
#Monte Carlo<br />
for( i in 1:N){<br />
warming &lt;- trend+arima.sim(n = NData, list(ar = c(ar.fit$ar[1], ar.fit$ar[2])), sd=sqrt(ar.fit$var.pred)) #generate sample<br />
fit.warm &lt;- lm(warming~dates) # linear fit<br />
fits[i,1] &lt;- coefficients(fit.warm)[1];<br />
fits[i,2] &lt;- coefficients(fit.warm)[2]; # slope of simulated data<br />
}<br />
library(MASS) # MASS library must be installed<br />
gf &lt;- fitdistr(fits[,2],"normal") # fit a normal distribution to the slopes<br />
mn &lt;-gf$estimate[1] #mean<br />
sig &lt;- gf$estimate[2] #standard error<br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/serial-correlation-and-global-temperature-trend-uncertainty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flux Towers: Part II</title>
		<link>http://joewheatley.net/flux-towers-part-ii/</link>
		<comments>http://joewheatley.net/flux-towers-part-ii/#comments</comments>
		<pubDate>Mon, 12 Oct 2009 19:57:08 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Carbon]]></category>
		<category><![CDATA[Climate]]></category>
		<category><![CDATA[Forests]]></category>
		<category><![CDATA[ecosystem model]]></category>
		<category><![CDATA[eddy covariance]]></category>
		<category><![CDATA[Terrestrial Carbon]]></category>
		<category><![CDATA[water stress]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=742</guid>
		<description><![CDATA[Flux tower eddy covariance instruments measure CO2 flux between an ecosystem and the atmosphere. Observed CO2 fluxes (also called NEE, Net Ecosystem Exchange) can be correlated with locally measured solar intensity, temperature, humidity etc. With enough data, a detailed picture of the local response of the ecosystem to environmental variables to be built up. Flux [...]]]></description>
			<content:encoded><![CDATA[<div id="attachment_1075" class="wp-caption aligncenter" style="width: 800px"><a href="http://joewheatley.net/wp-content/uploads/2009/10/forestimage.png"><img class="size-large wp-image-1075  " title="forestimage" src="http://joewheatley.net/wp-content/uploads/2009/10/forestimage-1024x112.png" alt="forestimage" width="790" height="112" /></a><p class="wp-caption-text">West of Ireland oak woodland - October 11 </p></div>
<p>Flux tower <strong><a href="http://joewheatley.net/flux-towers-part-i/" target="_blank">eddy covariance instruments</a></strong> measure CO2 flux between an ecosystem and the atmosphere. Observed CO2 fluxes (also called NEE, <em>Net Ecosystem Exchange</em>) can be correlated with locally measured solar intensity, temperature, humidity etc. With enough data, a detailed picture of the local response of the ecosystem to environmental variables to be built up. Flux towers are one of the important tools for quantitative understanding the sensitivity of vegetation to climatic variability.</p>
<p>CO2 flux data  are noisy, to say the least. If you want to understand ecosystem reponse, you need a statistical model.  This post gives some simple ideas and R code showing how such a model can be developed. The example used is <strong><a href="http://atmos.seas.harvard.edu/lab/hf/CO2exchange.html" target="_blank">Harvard Forest</a></strong> [1], Massachussetts, a temperate deciduous broadleaf forest for which a large amount of flux tower data (collected by Munger &amp; Wofsy) is available. It could equally be applied to tropical forest, grassland, cropland etc at one of the 200+ fluxnet sites worldwide. The model falls short of the full scientific rigour given in the references, but it can easily be developed into a more complete tool.</p>
<p>The main interest here is ecosystem response to sunlight i.e. photosynthesis. The light dependent part of the NEE is GEP (Gross Ecosystem Production), while the light independent part is RE (ecosystem respiration).</p>
<h3>Pre-processing</h3>
<p>As always, the first steps are about getting the data into the right form. We use half-hourly data for 1991-2007  for Harvard Forest  i.e <a href="http://public.ornl.gov/ameriflux/dataproducts.shtml" target="_blank">Ameriflux</a> Level 2, site code <em>USHa-1</em>. This raw data has not been subject to any gap-filling statistical treatment. Here are the pre-processing steps:</p>
<ol>
<li>download the annual data files and create a dataframe harvard using the rbind() combining all of the data</li>
<li>replace missing data (e.g. -9999) with &#8220;NA&#8221;</li>
<li>add a new fornight index, indicating to which fortnight of the year each row of data belongs</li>
<li>select a subset of the Ameriflux variables of interest. e.g. column headings c(&#8221;YEAR&#8221;,&#8221;DTIME&#8221;,&#8221;FN&#8221;,&#8221;TA&#8221;,&#8221;NEE&#8221;,&#8221;TS1&#8243;,&#8221;VPD&#8221;,&#8221;PAR_in&#8221;)</li>
<li>drop rows of data when one or more variables are undefined</li>
<li>group the data according to fortnights index i.e. create a list of 26 elements where each element is a dataframe containing all data sharing the same fortnight index.</li>
<li>drop &#8220;dark&#8221; data i.e. rows of data where PAR &lt; 30.</li>
</ol>
<p>The environmental variables retained at step 4 are TA (atmospheric temperature), TS1  (soil temperature), VPD (vapour pressure deficit) and PAR (photosynthetically active radiation). PAR is solar radiation in the range 0.4-0.7 microns which is energetic enough to contribute to photosynthesis. It has units μ mols s<sup>-1</sup> m<sup>-2</sup>. (1 μ mole = 6 x 10<sup>17</sup>.)</p>
<p>Here is what the R code looks like: <code><br />
<span style="color: #ff6600;">#download the annual data files and create a dataframe harvard</span><br />
loc=file.path("ftp://cdiac.ornl.gov/pub/ameriflux/data/Level2/Sites_ByID/US-Ha1/with_gaps/usmaharv_1991_L2.csv"); # Ameriflux US_Ha1 download.file(loc,"temp.dat");<br />
ha_1991=read.csv("temp.dat", header=FALSE,skip=20); .........................<br />
loc=file.path("ftp://cdiac.ornl.gov/pub/ameriflux/data/Level2/Sites_ByID/US-Ha1/with_gaps/usmaharv_2007_L2.csv"); # Ameriflux US_Ha1 download.file(loc,"temp.dat");<br />
ha_2007=read.csv("temp.dat", header=FALSE,skip=20); harvard &lt;- rbind(ha_1991,ha_1992,ha_....._2006,ha_2007); # merged dataframes<br />
<span style="color: #ff6600;">#replace missing data with "NA"</span><br />
temp &lt;- (harvard[,] == -9999 | harvard[,] == -6999); #replace -9999 or -6999 with NAs<br />
harvard[temp]=NA;<br />
<span style="color: #ff6600;">#add a new fortnight index</span><br />
lims &lt;- seq(from=1,to=365,by=14); # fortnightly data<br />
lims[27] &lt;- 367; # bound adjust, last fortnight has extra days fortnight<br />
&lt;- function(d) {sum(ifelse(d&lt;lims,0,1))}  # convert from DOY to fortnights<br />
harvard &lt;- data.frame( "FN" = sapply(harvard$DOY,fortnight),harvard)  # add fortnight labels 1..26 column<br />
#select a subset of the Ameriflux variables of interest<br />
sub&lt;- c("YEAR","DTIME","FN","TA","NEE","TS1","VPD","PAR_in")<br />
harvardS &lt;- harvard[,colnames(harvard) %in% sub, drop=FALSE] # subset dataframe<br />
<span style="color: #ff6600;">#  drop data when U* &lt; 0.2 m/s</span><br />
u_cut &lt;- (harvard$UST &lt; 0.2|is.na(harvard$UST));<br />
<span style="color: #ff6600;">#drop every row of data when one or more variables are undefined</span><br />
x &lt;- is.na(harvardS$TA);<br />
y &lt;- is.na(harvardS$NEE);<br />
z &lt;- is.na(harvardS$TS1);<br />
u &lt;- is.na(harvardS$VPD);<br />
v &lt;- is.na(harvardS$PAR_in);<br />
w &lt;- !(x|y|z|u|v|u_cut);  #boolean. w is true when all variables are defined and U* &gt; 0.2 m/s<br />
harvardS &lt;- data.frame("YEAR"=harvard$YEAR[w],"FN"=harvard$FN[w],"TA"=harvard$TA[w],"NEE" = harvard$NEE[w], "TS1" = harvard$TS1[w], "VPD" = harvard$VPD[w],"PAR" = harvard$PAR_in[w])<br />
<span style="color: #ff6600;">#group the data according to fortnights index</span><br />
getF &lt;- function(i) {subset(harvardS,FN==i)}<br />
# list of dataframes according to fortnight index<br />
harvardF &lt;- lapply(seq(1:26),getF) # generate list<br />
<span style="color: #ff6600;">#drop "dark" data i.e. rows of data where PAR &lt; 30.</span><br />
harvardS.light &lt;- subset(harvardS,PAR&gt;30)#day only<br />
getF.light &lt;- function(i) {subset(harvardS.light,FN==i)}<br />
<span style="color: #ff6600;"># list of dataframes according to fortnight value</span><br />
harvardF.light &lt;- lapply(seq(1:26),getF.light) # generate list</code></p>
<p><em>harvardF.light</em> contains the required clean daytime half-hourly data grouped by fortnight index.</p>
<h3>Model-Building</h3>
<p>The plots below show NEE versus PAR. Fortnights 8 &amp; 22 (mid April &amp; late October) are winter months with positive NEE and little evidence of photosynthetic response. Fortnights 14 &amp; 18 (early July and late August) show photosynthesis (-ve NEE) and a strong response to PAR.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/10/gep.png"><img class="size-large wp-image-1005  aligncenter" title="gep" src="http://joewheatley.net/wp-content/uploads/2009/10/gep-1024x958.png" alt="gep" width="717" height="671" /></a></p>
<p>The NEE-PAR curves during summer months saturate at high light levels. This is not too surprising. Photosynthesis is limited by water and CO2 availability and so cannot increase indefinitely with increasing PAR. A simple light saturation model is [2]</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cmathrm%7BNEE%7D%20%3D%20%5Cmathrm%7BR_E%7D%20-%7B%7B%5Calpha%20%5Cbeta%20%5Cmathrm%7BPAR%7D%7D%20%5Cover%20%7B%5Cbeta%20%2B%20%5Calpha%20%5Cmathrm%7BPAR%7D%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\mathrm{NEE} = \mathrm{R_E} -{{\alpha \beta \mathrm{PAR}} \over {\beta + \alpha \mathrm{PAR}}}' title='\mathrm{NEE} = \mathrm{R_E} -{{\alpha \beta \mathrm{PAR}} \over {\beta + \alpha \mathrm{PAR}}}' class='latex' /></p>
<p>The second term on the right-hand-side represents GEP.  At low light levels GEP ≈ αPAR. The parameter α is called the &#8220;photosynthetic efficiency&#8221;. At high light levels,  GEP ≈ β and so β is the light saturation GEP.</p>
<p>This 3-parameter simple light saturation model can be fit to extract parameters for each fortnightly period. However, a better model recognises that photosynthesis responds to changes in moisture availability and temperature. This effect can be introduced by replacing <img src='http://s.wordpress.com/latex.php?latex=%5Calpha%20%5Crightarrow%20%5Calpha%20%5Cepsilon&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\alpha \rightarrow \alpha \epsilon' title='\alpha \rightarrow \alpha \epsilon' class='latex' /> in the numerator of GEP, where ε depends on atmospheric temperature TA and vapour pressure deficit VPD. ε=1 under optimal temperature and humidity conditions, otherwise ε&lt;1. We need to input a reasonable model for how quickly GEP falls away about the optimal values of TA (at about 25C) and VPD (at zero  kPa). After some experimenting, the following model was found to be reasonable[3]</p>
<p style="text-align: center;"><img src='http://s.wordpress.com/latex.php?latex=%5Cepsilon%20%3D%20%7B%5Clambda%5E2%20%5Cover%20%7B%5Cmathrm%7B%5Cleft%28TA-25%20%5Cright%29%7D%5E2%20%2B%20%5Clambda%5E2%7D%20%7D%20%7B%5Cmu%5E2%20%5Cover%20%7B%5Cmathrm%7BVPD%7D%5E2%20%2B%20%5Cmu%5E2%7D%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\epsilon = {\lambda^2 \over {\mathrm{\left(TA-25 \right)}^2 + \lambda^2} } {\mu^2 \over {\mathrm{VPD}^2 + \mu^2}}' title='\epsilon = {\lambda^2 \over {\mathrm{\left(TA-25 \right)}^2 + \lambda^2} } {\mu^2 \over {\mathrm{VPD}^2 + \mu^2}}' class='latex' /></p>
<p><img src='http://s.wordpress.com/latex.php?latex=%5Clambda&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\lambda' title='\lambda' class='latex' /> and <img src='http://s.wordpress.com/latex.php?latex=%5Cmu&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\mu' title='\mu' class='latex' /> are two additional parameters which must be determined. This 5-parameter model can be fit for each of the photosynthetically active periods 11-20.</p>
<p>The nls() function in R carries out a numerical maximum likelihood fit using least squares. Unlike ordinary linear least squares, it is not guaranteed to converge. The model and initial parameter values have to be chosen carefully. A good approach is to use parameters from the simple light saturation model as initial values in nls(). Here is the code needed to do the 5-parameter model fits</p>
<p><code><br />
#fits.mid is a list of fitted R objects<br />
for(i in start_period:end_period) {<br />
fits.mid[[i]] &lt;- nls(NEE~ gamma - alpha*beta*(lambda^2/((TA-25)^2+lambda^2))*mu^2/(VPD^2+mu^2)*PAR/(beta+alpha*PAR), data = harvardF.light[[i]], start=list(gamma=1,alpha=0.02,beta=40,lambda=40,mu=1),trace=F); </code></p>
<p>In fact, λ and μ are not expected to vary much during the summer period, since they depend on leaf properties at the cellular level.  Indeed they turn out to be roughly constant for fortnight periods 11-20. It is reasonable to replace them by their average values μ<sub>av</sub> = 2.1kPa and λ<sub>av</sub>=34 μ mols s<sup>-1</sup> m<sup>-2</sup>. With ε determined in this way, a final 3-parameter model fit is carried out. Once again the three parameters are RE, α and β but this time the model takes better account of temperature and moisture sensitivity, via ε.</p>
<h3>Results</h3>
<p>The model suggests that VPD is an important factor limiting GEP. e.g. vapour pressure deficit of 1kPa reduces GEP by 20% when <img src='http://s.wordpress.com/latex.php?latex=%5Cmu%20%3D%202&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\mu = 2' title='\mu = 2' class='latex' />kPa. This effect is seen in the plots below.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/10/nee.png"><img class="size-large wp-image-1015  aligncenter" title="nee" src="http://joewheatley.net/wp-content/uploads/2009/10/nee-1024x813.png" alt="nee" width="819" height="650" /></a></p>
<p>The implication of this is that about 30% of the apparent &#8220;light saturation&#8221; of the NEE PAR response is due to water stress (VPD). The remainder is due to CO2 availability and possibly other constraints.</p>
<p>The plot below shows the variation of parameters R_E , β and α with fortnight index. Only β shows a strong variation during the summer months, with a peak in early June</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/10/params.png"><img class="size-large wp-image-1024  aligncenter" title="params" src="http://joewheatley.net/wp-content/uploads/2009/10/params-1024x481.png" alt="params" width="1024" height="481" /></a></p>
<p><img src='http://s.wordpress.com/latex.php?latex=%5Calpha%5E%7B-1%7D&#038;bg=ffffff&#038;fg=000000&#038;s=0' alt='\alpha^{-1}' title='\alpha^{-1}' class='latex' /> corresponds to the number of  photosynthetically active photons  arriving at the forest canopy for every CO2 molecule trapped by photosynthesis. This number is about 14.</p>
<p>A common feature of future climate scenarios is competition between increased CO2 availability and increased water stress layed out on a global scale. Clearly flux tower data are good place to look for these effects.</p>
<p>The R script for the model and plots can be found <strong><a href="http://joewheatley.net/wp-content/uploads/2009/10/harvardforestlevel2.txt" target="_blank">here</a></strong>.</p>
<h3>References</h3>
<p>[1] <em>Factors controlling CO<sub>2</sub> exchange on timescales from hourly to decadal at Harvard Forest, </em>Urbanski, S., C. Barford, S. Wofsy, C. Kucharik, E. Pyle, J. Budney, K.</p>
<p>McKain, D. Fitzjarrald, M. Czikowsky, J. W. Munger<a href="http://www.agu.org/pubs/crossref/2007.../2006JG000293.shtml" target="_blank"> http://www.agu.org/pubs/crossref/2007&#8230;/2006JG000293.shtml</a></p>
<p>[2] See for example, <em>An evaluation of models for partitioning eddy covariance-measured<br />
net ecosystem exchange into photosynthesis and respiration</em> P. Stoy <em>et al</em>, <a href="http://www.geos.ed.ac.uk/homes/pstoy/Stoy_06b.pdf" target="_blank">http://www.geos.ed.ac.uk/homes/pstoy/Stoy_06b.pdf</a></p>
<p>[3] More detailed models are give in <em><span class="pb_article_title">An empirical model simulating diurnal and seasonal CO<sub>2</sub> flux for diverse vegetation types and climate conditions</span></em><span class="pb_authors">, M. Saito, S. Maksyutov, R. Hirata, and A. D. Richardson. </span><a href="http //www.biogeosciences.net/6/585/2009/bg-6-585-2009.html" target="_blank">http //www.biogeosciences.net/6/585/2009/bg-6-585-2009.html</a> &amp; references.</p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/flux-towers-part-ii/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Arctic Sea Ice Extent Data</title>
		<link>http://joewheatley.net/arctic-sea-ice/</link>
		<comments>http://joewheatley.net/arctic-sea-ice/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 20:44:52 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[AMSR-E]]></category>
		<category><![CDATA[Arctic sea ice]]></category>
		<category><![CDATA[extent]]></category>
		<category><![CDATA[time-series]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=434</guid>
		<description><![CDATA[Sea ice volumes in polar regions are a key indicator of global change. In the Arctic, sea ice extent in summer has fallen dramatically in recent years, particularly in 2007 and 2008. The media do not exaggerate when they say that this is an alarming rate of decline. You can expect such media stories to [...]]]></description>
			<content:encoded><![CDATA[<p>Sea ice volumes in polar regions are a key indicator of global change. In the Arctic, sea ice extent in summer has fallen dramatically in recent years, particularly in 2007 and 2008. The media do not exaggerate when they say that this is an alarming rate of decline. You can expect such media stories to be an annual event each september, when the sea ice melt peaks.</p>
<p>Sea ice extent has been monitored by satellites in polar orbit since 1978. The remote sensing technique employed (passive microwaves) can discriminate between open water and sea ice even during the dark polar winter or cloudy conditions. Microwave emissions are an important tool in monitoring water in all forms &#8211; atmospheric water vapour, sea temperatures, soil moisture, snow cover &#8230;</p>
<p>The plot below shows Arctic sea ice extent (SIE) derived from the <em>AMSR-E</em> instrument (<em>Advanced Microwave Scanning Radiometer</em>[1]). <em>AMSR-E </em>was built by the Japanese Aerospace Exploration Agency (JAXA). The plot below is available from the International Arctic Research Center (IARC)-JAXA <strong><a href="http://www.ijis.iarc.uaf.edu/cgi-bin/seaice-monitor.cgi?lang=e" target="_blank">information site</a></strong>.</p>
<p><a href="http://www.ijis.iarc.uaf.edu/en/home/seaice_extent.htm"><img class="alignnone" style="margin-right: 50px; margin-left: 50px;" src="http://www.ijis.iarc.uaf.edu/seaice/extent/AMSRE_Sea_Ice_Extent.png" alt="" width="576" height="360" /></a></p>
<h3>Sea ice extent time-series</h3>
<p>Sea ice has been monitored using microwaves since 1978. <em>AMSR-E</em> is the newest instrument with the highest resolution (6km, 89GHz).  It is therefore viewed as the most reliable, but it has only been in operation since 2002. <strong><a href="http://www.agu.org/pubs/crossref/2008/2007JC004257.shtml" target="_blank">Comiso and Nishio</a></strong> show that <em>AMSR-E</em> and earlier passive microwave data  are compatible after minor re-calibration. Differences in derived SIE are accounted for by lower spatial resolution of the earlier data.</p>
<p><a href="http://joewheatley.net/wp-content/uploads/2009/06/overlap.png"><img class="alignnone size-full wp-image-477" style="margin: 50px;" title="overlap" src="http://joewheatley.net/wp-content/uploads/2009/06/overlap.png" alt="overlap" width="631" height="535" /></a></p>
<p>The plot on the left shows SIE in the 2002-2008 overlap period of <em>AMSR-E</em> and older data (&#8221;<em>SMM/I</em>&#8220;) obtained from <em>National Snow and Ice Data Center</em> (<strong><a href="http://nsidc.org/arcticseaicenews/" target="_blank">NSIDC</a></strong>).  Plotting <em>AMSR-E</em> against <em>SMM/I</em> derived SIE (plot on right) shows a close linear relation. An <em>AMSR-E</em> compatible time-series can therefore be generated back to 1978. The attached R script also interpolates missing data to produce a continuous daily time-series (called<em> final.ts</em>).</p>
<p>The daily time-series <em>final.ts </em>looks like:</p>
<p><a href="http://joewheatley.net/wp-content/uploads/2009/06/seaicetimeseries.png"><img class="alignnone size-full wp-image-487" title="seaicetimeseries" src="http://joewheatley.net/wp-content/uploads/2009/06/seaicetimeseries.png" alt="seaicetimeseries" width="785" height="349" /></a></p>
<p>What is the trend in this time-series and how unusual are recent years? A standard method is used to remove the seasonal signal from <em>final.ts</em>, leaving the &#8220;trend&#8221; and &#8220;volatility&#8221;. Here is the short R code required:</p>
<p><code>seasonal_analysis &lt;- stl(final.ts,s.window="periodic",robust=TRUE)$time.series<br />
anomaly &lt;- seasonal_analysis[,2]+seasonal_analysis[,3];<br />
anom.fit &lt;- lm(anomaly~time(final.ts));<br />
coefs &lt;- coefficients(anom.fit);<br />
slope &lt;- as.numeric(round(100*coefs[2]*10/(coefs[1]+coefs[2]*1985),1)); # slope of fit<br />
plot(anomaly,lwd=2,main=paste("Arctic Sea Ice Extent Anomaly to",end_date),ylim=c(0,13),ylab="10^6 km2",xlab="",font.lab=2,font.axis=2);<br />
abline(anom.fit,col=2);<br />
legend("bottomleft",legend=c("Arctic Sea Ice Extent (seasonal signal removed)",paste("trend=",as.expression(slope),"% per decade")),col=1:2,lty=1,lwd=2:1);<br />
text(1995,4, "data from www.ijis.iarc.uaf.edu &amp; www.nsidc.org");</code></p>
<p>The result is:</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/09/seaiceanomaly.png"><img class="aligncenter size-large wp-image-896" title="seaiceanomaly" src="http://joewheatley.net/wp-content/uploads/2009/09/seaiceanomaly-1023x912.png" alt="seaiceanomaly" width="818" height="730" /></a></p>
<h3>Conclusions</h3>
<p>Arctic sea ice extent has been shrinking by nearly 4% per decade since 1978. Volatility about this trend has clearly picked up in the past few years. The past two summers (2007 and 2008) have been unusual, with deep below trend summer minima.</p>
<p>Ice has recovered somewhat so far this year, and it will be very interesting to see the extent of the melt next September.</p>
<p>[1] The &#8220;E&#8221; in <em>AMSR-E</em> indicates that the instrument is carried on board one of Nasa&#8217;s <em>Earth Observing System</em> satellites (EOS),  <strong><a href="http://aqua.nasa.gov/" target="_blank">Aqua</a></strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/arctic-sea-ice/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Black Swan White Mountain</title>
		<link>http://joewheatley.net/black-swan-white-mountain/</link>
		<comments>http://joewheatley.net/black-swan-white-mountain/#comments</comments>
		<pubDate>Tue, 26 May 2009 16:31:13 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Agriculture]]></category>
		<category><![CDATA[Climate]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=329</guid>
		<description><![CDATA[Everyone knows that tree rings mark annual variations in tree growth. Biomass production is influenced by climatic variability  (precipitation,temperature, sunlight) or disease, pests, fire etc. Tree rings can be measured very accurately and used to recover information about past climate over thousands of years.
The World Data Center for Paleoclimate (NOAA) maintains a  tree ring database. [...]]]></description>
			<content:encoded><![CDATA[<p>Everyone knows that tree rings mark annual variations in tree growth. Biomass production is influenced by climatic variability  (precipitation,temperature, sunlight) or disease, pests, fire <em>etc</em>. Tree rings can be measured very accurately and used to recover information about past climate over thousands of years.</p>
<p>The World Data Center for Paleoclimate (NOAA) maintains a  <strong><a href="http://www.ncdc.noaa.gov/paleo/treering.html" target="_blank">tree ring database</a></strong>. As well as raw data on growth rings for individual trees, the database contains &#8220;chronology&#8221; files labelled  ***.crn. These files contain annual growth data averaged over small stands of trees, and indexed relative to the mean growth. Thus an index value of 1000 is average growth, index lower than 1000 is below average growth etc. Here is a simple <strong><a href="http://joewheatley.net/wp-content/uploads/2009/05/methuselah.txt" target="_blank">R script</a></strong> which uploads the chronology file  &#8220;ca535.crn&#8221; file into a time-series treeRing.ts. <strong><a href="http://joewheatley.net/wp-content/uploads/2009/05/crn535.txt" target="_blank">ca535.crn</a></strong> describes annual growth in an ancient Bristlecone Pine forest in the White Mountains of California from 6000 BC to 1979 AD. The world&#8217;s oldest known (non-clonal) tree  is a member of the stand of Bristlecone Pines making up this index. The area is known as<em> Methuselah Grove.</em></p>
<p>You can click on the plot below to see a full-screen version.</p>
<p><a href="http://joewheatley.net/wp-content/uploads/2009/05/bristlecone.png"><img class="size-full wp-image-340 alignnone" title="bristlecone" src="http://joewheatley.net/wp-content/uploads/2009/05/bristlecone.png" alt="bristlecone" width="908" height="243" /></a></p>
<p>Most of the volatility in the growth of Bristlecone Pines in the White Mountains is due to drought. The investigator <a href="http://www.sonic.net/bristlecone/non-Netscape/Schulman.html" target="_blank">Edmund Schulman</a> wrote &#8220;<em>There is something a little fantastic in the persistent ability of a  4,000-year-old tree to shut up shop almost everywhere throughout its stem in a very  dry year, and faithfully to reawaken to add many new cells in a favorable year</em>.&#8221; (1958). With so much high quality data (7980 points), many interesting questions can be asked about climatic variability at this location. For example, a statistical model can be built relating recent tree ring growth to observed precipitation and temperature, say. Such models are used to extract information about historical climate.</p>
<p>The following <em>R</em> commands produce a histogram of tree ring growth values (probability distribution) as well as a smooth curve fit:</p>
<p><code>library(MASS)<br />
truehist(treeRing.ts,nbins=50,main="Distribution of Growth Index at Methuselah Grove",font.main=2,font.axis=2,font.lab=3,xlab="Growth Index",ylab="Density");<br />
lines(density(treeRing.ts),lwd=2)</code></p>
<p style="text-align: center;">
<p><a href="http://joewheatley.net/wp-content/uploads/2009/05/histbristlecone.png"><img class="alignnone size-full wp-image-407" title="histbristlecone" src="http://joewheatley.net/wp-content/uploads/2009/05/histbristlecone.png" alt="histbristlecone" width="678" height="346" /></a></p>
<p>The distribution approximates a bell-shaped curve, but there is a pronounced &#8220;fat-tail&#8221; on the low growth side. For example, there  is only one year with growth index &gt; 1900, but there are 44 years with growth &lt; 100.</p>
<p>If you only ever read one book about statistics, make sure it is Nassim Taleb&#8217;s book <em>The Black Swan</em>. Fat-tailed distributions (such as drought impact on Bristlecone Pines) are the norm in complex systems. Many of Taleb&#8217;s examples are from finance and economics. However geophysical time-series, such as precipitation levels, often have this property. When making inferences from data, it is important to decide in advance what kind of process you are likely to be dealing with. A process where there is no clear constraint on the outcome (such as a physical conservation law) is likely to be subject to fat-tail events.</p>
<p>The asymmetry in growth distribution in White Mountain Bristlecone Pines is due to the fact that higher than normal precipitation levels cannot boost growth beyond the limits set by available temperature, sunlight and plant physiology. Drought years, however, virtually eliminate growth.</p>
<p>Traditional farmers in drought-prone parts of the world are acutely aware of the fat-tailed distribution. Farming practices which appear sub-optimal to some, may in fact be adapted to the existence of fat-tails. Nassim Taleb points out that risk managers in banks tend to behave as though <em>Black Swans</em> do not exist.</p>
<p>In that sense, bankers know less about real-world statistics than subsistence farmers.</p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/black-swan-white-mountain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Climate Variability &#8211; Weather Stations</title>
		<link>http://joewheatley.net/climate-variability-weather-stations/</link>
		<comments>http://joewheatley.net/climate-variability-weather-stations/#comments</comments>
		<pubDate>Mon, 04 May 2009 16:01:03 +0000</pubDate>
		<dc:creator>joe</dc:creator>
				<category><![CDATA[Climate]]></category>
		<category><![CDATA[Add new tag]]></category>

		<guid isPermaLink="false">http://joewheatley.net/?p=244</guid>
		<description><![CDATA[Surface weather stations are an important source of climatic information. They provide standardised daily instrumental time-series with records going back decades or even centuries in some cases. This post shows how to retrieve station data and extract information about climatic variability using the remarkable statistical computing language R.
The U.S. National Climate Data Center (NCDC) maintain [...]]]></description>
			<content:encoded><![CDATA[<p>Surface weather stations are an important source of climatic information. They provide standardised daily instrumental time-series with records going back decades or even centuries in some cases. This post shows how to retrieve station data and extract information about climatic variability using the remarkable statistical computing language <em>R</em>.</p>
<p>The U.S. National Climate Data Center (NCDC) maintain a large dataset called the Global Historical Climate Network (ftp site <strong><a href="ftp://ftp.ncdc.noaa.gov/pub/data/ghcn/daily/" target="_blank">GHCN</a></strong>) &#8211; temperature and other data collected at more than 40,000 weather stations. Unfortunately, individual weather stations come and go and there are many gaps in the data. A much smaller database of about 1,000 stations is maintained by the Global Climate Observing System (<strong><a href="http://gosic.org/ios/GCOS-main-page.htm" target="_blank">GCOS</a></strong>) sponsored by World Meteorological Organisation (WMO) and other organisations. We focus on this subset because these stations are up-to-date data and reliable.</p>
<p>The locations of GCOS Global Surface Network (GSN) stations are shown in Google Earth/Maps below.</p>
<div style="text-align: 0;"><iframe src="http://joewheatley.net/wp-content/plugins/xml-google-maps/xmlgooglemaps_show.php?kmlid=3" style="border: 0px; width: 800px; height: 500px;" name="Google_KML_Maps" frameborder="0"></iframe></div>
<p><a href="http://joewheatley.net/wp-content/uploads/2009/05/gcosgsn.kml"> </a></p>
<p>To see more stations, zoom in to a region of interest and switch to Satellite view. Click on the GCOS logo placemark to see GHCN station ID and other station metadata. If  Google Earth is installed on your system, it may be better to copy the text file <a href="http://joewheatley.net/wp-content/uploads/2009/05/gcosgsn.txt"> <strong>gcosgsn</strong></a>, paste into notepad and save as <em>gcosgsn.kml</em>. Clicking on this <em>.kml</em> file opens GE on your system with all GSN stations visible.</p>
<p><em>gscosgsn </em>was generated using an excel spreadsheet. Improved GSN geo-location data were obtained by cross-referencing the GCOS list with NOAA&#8217;s <strong><a href="ftp://ftp.ncdc.noaa.gov/pub/data/gsod/ish-history.txt" target="_blank">GSOD</a></strong> (0.001<sup>o</sup> accuracy).  Other metadata, such as station start year, can easily be added.</p>
<p>How can the climatic variability at a particular GSN station be examined? To do this <em>R</em> will need to be installed on your system. Install it from <a href="http://cran.r-project.org/" target="_blank"><strong>CRAN</strong> </a> if required.</p>
<p>In what follows, a monthly time-series analysis is carried out on a user-selected station. Daily GHCN station data are read into R courtesy of a  <strong><a href="http://www.climateaudit.org/scripts/station/read.ghcnd.txt">data-scraping</a></strong> script from <em>Climate Audit</em>. <em>anything</em>.ts indicates an R time-series object by the way.</p>
<ol>
<li>Start R. You will see the friendly command line prompt in the R console.</li>
<p><code>&gt;</code></p>
<li>Enter the following command to load required <strong><a href="http://joewheatley.net/wp-content/uploads/2009/05/ghcntor.txt"><em>R</em> script</a></strong>.</li>
<p><code>source("http://joewheatley.net/wp-content/uploads/2009/05/ghcntor.txt")</code></p>
<li>Select a station of interest in GE/GE Plugin. Copy the GHCN station ID from the placemark balloon and enter the following command to load the GHCN data file into R<code> gsn1 &lt;-read.ghcnd("<em>paste_id_here</em>")</code></li>
<li>Plot the mean monthly temperature by copying and paste the following into R<br />
<code>gsn1.ts &lt;- getTMean.ts(gsn1);<br />
plot(gsn1.ts, main="Mean Monthly Temperature UCCLE Belgium", ylab="o C",xlab="Year",font.axis=2,font.lab=2)<br />
lines(getTrend.ts(gsn1.ts),col=2,lwd=2);<br />
maxTrend &lt;- max(getTrend.ts(gsn1.ts));<br />
maxLine.ts &lt;- ts( rep(maxTrend,length(gsn1.ts)), start= start(gsn1.ts), deltat=1/12)<br />
lines(maxLine.ts, col=2,lty=2);</code></li>
<li>To see the climatic variability<br />
<code>plot(getResidual.ts(gsn1.ts), main="Monthly Temperature Anomaly UCCLE Belgium", ylab="o C",xlab="Year",font.axis=2,font.lab=2,col=3);</code></li>
</ol>
<p>For example, station ID  BE000006447 (UCCLE Belgium) generates the plots below.</p>
<p style="text-align: center;"><a href="http://joewheatley.net/wp-content/uploads/2009/05/uccletmean.png"><img class="aligncenter size-full wp-image-285" title="uccletmean" src="http://joewheatley.net/wp-content/uploads/2009/05/uccletmean.png" alt="uccletmean" width="844" height="319" /></a></p>
<p style="text-align: left;"><a href="http://joewheatley.net/wp-content/uploads/2009/05/uccletanomaly.png"><img class="aligncenter size-full wp-image-286" title="uccletanomaly" src="http://joewheatley.net/wp-content/uploads/2009/05/uccletanomaly.png" alt="uccletanomaly" width="843" height="319" /></a></p>
<p style="text-align: left;">The periodic black line in the first plot is the monthly average station temperature. Data continuity is from 1831 in this instance. The red line is the long-term trend when seasonal variations and residual random variations are extracted by means of the <em>R</em> <em>stl</em> function. As you can see it indicates that mean temperatures at UCCLE are the highest they have been since 1831.  Compared to the average temperature for 1831-2009, this anomaly is about 1.36<sup>o</sup>. A prime candidate for this is global warming, but local factors such as land use change or increased urbanisation also affect individual station data.</p>
<p style="text-align: left;">The temperature anomaly plot  (green line) shows the residual temperature variations at UCCLE. Of course these have a  larger year-to-year influence than the trend line variations.</p>
<p style="text-align: left;">If you have followed the above steps you have done something at once both cool and complex. You have combined the most reliable climate data with the best available statistical resource.</p>
]]></content:encoded>
			<wfw:commentRss>http://joewheatley.net/climate-variability-weather-stations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.573 seconds -->
