median(abs(x - median(x))) probably creates three temporaries which is the
reason to do this in place. The mad function should promote integers to
floats before calling mad!. Please file an issue.

On Wed, Jul 27, 2016 at 9:55 AM, Daniel Carrera <[email protected]> wrote:

> Thanks.
>
> Why can't the MAD just be implemented as `mad(x) = median(abs(x -
> median(x)))` ?
>
> Cheers,
> Daniel.
>
> On 27 July 2016 at 15:49, j verzani <[email protected]> wrote:
>
>> It seems `mad` calls `mad!` with a copy. The mad! function reuses the
>> copied vector for storage. As the differences from the median are not
>> integers you get an assignment error. That's fussy and should be easily
>> addressed. The multiplier is also done by default in R so that the units of
>> spread for mad and sd are similar.
>>
>> On Wednesday, July 27, 2016 at 5:50:02 AM UTC-4, Daniel Carrera wrote:
>>>
>>> Hello,
>>>
>>> My "mad" function seems to be broken. Maybe I just don't know how to use
>>> it right:
>>>
>>> julia> using StatsBase
>>>
>>> julia> @doc mad
>>>   No documentation found.
>>>
>>>   StatsBase.mad is a generic Function.
>>>
>>>   # 2 methods for generic function "mad":
>>>   mad{T<:Real}(v::Range{T<:Real}, args...) at
>>> /home/daniel/.julia/v0.4/StatsBase/src/scalarstats.jl:180
>>>   mad{T<:Real}(v::AbstractArray{T<:Real,N}, args...) at
>>> /home/daniel/.julia/v0.4/StatsBase/src/scalarstats.jl:179
>>>
>>> julia> mad([1,2,3,4])
>>> ERROR: InexactError()
>>>  in mad! at /home/daniel/.julia/v0.4/StatsBase/src/scalarstats.jl:184
>>>  in mad! at /home/daniel/.julia/v0.4/StatsBase/src/scalarstats.jl:183
>>>  in mad at /home/daniel/.julia/v0.4/StatsBase/src/scalarstats.jl:179
>>>
>>> julia>
>>>
>>>
>>>
>>> Does anyone know what's happening? Also, I am confused by the "constant"
>>> parameter. The documentation says:
>>>
>>> mad(*x*[, *center][; constant=1.4826*])
>>> <http://statsbasejl.readthedocs.io/en/latest/scalarstats.html#mad>
>>>
>>> Compute the median absolute deviation
>>> <http://en.wikipedia.org/wiki/Median_absolute_deviation> of x.
>>>
>>> One can optionally supply the center. By default, constant=1.4826 for
>>> consistent estimation of the standard deviation of a normal distribution.
>>>
>>>
>>>
>>> Does this mean that, by default, the mad() function doesn't give you the
>>> MAD, bunt instead it gives you MAD*1.4826 ?
>>>
>>> Thanks for the help.
>>>
>>> Cheers,
>>> Daniel.
>>>
>>>
>>>
>>>
>>> --
>> You received this message because you are subscribed to a topic in the
>> Google Groups "julia-stats" group.
>> To unsubscribe from this topic, visit
>> https://groups.google.com/d/topic/julia-stats/zQDssmSjdyo/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to
>> [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
> --
> You received this message because you are subscribed to the Google Groups
> "julia-stats" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"julia-stats" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to