Bookmark and Share

Notice: On April 23, 2014, Statalist moved from an email list to a forum, based at statalist.org.


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: st: Calculating Mahalanobis distance


From   "Lachenbruch, Peter" <[email protected]>
To   "'[email protected]'" <[email protected]>
Subject   RE: st: Calculating Mahalanobis distance
Date   Mon, 3 May 2010 15:32:25 -0700

Thanks - I had the sneaky feeling that something was missing.

Tony

Peter A. Lachenbruch
Department of Public Health
Oregon State University
Corvallis, OR 97330
Phone: 541-737-3832
FAX: 541-737-4001


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Steve Samuels
Sent: Monday, May 03, 2010 2:47 PM
To: [email protected]
Subject: Re: st: Calculating Mahalanobis distance

To get Mahalanobis D2, you must multiply T2 by:
(1/n1 + 1/n2), still a very easy calculation.

Steve


2010/5/3 Lachenbruch, Peter <[email protected]>:
> From the Stata manual we have
> Methods and formulas
> hotelling is implemented as an ado-file.
> See Wilks (1962, 556-561) for a general discussion. The original formulation was by Hotelling (1931) and Mahalanobis (1930, 1936).
> For the test that the means of k variables are 0, let x be a 1 x k matrix of the means and S be the estimated covariance matrix. Then T2 = xbarS(inverse)xbar'.
> For two groups, the test of equality is T2 = (x1bar - x2bar)S(inverse)(x1bar - x2bar)'.
> This seems a simpler way than the code given
>
> Tony
>
> Peter A. Lachenbruch
> Department of Public Health
> Oregon State University
> Corvallis, OR 97330
> Phone: 541-737-3832
> FAX: 541-737-4001
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of Tirthankar Chakravarty
> Sent: Monday, May 03, 2010 2:09 PM
> To: [email protected]
> Subject: Re: st: Calculating Mahalanobis distance
>
> <>
> To calculate the centred Mahalanobis distance between two variables as
> here try this:
> ***********************************************
> clear*
> sysuse auto, clear
> mata
> real vector maha_dist(string scalar varlist, string scalar touse)
> {
>        real matrix mX
>        real matrix mZ
>        st_view(mX=., ., tokens(varlist), touse)
>        mZ = mX :- mean(mX)
>        return(sqrt(diagonal(mZ*invsym(cross(mZ, mZ)/(rows(mZ)-1) )*mZ')))
>
> }
> end
> cap prog drop md
> program define md
>        version 11
>        syntax varlist [if] [in], [GENerate(string )]
>        marksample touse
>        mata: vReturn = maha_dist("`varlist'", "`touse'")
>        getmata `generate' = vReturn
> end
> md weight length, gen(md_w_l)
> su md_w_l
> ***********************************************
>
> You can put this in two -foreach- loops to calculate the distance
> between a bunch of variables.
>
> T
>
> 2010/5/3 Schijven, Mario <[email protected]>:
>> Hi all,
>>
>> Does anyone know whether Stata has a pre-programmed command to compute Mahalanobis distance? So far, I've manually computed the Euclidean distance between two sets of firms in a dataset, but I need to compute the Mahalanobis distance. If Stata cannot do this, perhaps someone knows how to do it in Excel (i.e., how do I modify the formula for calculating Euclidean distance into one for Mahalanobis distance)?
>>
>> All the very best and many thanks in advance,
>>
>> Mario Schijven
>> Mays Business School
>> Texas A&M University
>>
>> *
>> *   For searches and help try:
>> *   http://www.stata.com/help.cgi?search
>> *   http://www.stata.com/support/statalist/faq
>> *   http://www.ats.ucla.edu/stat/stata/
>>
>
>
>
> --
> To every ω-consistent recursive class κ of formulae there correspond
> recursive class signs r, such that neither v Gen r nor Neg(v Gen r)
> belongs to Flg(κ) (where v is the free variable of r).
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>
> *
> *   For searches and help try:
> *   http://www.stata.com/help.cgi?search
> *   http://www.stata.com/support/statalist/faq
> *   http://www.ats.ucla.edu/stat/stata/
>



-- 
Steven Samuels
[email protected]
18 Cantine's Island
Saugerties NY 12477
USA
Voice: 845-246-0774
Fax:    206-202-4783

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/statalist/faq
*   http://www.ats.ucla.edu/stat/stata/


© Copyright 1996–2018 StataCorp LLC   |   Terms of use   |   Privacy   |   Contact us   |   Site index