What is Sen’s Slope Estimator?
Sens’ slope estimator can be used to discover trends in univariate time series. It is fairly resistant to outliers, with a breakdown point of .29 (Wilcox, 2001, p.208). The method, first outlined by Theil and later expanded upon by Sen (1968), is sometimes called the Thiel-Sen estimator.
The estimator is nonparametric , which means that it doesn’t draw from any particular probability distribution. It is an alternative to the parametric least-squares regression line (Sen, 1968). Where least squares uses a weighted mean to estimate the slope, Sen’s uses a median.
Calculating Sens’s Slope
The basic steps are:
- Calculate slopes for all pairs of ordered (ordinal) time points,
- Find the median of all slopes from Step 1.
Example
As a simple example, let’s say you have 5 data points {a, b, c, d, e}. This gives 5 possible combinations (I used the combinations generator to figure this out):
- a, b
- a, c
- a, d
- a, e
- b, c
- b, d
- b, e
- c, d
- c, e
- d, e
Let’s say your 10 data points give you the following slopes (adapted from Wilcox’s Fundamentals of Modern Statistical Methods):
-340, 130, 496, 561, 713, 800, 851, 952, 1184, 1327.
Giving a median of 756.5. This is a reasonable estimation for what the slope would be in the population (i.e. for an infinite number of samples).
Sen’s slope is usually calculated with software, because of a couple of main reasons:
- The sheer number of calculations required for any more than a handful of data points (12 points would equal 66 calculations!),
- In addition to finding the median slope, you’ll also want to create a confidence interval for that slope. By hand, confidence intervals can be somewhat cumbersome; they become more challenging to calculate for non-normal distributions (which is what is involved with Theil-Sen estimators) and when homoscedasticity is involved.
Software Options
Excel: Excel doesn’t have a built in function. Excel sen’s slope (originally downloaded from Tartu University, Estonia).
Minitab 18: Let’s say your data is in C2. Click Edit > Command Line Editor. Then type: %SENSLOPE B2
R: From the “trend” package:
sens.slope(x, conf.level = 0.95)
Where:
- x = numeric vector or a time series object of class “ts”,
- conf.level = numeric significance level.
References
- Minitab 18 Support: Sen’s Slope. Retrieved June 22, 218 from: https://support.minitab.com/en-us/minitab/18/macro-library/macro-files/nonparametrics-macros/senslope/
- Sen, P (1968). Estimated of the regression coefficient based on Kendall’s Tau. J Am Stat Assoc 39:1379-1389
- Theil, H. (1950), “A rank-invariant method of linear and polynomial regression analysis. I, II, III”, Nederl. Akad. Wetensch., Proc., 53: 386–392, 521–525, 1397–1412.
- Wilcox, R. (2001). Fundamentals of Modern Statistical Methods: Substantially Improving Power and Accuracy. Springer Science and Business Media.