[R] Subject: Suggestion regarding default MAD constant

Thomas Subia tg@77m @end|ng |rom y@hoo@com
Mon Oct 5 17:20:40 CEST 2026


 Thanks, that's a helpful perspective.

My use case is a little different from estimating the SD of an underlying distribution. I'm working with signed-error distributions that are often skewed, and my primary interest is a robust description of the observed error spread rather than a normal-consistent estimate of σ.

In that setting, the default 1.4826 factor feels like a model-based calibration rather than part of the dispersion measure itself. Using mad(x, constant = 1) keeps the scale tied directly to the median absolute deviation observed in the data.

Regarding your IQR comment, that's a fair question. My intuition is that MAD and IQR emphasize somewhat different aspects of the distribution. IQR is determined entirely by the 25th and 75th percentiles, whereas MAD is based on the distribution of absolute deviations from the median. For diagnostic work, I've found the latter useful because it stays centered on the typical deviation from the target value.

So I see raw MAD less as a substitute for SD and more as a robust measure of "typical error magnitude."
- Thomas S
    On Monday, October 5, 2026 at 04:25:30 AM PDT, Peter Dalgaard <pdalgd using gmail.com> wrote:  
 
 The constant= bit comes from

> 1/diff(qnorm(c(.25,.75))/2)
[1] 1.482602

so the logic is pretty much that mad() computes the SD of a normal distribution with the same IQR. This makes sense for an outlier-contaminated normal distribution, and not so much elsewhere. 

It is fairly easy to modify the constant for other symmetric distributions like the standardized t distribution, somewhat less so for asymmetric distributions. That is, provided you actually want the SD of the underlying distribution (sans outliers).

If you set mad=1, then you lose the connection with SD, which may not be much of a loss. However, the question that I see is whether it offers anything beyond the simple IQR.

- Peter D.


> On 20 Sep 2026, at 09.48, Thomas Subia via R-help <r-help using r-project.org> wrote:
> 
> Hi all,
> 
> While working with signed-error distributions that are often skewed, I noticed
> that using `mad(x)` with the default constant (1.4826) can unintentionally widen 
> the dispersion estimate enough to mask important structure in the data.
> 
> For diagnostic and tolerance-testing workflows, especially when symmetry cannot
> be assumed, using `mad(x, constant = 1)` gives a more interpretable “bulk”
> interval because it reflects the raw median absolute deviation without scaling
> to a normal model.
> 
> Before applying any parametric center/spread metrics, I’ve found it helpful to
> plot a boxplot or ECDF to check for skew and tail weight. In skewed cases,
> `constant = 1` behaves more robustly.
> 
> Is there any interest in discussing whether `constant = 1` might be a more
> appropriate default for nonparametric workflows, or whether a note in the
> documentation might help users choose the right constant for their context?
> 
> Thanks,
> Thomas
> 
> [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide https://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Office: A 4.23
Email: pd.mes using cbs.dk  Priv: PDalgd using gmail.com

  
	[[alternative HTML version deleted]]



More information about the R-help mailing list