MedianDeviation[data]
gives the median absolute deviation from the median
of the elements in data.
MedianDeviation
MedianDeviation[data]
gives the median absolute deviation from the median
of the elements in data.
Details
- MedianDeviation is also known as MAD.
- MedianDeviation is a robust measure of dispersion, which means it is not very sensitive to outliers.
- For VectorQ data, {x1,x2,…,xn}, the median deviation
is given by the median of the vector {x1–
,…,xn–
}, where
is the median of data. - For MatrixQ data, the median deviation is computed for each column vector with MedianDeviation[{{x1,y1,…},{x2,y2,…},…}] equivalent to {MedianDeviation[{x1,x2,…}],MedianDeviation[{y1,y2,…}],…}. »
- For ArrayQ data, the median deviation is equivalent to ArrayReduce[MedianDeviation,data,1]. »
- MedianDeviation handles both numerical and symbolic data.
- The data can have the following additional forms and interpretations:
-
Association the values (the keys are ignored) » SparseArray as an array, equivalent to Normal[data] » QuantityArray quantities as an array » WeightedData based on the underlying EmpiricalDistribution » EventData based on the underlying SurvivalDistribution » TimeSeries, TemporalData, … vector or array of values (the time stamps ignored) » Image,Image3D RGB channel's values or grayscale intensity value » Audio amplitude values of all channels » DateObject, TimeObject list of dates or list of times »
Examples
open all close allBasic Examples (3)
MedianDeviation of a list:
MedianDeviation[{6.5, 3.8, 6.6, 5.7, 6.0, 6.4, 5.3}]MedianDeviation of columns of a matrix:
MedianDeviation[{{1, 2}, {4, 8}, {5, 3}, {2, 15}}]MedianDeviation of a list of dates:
MedianDeviation[{Yesterday, Today, Tomorrow}]Scope (18)
Basic Uses (6)
Exact input yields exact output:
MedianDeviation[{1, 12, 3, 7}]MedianDeviation[{π, E, 2}]Approximate input yields approximate output:
MedianDeviation[{1., 11., 3., 7.}]MedianDeviation[N[{1, 5, 3, 7 / 11}, 30]]Find the median deviation of WeightedData:
data = {8, 3, 5, 4, 9, 1, 4, 2, 2, 3};
weights = {0.15, 0.09, 0.12, 0.10, 0.16, 0.3, 0.11, 0.08, 0.08, 0.09};MedianDeviation[WeightedData[data, weights]]Find the median deviation of EventData:
e = {1.0, 2.1, 3.2, 4.5, 5.7};
ci = {0, 0, 0, 1, 0};MedianDeviation[EventData[e, ci]]Find the median deviation of TimeSeries:
MedianDeviation[TemporalData[TimeSeries, {{{2.3, 1.2, 6.7, 5.8, 7.1, 4.6}}, {{0, 5, 1}}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {}}, False, 10.]]The median deviation depends only on the values:
MedianDeviation[TemporalData[TimeSeries, {{{2.3, 1.2, 6.7, 5.8, 7.1, 4.6}}, {{0, 5, 1}}, 1, {"Discrete", 1},
{"Discrete", 1}, 1, {}}, False, 10.]["Values"]]Find the median deviation of data involving quantities:
data = Quantity[RandomReal[1, 6], "Meters"]MedianDeviation[data]Array Data (5)
MedianDeviation for a matrix works columnwise:
MedianDeviation[RandomReal[1, {10, 2}]]MedianDeviation for a tensor gives the columnwise median deviation at the first level:
MedianDeviation[RandomReal[1, {10, 2, 2}]]MedianDeviation[RandomReal[1, 10 ^ 7]]MedianDeviation[RandomReal[1, {10 ^ 6, 3}]]When the input is an Association, median deviation works on its values:
mat = RandomReal[1, {2, 2}];
assoc = AssociationThread[Range[2], mat]MedianDeviation[assoc]SparseArray data can be used just like dense arrays:
MedianDeviation[SparseArray[{{1} -> 2, {2} -> 5, {3} -> 7}]]MedianDeviation[SparseArray[{{1, 1} -> 3, {2, 1} -> 4, {2, 2} -> 7}]]sp = SparseArray[{{i_, i_} :> i, {i_, j_} /; j == i + 1 :> i - 1}, {100, 10}]MedianDeviation[sp]Find the median deviation of a QuantityArray:
data = QuantityArray[RandomReal[1, 6], "Pounds"]MedianDeviation[data]Image and Audio Data (2)
Channelwise median deviation value of an RGB image:
MedianDeviation[[image]]RGBColor[%]Median deviation value of a grayscale image:
MedianDeviation[[image]]On audio objects, MedianDeviation works channelwise:
a = ExampleData[{"Audio", "Bee"}]AudioMeasurements[a, "Channels"]MedianDeviation[a]Date and Time (5)
Compute median deviation of dates:
dates = WolframLanguageData[All, "DateIntroduced"];DateHistogram[dates]MedianDeviation[dates]Compute the weighted median deviation of dates:
dates = RandomDate[DateObject[{2024}], 4]weights = {1, 1, 3, 3};wd = WeightedData[dates, weights];Median[wd]MedianDeviation[wd]Compute the median deviation of dates given in different calendars:
dates = {DateObject[{2024, 2, 29}, CalendarType -> "Julian"], DateObject[{1524, 1, 1}, CalendarType -> "Islamic"], DateObject[{6024, 1, 15}, CalendarType -> "Jewish"]}MedianDeviation[dates]UnitConvert[%, "Years"]Compute the median deviation of times:
times = RandomTime[3]MedianDeviation[times]Compute the median deviation of times with different time zone specifications:
times = {TimeObject[{12}, TimeZone -> 0], TimeObject[{12}, TimeZone -> 2], TimeObject[{12}, TimeZone -> "Asia/Tokyo"]}MedianDeviation[times]Applications (4)
Obtain a robust estimate of dispersion when extreme values are present:
MedianDeviation[{3, 10, 10 ^ 6, 20, 5, 6}]Measures based on the Mean are heavily influenced by extreme values:
StandardDeviation[{3, 10, 10 ^ 6, 20, 5, 6}]//NMeanDeviation[{3, 10, 10 ^ 6, 20, 5, 6}]//NIdentify periods of high volatility in stock data using a five-year moving median deviation:
data = TemporalData[«4»];smooth = MovingMap[MedianDeviation, data, {Quantity[5 * 365, "Day"]}];DateListPlot[smooth]Compute median deviations for slices of a collection of paths of a random process:
data = RandomFunction[WienerProcess[], {0, 1, .01}, 10 ^ 3];times = Range[0, 1, .1];md = Map[{#, MedianDeviation[data["SliceData", #]]}&, times];Plot median deviations over these paths:
Show[ListPlot[data], ListLinePlot[md, PlotStyle -> Green]]Find the median deviation of the heights for the children in a class:
heights = Quantity[{134, 143, 131, 140, 145, 136, 131, 136, 143, 136, 133, 145, 147,
150, 150, 146, 137, 143, 132, 142, 145, 136, 144, 135, 141}, "Centimeters"];ListPlot[heights, Filling -> Axis, AxesLabel -> Automatic]md = MedianDeviation[heights]Plot the median deviation respective of the median:
m = Median[heights];
n = Length[heights];
ListPlot[{heights, {{0, m}, {n, m}}, {{0, m - md}, {n, m - md}}, {{0, m + md}, {n, m + md}}}, Filling -> {1 -> 0, 3 -> {4}}, Joined -> {False, True, True, True}, PlotStyle -> {Automatic, Automatic, Gray, Gray}, PlotLegends -> {"heights", "median", "median deviation bands"}, AxesLabel -> Automatic]Properties & Relations (2)
MedianDeviation is the Median of absolute deviations from the Median:
data = RandomReal[10, 10];Median[Abs[data - Median[data]]]MedianDeviation[data]For large uniform datasets, MedianDeviation and MeanDeviation are nearly the same:
data = RandomReal[10, 10 ^ 6];MedianDeviation[data]MeanDeviation[data]Possible Issues (1)
Neat Examples (1)
Ratio of MedianDeviation to MeanDeviation for increasing sample size:
data = RandomReal[10, 10 ^ 5];ListPlot[Table[{i, MedianDeviation[Take[data, i]] / MeanDeviation[Take[data, i]]}, {i, 5000, 10 ^ 5, 5000}]]Tech Notes
Related Guides
Text
Wolfram Research (2007), MedianDeviation, Wolfram Language function, https://reference.wolfram.com/language/ref/MedianDeviation.html (updated 2024).
CMS
Wolfram Language. 2007. "MedianDeviation." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/MedianDeviation.html.
APA
Wolfram Language. (2007). MedianDeviation. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/MedianDeviation.html
BibTeX
@misc{reference.wolfram_2026_mediandeviation, author="Wolfram Research", title="{MedianDeviation}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/MedianDeviation.html}", note=[Accessed: 12-June-2026]}
BibLaTeX
@online{reference.wolfram_2026_mediandeviation, organization={Wolfram Research}, title={MedianDeviation}, year={2024}, url={https://reference.wolfram.com/language/ref/MedianDeviation.html}, note=[Accessed: 12-June-2026]}