In western North Pacific region, tropical cyclone (TC) activity has been reported to show significant response to ENSO. This study tries to quantify the annual response of total number of TCs and super typhoons to the ENSO variation. Here, Southern Oscillation Index (SOI) is taken into account for indicating the internal variation of ENSO. The strongest response of TC climate to ENSO variation confirms that El Niño (La Niña) increases (decreases) both the intensity and frequency at the same time, though the weights on the two are not equal. Then the directional variability is modeled by negative SOI (NSOI), and the predictions are interpreted as the number of total TCs and super typhoons. Historical level of El Niño and Niña spans from +2\(\sigma\) to -2\(\sigma\) of NSOI. Over the SOI range, the response of total TCs to El Niño and La Niña appears 6 apart (24.6–18.6). On the other hand, the response of super typhoons appears 6.6 apart (7.1–1.5), which is almost the same amount as the response of total TCs, implying that the response of TC climate to ENSO is contributed mostly by super typhoons.
# Sources
#--------------------------------------------------------------------------------
Year=c(1986,2015) ; time=1986:2015
GMSST=read.table('Data/gmsst_jjason_1854to2015.dat',T)[133:162,1]
NSOI=-1*read.table('Data/SOIann_jjason_1951to2015.dat',T)[36:65,1]
NINO12=read.table('Data/nino12_jjason_1854to2015.dat',T)[133:162,1]
NINO3=read.table('Data/nino3_jjason_1854to2015.dat',T)[133:162,1]
NINO34=read.table('Data/nino34_jjason_1854to2015.dat',T)[133:162,1]
NINO4=read.table('Data/nino4_jjason_1854to2015.dat',T)[133:162,1]
# Correlation
#--------------------------------------------------------------------------------
# with GMSST
res=NULL
for (i in 1:5)
{if(i==1) var=NSOI ; if(i==2) var=NINO4 ; if(i==3) var=NINO34
if(i==4) var=NINO3 ; if(i==5) var=NINO12
imsi=cor.test(GMSST,var) ; res=rbind(res,c(imsi$conf.int[1], imsi$estimate,imsi$conf.int[2]))
}
corr=data.frame(lwr=res[,1], cor=res[,2], uppr=res[,3])
# Plot
#--------------------------------------------------------------------------------
par(mfrow=c(1,1),mar=c(5,6,5,2))
collist=c('#326982','#a5e9ff55','#f48000','#fcd9b3')
plot(-999,-999,xlim=c(1,10.5),ylim=c(-1,1),xlab='',ylab='',yaxs='i',axes=FALSE)
polygon(cbind(c(1,2.5,2.5,1),c(rep(corr[1,1],2),rep(corr[1,3],2))),border=NA,col=collist[2]) #SOI
lines(cbind(c(1,2.5),rep(corr[1,2],2)),lwd=6,col=collist[1]) #SOI
polygon(cbind(c(3,4.5,4.5,3),c(rep(corr[2,1],2),rep(corr[2,3],2))),border=NA,col=collist[4]) #NINO4
lines(cbind(c(3,4.5),rep(corr[2,2],2)),lwd=6,col=collist[3]) #SOI
polygon(cbind(c(5,6.5,6.5,5),c(rep(corr[3,1],2),rep(corr[3,3],2))),border=NA,col=collist[4]) #NINO34
lines(cbind(c(5,6.5),rep(corr[3,2],2)),lwd=6,col=collist[3]) #SOI
polygon(cbind(c(7,8.5,8.5,7),c(rep(corr[4,1],2),rep(corr[4,3],2))),border=NA,col=collist[4]) #NINO3
lines(cbind(c(7,8.5),rep(corr[4,2],2)),lwd=6,col=collist[3]) #SOI
polygon(cbind(c(9,10.5,10.5,9),c(rep(corr[5,1],2),rep(corr[5,3],2))),border=NA,col=collist[4]) #NINO12
lines(cbind(c(9,10.5),rep(corr[5,2],2)),lwd=6,col=collist[3]) #SOI
abline(h=0,lty=2,col='#333333')
textlist=c('NSOI','Nino 4', 'Nino 3.4', 'Nino 3', 'Nino 1+2')
for(i in 1:5) text(2*i-0.27,corr[i,2]-0.09,textlist[i],cex=1.2,col='#333333')
for(i in 1:5) text(2*i-0.27,corr[i,2]+0.09,round(corr[i,2],2),cex=1.2,col='#333333')
axis(2,at=seq(-1.0,1.0,0.2),labels=c('-1.0','','-0.6','','-0.2','','0.2','','0.6','','1.0'),cex.axis=1.3,las=1)
mtext('Index',side=1,line=3.4, cex=1.6)
mtext('Correlation coefficient',side=2,line=4, cex=1.6)
box()
Fig. 1. Correlation coefficients of ENSO indices with GMSST. Line and shaded area represent correlation coefficient and its \(95~\%\) confidence interval, respectively. SST-based indices such as Niño 4, Niño 3.4, Niño 3 and Niño 1+2 (in longitudinal order) are colored in orange.
# Sources
#--------------------------------------------------------------------------------
Year=c(1986,2015) ; time=1986:2015
GMSST=read.table('Data/gmsst_jjason_1854to2015.dat',T)[133:162,1]
NSOI=-1*read.table('Data/SOIann_jjason_1951to2015.dat',T)[36:65,1]
AB=read.table('Data/ABtrack2015.dat',T)
# TC climate indicators
#--------------------------------------------------------------------------------
FRQ=as.numeric(table(AB$yr[AB$bst=='JT' & AB$mo>=6 & AB$mo<=11 & AB$yr>=Year[1] & AB$yr<=Year[2]]))
INT130=NULL
for(i in Year[1]:Year[2])
{imsi=AB$lmw[AB$bst=='JT' & AB$yr==i & AB$mo>=6 & AB$mo<=11]
Fn=ecdf(-imsi) ; INT130=c(INT130,Fn(-130))}
# Data
#--------------------------------------------------------------------------------
angle=seq(-90,270,0.1)
corr=NULL ; lwr=NULL ; uppr=NULL
for (i in angle)
{TCI=scale(INT130)*cos(i*pi/180) +scale(FRQ)*sin(i*pi/180)
imsi=cor.test(TCI,NSOI)
corr=c(corr, imsi$estimate) ; lwr=c(lwr,imsi$conf.int[1]) ; uppr=c(uppr,imsi$conf.int[2])
}
highestCorr=max(corr)
highestAngle=angle[which.max(corr)]
lwr[which.max(corr)];highestCorr;uppr[which.max(corr)]
## [1] 0.4804844
## [1] 0.7166916
## [1] 0.8559523
regressionCorr=cor(NSOI,predict(lm(NSOI~INT130+FRQ)))
highestAngle ; highestCorr;regressionCorr
## [1] 30.4
## [1] 0.7166916
## [1] 0.7166919
# check correlation of ACT with NSOI
ACT=scale(INT130)*cos(45*pi/180) +scale(FRQ)*sin(45*pi/180)
cor.test(ACT,NSOI)
##
## Pearson's product-moment correlation
##
## data: ACT and NSOI
## t = 5.0312, df = 28, p-value = 2.547e-05
## alternative hypothesis: true correlation is not equal to 0
## 95 percent confidence interval:
## 0.4373573 0.8406393
## sample estimates:
## cor
## 0.6890547
# Plot
#--------------------------------------------------------------------------------
par(mfrow=c(1,1),mar=c(5,6,5,2))
collist=c('#a5e9ff55','#326982')
plot(-999,-999,xlim=c(-90,270),ylim=c(-1,1), xlab='',ylab='', xaxs='i', yaxs='i',axes=FALSE)
polygon(cbind(c(angle,rev(angle)),c(uppr,rev(lwr))),border=NA,col=collist[1])
abline(h=0,lty=2,col='#333333')
lines(angle,corr,col=collist[2],lwd=8)
abline(v=highestAngle,lwd=6,col='#f48000')
points(highestAngle,highestCorr,pch=16,cex=4,col=collist[2])
text(highestAngle+25,highestCorr+0.13,round(highestCorr,2),cex=1.8,col=collist[2])
axis(1,at=seq(-90,270,45),labels=c('-F','E','I','A','F','-E','-I','-A','-F'),cex.axis=1.3)
axis(2,at=seq(-1.0,1.0,0.2),labels=c('-1.0','','-0.6','','-0.2','','0.2','','0.6','','1.0'),cex.axis=1.3,las=1)
axis(3,at=seq(-90,270,45),labels=expression
(-90~degree,-45~degree,0~degree,45~degree,90~degree,135~degree,180~degree,225~degree,270~degree),cex.axis=1.3)
axis(4,at=seq(-0.9,0.9,0.2), labels=rep('',10),cex.axis=1.2,las=1)
mtext('TC climate indicator',side=1,line=3.4, cex=1.8)
mtext('Angle',side=3,line=3.3, cex=1.8)
mtext('Correlation coefficient',side=2,line=4, cex=1.8)
box()
Fig. 2. Correlation coefficients of TC climate indicators (TCIs) with NSOI. Upper abscissa is labeled with angles corresponding to TCIs in the lower abscissa. Line and shaded area represent the correlation coefficient and each \(95~\%\) confidence interval (CI), respectively. Values are shown at .01\(^\circ\) intervals, and the highest correlation (+0.72 [048., 0.86] \(95~\%\) CI) of TCI with NSOI appears at 31.4\(^\circ\) direction.
# Sources
#--------------------------------------------------------------------------------
Year=c(1986,2015) ; time=1986:2015
GMSST=read.table('Data/gmsst_jjason_1854to2015.dat',T)[133:162,1]
NSOI=-1*read.table('Data/SOIann_jjason_1951to2015.dat',T)[36:65,1]
AB=read.table('Data/ABtrack2015.dat',T)
# TC climate indicators
#--------------------------------------------------------------------------------
FRQ=as.numeric(table(AB$yr[AB$bst=='JT' & AB$mo>=6 & AB$mo<=11 & AB$yr>=Year[1] & AB$yr<=Year[2]]))
INT130=NULL
for(i in Year[1]:Year[2])
{imsi=AB$lmw[AB$bst=='JT' & AB$yr==i & AB$mo>=6 & AB$mo<=11]
Fn=ecdf(-imsi) ; INT130=c(INT130,Fn(-130))}
FRQs=scale(FRQ) ; INT130s=scale(INT130)
# Data
#--------------------------------------------------------------------------------
angle=30.4
TCI=INT130s*cos(angle*pi/180) + FRQs*sin(angle*pi/180)
#TCI prediction on ENSO
predTCI=predict(lm(TCI~NSOI))
projINT130s=predTCI*cos(angle*pi/180)
projFRQs=predTCI*sin(angle*pi/180)
# Confirm that sum(prjINT130, FRQ) == sum(predINT130, FRQ)
#--------------------------------------------------------------------------------
#regression of IN130 on ENSO
predINT130s=predict(lm(INT130s~NSOI))
#regression of FRQ on ENSO
predFRQs=predict(lm(FRQs~NSOI))
#calculate TCI by predicted INT30 and FRQ
predTCI2=predINT130s*cos(angle*pi/180) + predFRQs*sin(angle*pi/180)
#confirm that pred INT130 and FRQ differ from the prj values, but their TCIs are exactly the same.
#(by offsetting each other diffs. Check below.)
#diffINT130s=projINT130s*cos(angle*pi/180) - predINT130s*cos(angle*pi/180) #between proj - pred
#diffFRQs=projFRQs*sin(angle*pi/180) - predFRQs*sin(angle*pi/180) #between proj - pred
#plot(-999,-999,xlim=c(1,30),ylim=c(-0.03,0.03)) ; abline(h=0,lty=2)
#lines(diffINT130s,col=2)
#lines(diffFRQs,col=4)
#round(diffINT130s+diffFRQs,10) # 10 signif digits. == meaning the two TCIs are the same.
# Plot (plot proj)
#--------------------------------------------------------------------------------
par(mar=c(5,7,5,2))
# a) Modeled TCI
#--------------------------
collist=c('#33336655','#326982')
plot(-999,-999,ylim=rev(Year),xlim=c(-2.5,2.5), xlab='',ylab='', axes=FALSE)
abline(v=0,lty=2,col='#333333')
lines(scale(TCI),time,col=collist[1],lwd=4)
lines(scale(predTCI),time,col=collist[2],lwd=4)
axis(1,at=seq(-3,3,1),labels=seq(-3,3,1),cex.axis=1.2)
axis(2,at=seq(1985,2015,5),labels=seq(1985,2015,5),cex.axis=1.2,las=1)
axis(3,at=seq(-3,3,1), labels=rep('',7),cex.axis=1.2)
axis(4,at=seq(1985,2015,5),labels=rep('',7))
mtext(expression(paste('(a) Modeling TCI' ['opt'])),side=3,line=1.8, cex=1.7, adj=-0.1)
mtext(expression(paste('Standard deviation (', sigma,') of TCI' ['opt'])),side=1,line=3.2, cex=1.5)
mtext('Year',side=2,line=3.8, cex=1.5)
legend(-2.7,1989,
c(expression(paste('Observed TCI' ['opt'])), expression(paste('Modeled TCI' ['opt'],' by NSOI'))), # text
bty='n',
col=c(collist[1],collist[2]),
lwd=c(4,4), cex=1)
box()
# b) Interpretation
#--------------------------
#quantity INT130 and FRQ
quantINT130=projINT130s*sd(INT130) +mean(INT130)
quantFRQ=projFRQs*sd(FRQ)+mean(FRQ)
#predict the quantities of INT130 and FRQ by standardized ENSO levels
sigma=round(seq(-3,3,0.1),1)
NSOIs=as.numeric(scale(NSOI))
pred_quantINT130=predict(lm(quantINT130~NSOIs),data.frame(NSOIs=sigma))
pred_quantFRQ=predict(lm(quantFRQ~NSOIs),data.frame(NSOIs=sigma))
pred_quantFRQ130=pred_quantFRQ*pred_quantINT130
par(mar=c(5,7,5,2))
collist=c('#ffffb3','#326982')
plot(-999,-999,ylim=c(0,30),xlim=c(-2.5,2.5), xlab='',ylab='', xaxs='i', yaxs='i', axes=FALSE)
polygon(cbind(c(-3,sigma,3,-3),c(0,pred_quantFRQ,0,0)),border=NA,col=collist[2])
polygon(cbind(c(-3,sigma,3,-3),c(0,pred_quantFRQ-pred_quantFRQ130,0,0)),border=NA,col=collist[1])
abline(h=0,lty=2,col='#333333')
axis(1,at=seq(-3,3,1),labels=seq(-3,3,1),cex.axis=1.2)
axis(2,at=seq(0,30,5),labels=seq(0,30,5),cex.axis=1.2,las=1)
axis(3,at=seq(-3,3,1), labels=rep('',7),cex.axis=1.2)
axis(4,at=seq(0,30,5),labels=rep('',7))
mtext(expression(paste('(b) Interpretation of ENSO influence on TCI' ['opt'])),side=3,line=1.8, cex=1.7, adj=0.7)
mtext(expression(paste('Standard deviation (', sigma,') of NSOI')),side=1,line=3.2, cex=1.5)
mtext('Number of western North Pacific TCs ',side=2,line=3.8, cex=1.5)
legend('topleft',c('TS and TY','Super typhoon'), # text
bty='n', pch=15, pt.cex=1.8,
col=c(collist[1],collist[2]),
cex=1)
box()
Fig. 3. Quantification of the response of super typhoons to ENSO variation. (a) Modeling TCI\(_{opt}\) by NSOI, and (b) Interpretation of ENSO influence. Ordinate values represent standardized values (\(\sigma\)). From the regression of TCI\(_{opt}\) on NSOI, the number of total WNP TCs and super typhoons (LMI \(\ge\) 130~kt) are predicted over the NSOI range.
pred_quantINT130=predict(lm(quantINT130~NSOIs),data.frame(NSOIs=seq(-2,2,1)))
pred_quantFRQ=predict(lm(quantFRQ~NSOIs),data.frame(NSOIs=seq(-2,2,1)))
pred_quantFRQ130=pred_quantFRQ*pred_quantINT130
table= data.frame(
sigma_NSOI=seq(-2,2,1),
pred_quantFRQ=round(pred_quantFRQ,1),
pred_quantFRQ130=round(pred_quantFRQ130,1),
pred_quantINT130=round(pred_quantINT130,2))
table
## sigma_NSOI pred_quantFRQ pred_quantFRQ130 pred_quantINT130
## 1 -2 18.6 1.5 0.08
## 2 -1 20.1 2.7 0.13
## 3 0 21.6 4.0 0.19
## 4 1 23.1 5.5 0.24
## 5 2 24.6 7.1 0.29
Tab. 1. Prediction from the regression of TCI\(_{opt}\) on NSOI. The results are deconvolved into the primary indicators of INT and FRQ, which are interpreted into annual WNP TCs and super typhoons.