I fit three simple linear regression models to the logarithm of the number of storms plus one for the number of tropical storms, hurricanes, and major hurricanes from 1851 to 2014. The data can be found at
https://www.nhc.noaa.gov/climo/images/AtlanticStormTotalsTable.pdf
The results of the regressions – done in R – are below, as well as a plot of the models and data, where the fitted lines are found by taking the exponential of the fit to the model and subtracting one from the result. The blue lines are the fit and the green lines are 96.6% prediction intervals.
The models fit (to the log of the number plus one) are below. The data indicate a 0.39% cumulative increase in the number of tropical storms per year, a 0.19% cumulative increase in the number of hurricanes per year, and a 0.47% cumulative increase in the number of major hurricanes per year over the time period 1851 to 2014.
The Three Models:
Tropical Storms over time:
Call: lm(formula = lds[[i]] ~ ds[[1]])
Residuals: Min 1Q Median 3Q Max -1.50491 -0.24411 0.02969 0.22772 0.90256
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -5.237098 1.117248 -4.687 5.83e-06 *** ds[[1]] 0.003885 0.000578 6.721 2.92e-10 *** ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.3504 on 162 degrees of freedom Multiple R-squared: 0.2181, Adjusted R-squared: 0.2132 F-statistic: 45.17 on 1 and 162 DF, p-value: 2.922e-10
Hurricanes over time:
Call: lm(formula = lds[[i]] ~ ds[[1]])
Residuals: Min 1Q Median 3Q Max -1.74129 -0.24892 0.01169 0.27125 0.85703
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -1.9239955 1.3290087 -1.448 0.14964 ds[[1]] 0.0019150 0.0006875 2.785 0.00598 ** ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.4168 on 162 degrees of freedom Multiple R-squared: 0.0457, Adjusted R-squared: 0.03981 F-statistic: 7.758 on 1 and 162 DF, p-value: 0.005984
Major Hurricanes over time:
Call: lm(formula = lds[[i]] ~ ds[[1]])
Residuals: Min 1Q Median 3Q Max -1.2755 -0.3994 0.0403 0.3947 1.0793
Coefficients: Estimate Std. Error t value Pr(>|t|) (Intercept) -8.1698419 1.6829089 -4.855 2.82e-06 *** ds[[1]] 0.0046922 0.0008706 5.390 2.45e-07 *** ---Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.5278 on 162 degrees of freedom Multiple R-squared: 0.152, Adjusted R-squared: 0.1468 F-statistic: 29.05 on 1 and 162 DF, p-value: 2.454e-07
Comments:
It is known that we are doing a better job of counting storms than in the 19th century, since some storms never make landfall, so would not necessarily have been counted in the 1800’s or early 1900’s. However, the largest increase above is for major hurricanes – which should have been measured quite well over the full time period of the data.
The R Code:
atl.strm.plot.fun <- function(ds = atl.strm) { print(ds[1:10,]) lds = log(ds[,2:4]+1) mod.log.ds = list(1,2,3) pred.ds = list(1,2,3) for (i in 1:3) { mod.log.ds[[i]] = lm(lds[[i]]~ds[[1]]) pred.ds[[i]] = predict(mod.log.ds[[i]], interval="predict", level=0.966) } pred.ds = lapply(pred.ds,exp) pred.ds = lapply(pred.ds, "-", 1) yl=c(35,20,12) par(mfrow=c(3,1), mar=c(4,4,2,1), oma=c(1,1,3,1)) for (i in 1:3) { plot(ds[[1]],ds[[i+1]], ylab=colnames(ds)[i+1], xlab="Year", cex=.75, ylim=c(0,yl[i])) lines(ds[[1]],pred.ds[[i]][,1], col="blue") lines(ds[[1]],pred.ds[[i]][,2], col="green") lines(ds[[1]],pred.ds[[i]][,3], col="green") } mtext("Atlantic Storms", side=3, font=1, outer=T, line=1) lapply(mod.log.ds,summary) }
The First Ten Lines of the Data Set:
Year Tropical_Storms Hurricanes Major_Hurricanes 1 1851 6 3 1 2 1852 5 5 1 3 1853 8 4 2 4 1854 5 3 1 5 1855 5 4 1 6 1856 6 4 2 7 1857 4 3 0 8 1858 6 6 0 9 1859 8 7 1 10 1860 7 6 1