Category Archives: Time Series Charts

R Script to Build Animation of Arctic Sea Ice Extent – Update 12/20/13

In my previous post I showed an animation of Arctic Sea Ice Extent from the 1980′s through August, 2012 (link).  In this post, I show how to build this Arctic Sea ice Extent  animated chart.

Source Data

The Arctic Ice Sea Monitor (link)   updates their daily csv file with the latest satellite based arctic sea ice measurements.  Here is the daily csv file link.

R script

To develop my animation of the daily Arctic Sea Ice extent, I decided to produce a plot for each year that showed the current year in red and the previous years in grey.  I go this idea from Tamino at Open Mind.

Here is my R script:
Be sure to set your working directory to appropriate location!!

library(animation)
  ani.options(convert=shQuote('C:\\Program Files (x86)\\ImageMagick-6.7.9-Q16\\convert.exe'))
## Use setwd() to specify directory where you want png images to be saved
  setwd("<strong>C:\\R_Home\\Charts & Graphs Blog\\RClimateTools\\Arctic_sea-ice_extent</strong><em>")
# use png_yn to toggle between plot output to png file or screen
  png_yn <- "y"
# Establish chart series patterns and colors to be able to distinguish current yr from previous years in plot
  pattern <- c(rep("dashed", 5), rep("solid", 12))
  ser_col <- c(rep("black",5),rep("grey",12))
# Establish chart annotations for date, chart title,
  what_date <- format(Sys.Date(), "%b %d, %Y")  # with month as a word
  title <- paste("IARC-JAXA Daily Arctic Sea Ice Extent*\n", what_date)
  note_1 <- "*Extent - Area of Ocean with at least 15% Sea Ice"
  par(oma=c(2,1,1,1)); par(mar=c(2,4,2,1))
#  Day of year axis setup
## Set up basic day of year vectors (mon_names, 1st day of mon)
  mon_names <- c("Jan", "Feb", "Mar", "April", "May", "June", "July", "Aug", "Sept", "Oct","Nov","Dec")
  mon_doy <- c(1,32,60,91,121,151,182,213,244,274,305,335,366)
  mon_pos <- c(16, 46, 75, 106,135, 165, 200, 228, 255, 289, 320, 355)
# Read JAXA Arctic Sea ice Extent csv file
# Data File: Month,Day,1980's Avg,1990's Avg,2000's Average,2002:2012
  link <- "http://www.ijis.iarc.uaf.edu/seaice/extent/plot.csv"
  j_data <- read.csv(link, header = F, skip=1, na.strings = c(-9999))
 series_id <-  c("mo", "day", "1980s", "1990s", "2000s","2002", "2003", "2004", "2005", "2006", "2007", "2008", "2009",
                "2010", "2011", "2012", "2013")
 colnames(j_data) <- series_id
# File has data for each day in 366 day year
# Establish Day of year
  for (i in 1:366)   j_data$yr_frac[i] <- i
    #convert ASIE to millions Km^2
   j_data[,c(3:17)] <- j_data[,c(3:17)]/1000000
# Loop through years
   for (j in 3:17)
  {
     png_name <- paste("asie",series_id[j],".png",sep="")
      if (png_yn =="y") png(filename=png_name)
      which_yr <- j
      no_yrs <- j
  # Calc min asie for year
    min_asie <- min(j_data[,j], na.rm = T)  # must remove na's to get valid answer
    lab_asie <- round(min_asie,3)
    min_r <- which(j_data[,j] == min_asie)
    min_d <- j_data[min_r,2]
    min_m <- j_data[min_r,1]
    min_date <- paste(min_m,"/",min_d,"/",series_id[j], sep="")
    plot(j_data[,17],  type="n", col = "grey",axes=F, xlab="",
       ylab="Arctic Sea Ice Extent - Millions Sq KM",
       ylim=c(0,15),xaxs="i", yaxs = "i",
       main=title)
    text(20, 1.5, note_1, cex = 0.8, adj=0, col = "black")
    text(20,1,"Data Source: http://www.ijis.iarc.uaf.edu/seaice/extent/plot.csv", cex = 0.8, adj=0,col = "black")
    mtext("D Kelly O'Day - http://chartsgraphs.wordpress.com", 1,0.5, adj = 0, cex = 0.8, outer=T)
  # custom x & y axes
    axis(side = 1, at=mon_doy, labels=F, xaxs="i")
    axis(side=1, at= mon_pos, labels=mon_names, tick=F, line=F, xaxs="i")
    axis(side=2,  yaxs="i", las=1)
    points(70, min_asie, col = "red",pch=19, cex = 2)
  # Add each previous yr data series as light grey line
  for (n in 3:no_yrs)
  {
    points(j_data[,18], j_data[,n], type="l",lwd=1,lty=pattern[j], col=ser_col[j])
    text(182,14,series_id[j], col = "red", cex = 1.1)
  }
  points(j_data[,18], j_data[,j], col="red", type="l",lwd=2.5)
  text(182,14,series_id[j], col = "red", cex = 1.1)
  text(120,min_asie+0.5, min_date, col="red", cex=0.9)
  text(120,min_asie, lab_asie, col="red", cex=0.9)
  if(png_yn == "y") dev.off()
}
## copy last png file 3 times to provide pause in animation
if(png_yn== "y")
{
  for (c in 1:2)
  {
    file_name <- paste("asie2012",c, ".png",sep="")
    file.copy(from= "asie2012.png", to = file_name, overwrite=T)
  }
  ani.options(outdir = getwd())    # direct gif output file to working dir
  ani.options(interval= 0.80)
  im.convert("asie*.png", "last_animation.gif")
}

Comparison of UAH and GISS Time Series with Common Baseline

In this post I set both UAH and GISS global temperature anomaly series to a common baseline period (1981-2010)  and compare them. Even though the UAH series is satellite based and GISS series is station based, the series exhibit striking similarities.

Common Baseline

In this previous post, I showed how to convert temperature anomaly time series from one baseline period to another period.  I use this technique in this post to directly compare UAH (baseline 1981-2010) and GISS (baseline 1951-1980) series.

The offsets are as follows:

  • UAH:  -0.000978
  • GISS: 0.34958

Since the UAH TLT 5.4 series is based on a 1981-2010 baseline, the offset is nearly zero (-0.00098 versus 0.0).

Users can reproduce my analysis on their own by downloading my CTS.csv file and applying the offsets to the UAH and GISS series.

Comparison of 1981-2010 Baseline Series

Here is a plot of UAH and GISS 12 month moving averages for 1979 to current: Click to Enlarge Continue reading

Comparison of UAH Anomalies During 1998 & 2010 El Nino – La Nina Oscillations

In this post, I show the UAH global temperature anomaly traces during the 1998 and 2010 El Nino – La Nina oscillations.

Click Image to Enlarge

UAH_NINO34_cyclesThe 1998 UAH anomalies were higher in the peak El Nino period than the comparable 2010 El Nino peak period.  The anomaly drop off from the peaks have been comparable so far.  It will be interesting to see how the current La Nina progresses compared to the  12 month depressed anomaly period following the 1998 El Nino.


September 2011 Arctic Sea Ice Extent Forecast

In this post, I use a quadratic regression model to forecast the  September, 2011  Arctic Sea Ice Extent. The model was developed with  1980 – 2010 data. Links to the R script, source data and  how-to article on polynomial regression are provided.

Arctic Sea Ice Extent Forecast for September, 2011

First, here is my forecast: (Click image to enlarge)

ASIE_forecast_2011

Based on the 1980 – 2010 downward Arctic Sea Ice trend,  my forecast is that September, 2011 SIE will decline  0.36 below 2010 levels, to 4.54 million km^2, with a confidence band of +- 0.59.

How Did I Develop My Forecast?

I have written a number of posts on Arctic Sea Ice Extent (here, here, here). In this post, I used the NSDIC‘s monthly data file (link)  to construct a quadratic regression model of September sea ice extent for the 1980 – 2010 period. I then used this model to predict the September, 2011  Arctic Sea Ice Extent.

I have 2 main learning curve sources for this model:

  • Tamino‘s post on Arctic Sea Ice decline provided the basic idea of using a quadratic model to fit Arctic SIE decline.
  • John Quick’s tutorial on polynomial regression provided the how-to instructions I needed to implement Tamino’s approach in R.

RClimate Script and Links

Here is the link to my RClimate script.

Climate Time Series In a Single CSV File: Update 1

I am pleased to announce my CTS.csv file which includes 18 climate monthly time series in one easy to access csv file. This is part of  my goal of having a user friendly way for do-it-yourself citizen climate scientists to get up-to-date agency climate time series in a painless way.

Update 1: Reader Scott asked if I could provide meta data for the columns in my CTS.csv. This page lists the source agency and data links for the climate data series.

Here’s a snap shot of the first 6 rows of my  CTS.csv file. The data extends from 1880 until the most recent month.  Click image to enlarge

My hope is to make the CTS.csv the go-to file for citizen climate scientists who may want to:

  • Check temperature anomalies trends by series (GISS, HAD, NOAA, RSS, UAH)
  • Assess climate oscillations(AMO, AO, MEI, Nino34,  PDO)  trends
  • Evaluate  CO2 versus temperature anomaly relationships
  • Evaluate relationship between Sunspot numbers and anomaly temperature anomaly trends
  • Compare atmospheric transmission, SATO index  and volcanic activity
  • Assess impact of volcanoes on temperature anomaly trends
  • Compare MEI versus Nino ENSO 34 indicators
  • Assess lower stratospheric trends using RSS’s TLS series

By having these climate time series in a single csv file, R and Excel users can work with up to date data in a convenient form. The file will be automatically updated monthly as the climate agencies release their latest data.

How can CTS.csv Help Do-It-Yourself Citizen Climate Scientists?

Interested climate observers who want to compare global SSTA versus Nino34 trends, for example, have to follow a multiphase process:

  1. Find data file – even with Google this can take time
  2. Download files
  3. Merge 2 or more files to get data  into a usable format – source files all have different formats
  4. Perform analysis

Steps 1-3 can be very time consuming, so many users don’t bother checking out their ideas. Rather, they may rely on climate blog  comments. With CTS.csv and some R or Excel analysis, they can find the facts themselves rather than just having opinions.  They can submit their analysis and charts to blog posts, hopefully increasing the rigor of blog discussions.

Climate bloggers can request that their readers submit charts to back up their climate trend claims.

Data & RClimate Scripts Are All Open Book

All of the RClimate script that I use to produce the CTS.csv is available on-line at this link. Source data links are included in the function for each series.

Volcanic Solar Dimming, ENSO and Temperature Anomalies

In previous posts I have shown plots of global temperature anomaly, volcano and Nino34 trends (here , here). In this post , I want to further  explore the role of volcanic eruptions and Nino34 phases (El Nino, La Nina) on temperature anomalies.

This post shows a 5-panel chart of monthly climate trend data: 1) time line of major volcanoes and Volcanic Explosivity Index (VEI),  2) Mauna Loa Observatory (MLO) Atmospheric  Transmission  (AT) measurements,  3) Stratospheric Aerosol Optical Thickness (SATO) Index,   4) , Nino 34 as an indicator of ENSO and 5)  GISS land-ocean temperature anomaly.

The RClimate script and Climate Time Series data file (CTS.csv) links are provided.

First, here is  the 5-panel chart that I have made showing the monthly volcano time line with Volcano Explosivity Index (VEI) , Atmospheric Transmission at Mauna Loa Observatory, SATO Index as well as the Nino34 SSTA and GISS LOTA. (Click Image to Enlarge)

volcano_VEI_MLOAT_NINO34_GISS_plot

Continue reading

Climate Charts, Data and RClimate Scripts

While there are many online climate data resources, the source data files are in numerous data formats, presenting a challenge to climate citizen scientists who want to retrieve and analyze several climate indicators at the same time.

I have been working to develop a consolidated open access data file and RClimate scripts that users can use to retrieve climate data, conduct their own analysis  and generate their own climate charts.  My goal is to make it easier for climate citizen scientists to get their hands on the data in a simple,  usable format (CSV). This post updates the status of my RClimate efforts.

Continue reading

RClimate: Converting 5 Global Temperature Anomaly Series to A Common Baseline

The 5 global land-ocean temperature anomaly (LOTA) series use different baseline periods, making direct comparisons between the series more difficult than it would be if each series had the same baseline period.

This post shows how to convert the 5 major LOTA series to a common baseline. Links to on-line source data file and RClimate script are provided. Here is long term LOTA trends using a 133 month moving average and 1979-2008 baseline.

Click to enlarge

Continue reading

Nov 2010 Year-To-Date Global Temperature Anomaly 1st in 2 Series, 2nd in 3 Series: Update

This post shows the YTD global land – ocean temperature anomaly (LOTA) trends for the 5 major series through November, 2010 and how  2010 YTD ranks over the entire record for each series.  The source data  file link is provided.

Continue reading

Oct 2010 Year-To-Date Global Temperature Anomaly 1st in 2 Series, 2nd in 3 Series

This post shows the YTD global land – ocean temperature anomaly (LOTA) trends for the 5 major series through October, 2010 and how  2010 YTD ranks over the entire record for each series. The source data  file link is provided.

Continue reading