lock-in avoidance and quality assurance

127
Outline Lock-In Avoidance Quality Assurance Lock-In Avoidance and Quality Assurance Paul D. Gilbert No Fixed Affiliation R in Finance Chicago May, 2012

Upload: others

Post on 24-Jan-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Avoidance and Quality Assurance

Paul D. Gilbert

No Fixed Affiliation

R in FinanceChicago

May, 2012

Page 2: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Outline

(By example – not a comprehensive treatment)

1. Lock-In Avoidance

setRNGtframepadiTSdbi

2. Quality Assurance

automateR

Page 3: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

What do I mean by Lock-In

tied to legacy programs with no easy way to advance

vender or lock-in to your own programs

Page 4: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

What do I mean by Lock-In

tied to legacy programs with no easy way to advance

vender or lock-in to your own programs

Page 5: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

setRNG

originally because of Splus RNG change

utilities to record / set seed and other RNG information

package has tests to verify that the RNG has not changed

Page 6: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

setRNG

originally because of Splus RNG change

utilities to record / set seed and other RNG information

package has tests to verify that the RNG has not changed

Page 7: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

setRNG

originally because of Splus RNG change

utilities to record / set seed and other RNG information

package has tests to verify that the RNG has not changed

Page 8: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 9: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 10: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 11: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 12: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 13: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 14: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 15: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

tframe

this is used by many of my other packages

originally because of Splus rts, cts

. . . but has been useful in R too:

ts, mts, zoo, xts, its, tis, timeSeries

tframePlus

calculations / models based on sequence not time frame

tframe(y) ← tframe(x)

some end-user utilities recently moved to package tfplot

Page 16: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

PADI

padi client / server

originally because of migration from inhouse DB to Fame

(keep data separate from applications)

PADI server wraps vendor’s API, client uses only PADI API

so, the vendor / version can be easily replaced

largely replaced by TSfame – but the idea could be useful in othercontexts.

Page 17: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

PADI

padi client / server

originally because of migration from inhouse DB to Fame

(keep data separate from applications)

PADI server wraps vendor’s API, client uses only PADI API

so, the vendor / version can be easily replaced

largely replaced by TSfame – but the idea could be useful in othercontexts.

Page 18: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

PADI

padi client / server

originally because of migration from inhouse DB to Fame

(keep data separate from applications)

PADI server wraps vendor’s API, client uses only PADI API

so, the vendor / version can be easily replaced

largely replaced by TSfame – but the idea could be useful in othercontexts.

Page 19: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

PADI

padi client / server

originally because of migration from inhouse DB to Fame

(keep data separate from applications)

PADI server wraps vendor’s API, client uses only PADI API

so, the vendor / version can be easily replaced

largely replaced by TSfame – but the idea could be useful in othercontexts.

Page 20: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

PADI

padi client / server

originally because of migration from inhouse DB to Fame

(keep data separate from applications)

PADI server wraps vendor’s API, client uses only PADI API

so, the vendor / version can be easily replaced

largely replaced by TSfame – but the idea could be useful in othercontexts.

Page 21: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

PADI

padi client / server

originally because of migration from inhouse DB to Fame

(keep data separate from applications)

PADI server wraps vendor’s API, client uses only PADI API

so, the vendor / version can be easily replaced

largely replaced by TSfame – but the idea could be useful in othercontexts.

Page 22: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

TSdbi http://tsdbi.r-forge.r-project.org/

Page 23: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

TSdbi http://tsdbi.r-forge.r-project.org/

Page 24: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 25: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 26: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 27: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 28: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 29: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 30: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

API and time representation

origin: SQL time series db

similarity with padi and fame

led to standardized time series database interface (TSdbi)

(I use economic not financial data)

flexible WRT time series representation

the API is defined by package TSdbi

explanation by example:

Page 31: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1 - TSconnect, TSget

connect to a database

require("TSfame")

con <- TSconnect("fameServer", dbname=etsmfacansim,

service = "2959", host = "ets", stopOnFail = TRUE)

or

require("TSpadi")

con <- TSconnect("padi", dbname="ets")

or

require("TSMySQL")

con <- TSconnect("MySQL",dbname="ets")

or PostgreSQL, SQLLite, ODBC, (Oracle)

then

z <- TSget(serIDs="V122707", con=con)

require("tfplot")

Page 32: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1 - TSconnect, TSget

connect to a database

require("TSfame")

con <- TSconnect("fameServer", dbname=etsmfacansim,

service = "2959", host = "ets", stopOnFail = TRUE)

or

require("TSpadi")

con <- TSconnect("padi", dbname="ets")

or

require("TSMySQL")

con <- TSconnect("MySQL",dbname="ets")

or PostgreSQL, SQLLite, ODBC, (Oracle)

then

z <- TSget(serIDs="V122707", con=con)

require("tfplot")

Page 33: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1 - TSconnect, TSget

connect to a database

require("TSfame")

con <- TSconnect("fameServer", dbname=etsmfacansim,

service = "2959", host = "ets", stopOnFail = TRUE)

or

require("TSpadi")

con <- TSconnect("padi", dbname="ets")

or

require("TSMySQL")

con <- TSconnect("MySQL",dbname="ets")

or PostgreSQL, SQLLite, ODBC, (Oracle)

then

z <- TSget(serIDs="V122707", con=con)

require("tfplot")

Page 34: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1 - TSconnect, TSget

connect to a database

require("TSfame")

con <- TSconnect("fameServer", dbname=etsmfacansim,

service = "2959", host = "ets", stopOnFail = TRUE)

or

require("TSpadi")

con <- TSconnect("padi", dbname="ets")

or

require("TSMySQL")

con <- TSconnect("MySQL",dbname="ets")

or PostgreSQL, SQLLite, ODBC, (Oracle)

then

z <- TSget(serIDs="V122707", con=con)

require("tfplot")

Page 35: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1 - TSconnect, TSget

connect to a database

require("TSfame")

con <- TSconnect("fameServer", dbname=etsmfacansim,

service = "2959", host = "ets", stopOnFail = TRUE)

or

require("TSpadi")

con <- TSconnect("padi", dbname="ets")

or

require("TSMySQL")

con <- TSconnect("MySQL",dbname="ets")

or PostgreSQL, SQLLite, ODBC, (Oracle)

then

z <- TSget(serIDs="V122707", con=con)

require("tfplot")

Page 36: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1

tfplot(ytoypc(z))

1980 1990 2000 2010

−50

510

1520

y to

y %

ch S

erie

s 1

Page 37: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1

tfplot(ytoypc(z), start=c(2000,1), ylab="(V122707) y/y Growth",

Title="Canadian Consumer Credit",

lastObs=TRUE, source="Source: Bank of Canada")

2000 2002 2004 2006 2008

46

810

1214

(V12

2707

) y/y

Gro

wth

Canadian Consumer Credit

Source: Bank of Canada Last observation: Jan 2009

Page 38: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1

or specify the time series representation

z <- TSget(serIDs="V122707", con=con,

TSrepresentation="zoo")

z <- TSget(serIDs="V122707", con=con,

TSrepresentation="tis")

can set defaults for connection and representation

z <- TSget("V122707")

Page 39: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 1

or specify the time series representation

z <- TSget(serIDs="V122707", con=con,

TSrepresentation="zoo")

z <- TSget(serIDs="V122707", con=con,

TSrepresentation="tis")

can set defaults for connection and representation

z <- TSget("V122707")

Page 40: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

SQL plugins

MySQL, PostgreSQL, SQLLite, ODBC, (Oracle)

SQL: A, S, Q, M, W, B, D, U(minutely), I(irregular with a date),T(irregular with a date and time)

Meta (lookup and documentation)

Page 41: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

SQL plugins

MySQL, PostgreSQL, SQLLite, ODBC, (Oracle)

SQL: A, S, Q, M, W, B, D, U(minutely), I(irregular with a date),T(irregular with a date and time)

Meta (lookup and documentation)

Page 42: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

SQL plugins

MySQL, PostgreSQL, SQLLite, ODBC, (Oracle)

SQL: A, S, Q, M, W, B, D, U(minutely), I(irregular with a date),T(irregular with a date and time)

Meta (lookup and documentation)

Page 43: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 44: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 45: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 46: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 47: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 48: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 49: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 50: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

non-SQL plugins

TSfame wraps fame package, interface to Fame

TSgetSymbol wraps getSymbols in quantmod

TShistQuote wraps get.hist.quote in package tseries

TSxls wraps read.xls in gdata, and wget

TSzip wraps read.xls in gdata, wget, and unzip

phasing out TSpadi (RPC connection to server)

TSsdmx currently wraps RCurl, XML (but not working)

TScompare for comparing series on different connections

Page 51: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 2 - TSgetSymbol and TShistQuote

require("TSgetSymbol")

require("TShistQuote")

ya1 <- TSconnect("getSymbol", dbname="yahoo")

ya2 <- TSconnect("histQuote", dbname="yahoo")

ibmC1 <- TSget("ibm", ya1, quote = "Close", start="2011-01-03")

ibmC2 <- TSget("ibm", ya2, quote = "Close", start="2011-01-03")

zoo indexes are of different classes: Date vs POSIXct; this fixes it:

tframe(ibmC2) <- tframe(ibmC1)

Page 52: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

example 2 - TSgetSymbol and TShistQuote

tfplot(ibmC2, ibmC1, ylab="IBM Close", source="Source: Yahoo",

Title="IBM via getSymbol and histQuote", lastObs=TRUE,

legend=c("via histQuote (black)", "via getSymbol (red)"))

2011 2012

150

160

170

180

190

200

210

IBM

Clo

se

Source: Yahoo Last observation: 2012−03−30

via histQuote (black)via getSymbol (red)

IBM via getSymbol and histQuote

Page 53: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

and

TScompare (on R-forge) is for doing this sort of check

getSymbols can access FRED and other sources

Page 54: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

and

TScompare (on R-forge) is for doing this sort of check

getSymbols can access FRED and other sources

Page 55: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Financial Data

TS SQL packages can handle daily high/low/close as separate series

and even tick data in theory

but financial data might benefit from a slightly different API

Page 56: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Financial Data

TS SQL packages can handle daily high/low/close as separate series

and even tick data in theory

but financial data might benefit from a slightly different API

Page 57: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Financial Data

TS SQL packages can handle daily high/low/close as separate series

and even tick data in theory

but financial data might benefit from a slightly different API

Page 58: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Vintage (Realtime) Data

2000 2002 2004 2006 2008 2010

46

810

1214

Con

sum

er C

redi

t (V

1227

07) y

/y G

row

th

Vintages 2003−01−07 to 2011−06−10

Source: Bank of Canada Last observation: Mar 2011

Page 59: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

identifying vintage outliers

googleviz

Page 60: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Summary

examples to help avoid lock-in / leverage with vendors

lowest common denominator

much additional functionality in many wrapped packages

but: TSexists, TSdates, TSput, TSreplace, TSdelete

TSdescription, TSdoc, TSlabel, TSsource, TSvintages, . . .

windowing

Page 61: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Summary

examples to help avoid lock-in / leverage with vendors

lowest common denominator

much additional functionality in many wrapped packages

but: TSexists, TSdates, TSput, TSreplace, TSdelete

TSdescription, TSdoc, TSlabel, TSsource, TSvintages, . . .

windowing

Page 62: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Summary

examples to help avoid lock-in / leverage with vendors

lowest common denominator

much additional functionality in many wrapped packages

but: TSexists, TSdates, TSput, TSreplace, TSdelete

TSdescription, TSdoc, TSlabel, TSsource, TSvintages, . . .

windowing

Page 63: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Summary

examples to help avoid lock-in / leverage with vendors

lowest common denominator

much additional functionality in many wrapped packages

but: TSexists, TSdates, TSput, TSreplace, TSdelete

TSdescription, TSdoc, TSlabel, TSsource, TSvintages, . . .

windowing

Page 64: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Summary

examples to help avoid lock-in / leverage with vendors

lowest common denominator

much additional functionality in many wrapped packages

but: TSexists, TSdates, TSput, TSreplace, TSdelete

TSdescription, TSdoc, TSlabel, TSsource, TSvintages, . . .

windowing

Page 65: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Lock-In Summary

examples to help avoid lock-in / leverage with vendors

lowest common denominator

much additional functionality in many wrapped packages

but: TSexists, TSdates, TSput, TSreplace, TSdelete

TSdescription, TSdoc, TSlabel, TSsource, TSvintages, . . .

windowing

Page 66: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Future

ALFRED?

SDMX?

StatCan?

OLAP cubes?

hdf5?

(open to help)

Page 67: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Future

ALFRED?

SDMX?

StatCan?

OLAP cubes?

hdf5?

(open to help)

Page 68: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Future

ALFRED?

SDMX?

StatCan?

OLAP cubes?

hdf5?

(open to help)

Page 69: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Future

ALFRED?

SDMX?

StatCan?

OLAP cubes?

hdf5?

(open to help)

Page 70: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Future

ALFRED?

SDMX?

StatCan?

OLAP cubes?

hdf5?

(open to help)

Page 71: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Future

ALFRED?

SDMX?

StatCan?

OLAP cubes?

hdf5?

(open to help)

Page 72: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Quality Assurance

not R CMD check –as-cran (I assume everyone takes full advantageof package checks)

even with layers, how does one keep things working?

... and up to date!

(not comprehensive, just some ideas)

Page 73: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Quality Assurance

not R CMD check –as-cran (I assume everyone takes full advantageof package checks)

even with layers, how does one keep things working?

... and up to date!

(not comprehensive, just some ideas)

Page 74: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Quality Assurance

not R CMD check –as-cran (I assume everyone takes full advantageof package checks)

even with layers, how does one keep things working?

... and up to date!

(not comprehensive, just some ideas)

Page 75: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Quality Assurance

not R CMD check –as-cran (I assume everyone takes full advantageof package checks)

even with layers, how does one keep things working?

... and up to date!

(not comprehensive, just some ideas)

Page 76: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Some History

alternative source considerations started my use of R

setRNG with R RNG implemented in Splus allowed parallel operationfor a few years

Statlib: static S code with no testing and little documentation

R packaging system finalized my conversion to R

automateR has tools and extension of tools I have used for packagedevelopment

Page 77: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Some History

alternative source considerations started my use of R

setRNG with R RNG implemented in Splus allowed parallel operationfor a few years

Statlib: static S code with no testing and little documentation

R packaging system finalized my conversion to R

automateR has tools and extension of tools I have used for packagedevelopment

Page 78: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Some History

alternative source considerations started my use of R

setRNG with R RNG implemented in Splus allowed parallel operationfor a few years

Statlib: static S code with no testing and little documentation

R packaging system finalized my conversion to R

automateR has tools and extension of tools I have used for packagedevelopment

Page 79: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Some History

alternative source considerations started my use of R

setRNG with R RNG implemented in Splus allowed parallel operationfor a few years

Statlib: static S code with no testing and little documentation

R packaging system finalized my conversion to R

automateR has tools and extension of tools I have used for packagedevelopment

Page 80: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

Some History

alternative source considerations started my use of R

setRNG with R RNG implemented in Splus allowed parallel operationfor a few years

Statlib: static S code with no testing and little documentation

R packaging system finalized my conversion to R

automateR has tools and extension of tools I have used for packagedevelopment

Page 81: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

automateRhttp://automater.r-forge.r-project.org/

Page 82: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

R-forge automateR

Page 83: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

automateRhttp://automater.r-forge.r-project.org/

make files / cron jobs

(no R packages)

Page 84: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

automateRhttp://automater.r-forge.r-project.org/

make files / cron jobs

(no R packages)

Page 85: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 86: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 87: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 88: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 89: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 90: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 91: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 92: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

develMake

supports development of multiple R packages

simplified from R News article.

package tests/* first, then build and check

generates/respects dependencies among packages

make

make -j

status: working, stable (one main user, gmake, Ubuntu)

see README file for instructions

Page 93: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 94: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 95: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 96: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 97: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 98: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 99: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 100: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 101: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 102: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

context

large organizations with IT departmentsusers do not have/want responsibility/control of installing upgradesupgrading is done ”hesitantly” by ITusers do not have root privileges, cannot install system libraries, etc.users depend on system administrators to install R and librariessystem administrators are paranoid about stabilitysite specific testing is usualpath setting to select an R version is something users can do

clickless

Page 103: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 104: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 105: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 106: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 107: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 108: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 109: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 110: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 111: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 112: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 113: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 114: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 115: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 116: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboAdmin

codify policy (strategy) for R versions, package versions

multiple R versionssite-library, site-library-freshshifts control / responsibility from IT to userssee README.user (README.admin)

automate strategy

automatically install new versions of Rwith packages in site-library and run site specific testsautomatically install new package versions in site-library-fresh andrun site specific testscron job checks regularly for updates, make does installstatus: working, stable, email may be broken, requires gmakebut not widely tested, and mostly on Ubuntuin contrast to debian packages (or rpm) the OS is unchangeddoes not address OS upgrades / backporting?

Page 117: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboRC

automatically download and build R release candidates

run site specific tests (as for RoboAdmin)

status: worked with last two releases, email may be broken (onemain user, gmake, Ubuntu)

Page 118: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboRC

automatically download and build R release candidates

run site specific tests (as for RoboAdmin)

status: worked with last two releases, email may be broken (onemain user, gmake, Ubuntu)

Page 119: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboRC

automatically download and build R release candidates

run site specific tests (as for RoboAdmin)

status: worked with last two releases, email may be broken (onemain user, gmake, Ubuntu)

Page 120: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboTest

RoboAdmin and RoboRC use fixed test suite and do checks whenthere are R version and R package changes

RoboTest uses a fixed R version and does checks when there are Rpackage or test suite changes

runs (third party) test suites – not the package’s self tests

status: in developement

Page 121: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboTest

RoboAdmin and RoboRC use fixed test suite and do checks whenthere are R version and R package changes

RoboTest uses a fixed R version and does checks when there are Rpackage or test suite changes

runs (third party) test suites – not the package’s self tests

status: in developement

Page 122: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboTest

RoboAdmin and RoboRC use fixed test suite and do checks whenthere are R version and R package changes

RoboTest uses a fixed R version and does checks when there are Rpackage or test suite changes

runs (third party) test suites – not the package’s self tests

status: in developement

Page 123: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

RoboTest

RoboAdmin and RoboRC use fixed test suite and do checks whenthere are R version and R package changes

RoboTest uses a fixed R version and does checks when there are Rpackage or test suite changes

runs (third party) test suites – not the package’s self tests

status: in developement

Page 124: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

automateR Future

develMake, RoboAdmin, and RoboRC are stable

RoboTest overlap with R-forge API ?

third party testing

Page 125: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

automateR Future

develMake, RoboAdmin, and RoboRC are stable

RoboTest overlap with R-forge API ?

third party testing

Page 126: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

automateR Future

develMake, RoboAdmin, and RoboRC are stable

RoboTest overlap with R-forge API ?

third party testing

Page 127: Lock-In Avoidance and Quality Assurance

Outline Lock-In Avoidance Quality Assurance

References / Questions

A. Zeileis and G. Grothendieck, “zoo: S3 infrastructure for regular and irregular time series,” Journal of Statistical Software,

vol. 14, no. 6, pp. 1–27, 2005. URL: http://www.jstatsoft.org/v14/i06/.

J. A. Ryan and J. M. Ulrich, xts: eXtensible Time Series, 2011. R package version 0.8-2. URL:

http://CRAN.R-project.org/package=xts.

A. Trapletti and K. Hornik, tseries: Time Series Analysis and Computational Finance, 2012. R package version 0.10-28. URL:

http://CRAN.R-project.org/package=tseries.

J. A. Ryan, quantmod: Quantitative Financial Modelling Framework, 2011. R package version 0.3-17. URL:

http://CRAN.R-project.org/package=quantmod.

J. Hallman, fame: Interface for FAME time series database, 2011. R package version 2.18. URL:

http://CRAN.R-project.org/package=fame.

G. R. Warnes, with contributions from Ben Bolker, G. Gorjanc, G. Grothendieck, A. Korosec, T. Lumley, D. MacQueen,

A. Magnusson, J. Rogers, and others, gdata: Various R programming tools for data manipulation, 2011. R package version 2.8.2.URL: http://CRAN.R-project.org/package=gdata.

D. T. Lang, XML: Tools for parsing and generating XML within R and S-Plus., 2012. R package version 3.9-4. URL:

http://CRAN.R-project.org/package=XML.

D. T. Lang, RCurl: General network (HTTP/FTP/...) client interface for R. R package version 1.91-1. URL:

http://www.omegahat.org/RCurl.

P. D. Gilbert, “R package maintenance,” R News, vol. 4, pp. 21–24, September 2004.