Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
I will be in Lyon next Monday to give a talk on “Modeling heat-waves: return period for non-stationary extremes” in a workshop entitled
I will add here some code used to generate some graphs I will comment. The graph below it the daily minimum temperature,
TEMP=read.table("http://freakonometrics.blog.free.fr/ public/data/TN_STAID000038.txt",header=TRUE,sep=",") D=as.Date(as.character(TEMP$DATE),"%Y%m%d") T=TEMP$TN/10 day=as.POSIXlt(D)$yday+1 an=trunc(TEMP$DATE/10000) plot(D,T,col="light blue",xlab="Minimum daily temperature in Paris",ylab="",cex=.5) abline(R,lwd=2,col="red")
We can clearly see an increasing linear trend. But we do not care (too much) here about the increase of the average temperature, but more dispersion, and tails. Here are decenal box-plots
library(quantreg) PENTESTD=PENTE=rep(NA,99) for(i in 1:99){ R=rq(T~D,tau=i/100) PENTE[i]=R$coefficients[2] PENTESTD[i]=summary(R)$coefficients[2,2] } m=lm(T~D)$coefficients[2] plot((1:99)/100,(PENTE/m-1)*100,type="b") segments((1:99)/100,((PENTE-2*PENTESTD)/m-1)*100, (1:99)/100,((PENTE+2*PENTESTD)/m-1)*100, col="light blue",lwd=3) points((1:99)/100,(PENTE/m-1)*100,type="b") abline(h=0,lty=2,col="red")
In order to get a better understanding of the graph above, here are slopes of quantile regressions associated to different probabilities,
The annualized maxima (of minimum temperature, i.e. warmest night of the year)
i.e. the regression of yearly maximas.
tail index of a Generalized Pareto distribution
Instead of looking at observation over a century (the trend is obviously linear), we can focus on seaonal behavior,
B=data.frame(Y=rep(T,3),X=c(day,day-365,day+365), A=rep(an,3)) library(quantreg) library(splines) Q50=rq(Y~bs(X,10),data=B,tau=.5) Q95=rq(Y~bs(X,10),data=B,tau=.95) Q05=rq(Y~bs(X,10),data=B,tau=.05) YP95=predict(Q95,newdata=data.frame(X=1:366)) YP05=predict(Q05,newdata=data.frame(X=1:366)) I=(T>predict(Q95))|(T<predict(Q05)) YP50=predict(Q50,newdata=data.frame(X=1:366)) plot(day[I],T[I],col="light blue",cex=.5) lines(1:365,YP95[1:365],col="blue") lines(1:365,YP05[1:365],col="blue") lines(1:365,YP50[1:365],col="blue",lwd=3)
with on red series from 1900 till 1920, and on purple from 1990 till 2010. If we remove the linear trend, and the seasonal cycle, here are the residuals, assume to be stationary,
on during the year
Obviously, something has been missed,
The graph below is the volatility of the residual series, within the year,
Instead of looking at volatility, we can focus on tails, with tail index per month,
mois=as.POSIXlt(D)$mon+1 Pmax=Dmax=matrix(NA,12,2) for(s in 1:12){ X=T3[mois==s] FIT=gpd(X,5) Pmax[s,1:2]=FIT$par.ests Dmax[s,1:2]=FIT$par.ses } plot(1:12,Pmax[,1],type="b",col="blue", ylim=c(-.6,0)) segments(1:12,Pmax[,1]+2*Dmax[,1],1:12,Pmax[,1]- 2*Dmax[,1],col="light blue",lwd=2) points(1:12,Pmax[,1],col="blue") text(1:12,rep(-.5,12),c("JAN","FEV","MARS", "AVR","MAI","JUIN","JUIL","AOUT","SEPT", "OCT","NOV","DEV"),cex=.7)
At the end of the talk, I will also mention multiple city models, e.g. Paris and Marseilles,
If we look at residuals (once we have removed the linear trend and the seasonal cycle) we observe some positive dependence
In order to study (strong) tail dependence, define
It looks like there is no tail dependence (in the uper tail). But it is also possible to study weaker tail dependence, through
Slides can be visualized below, I will upload them soon,
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.