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: Need help making an ado for Tamhane test

 From Marta García-Granero To statalist@hsphsun2.harvard.edu Subject Re: st: Need help making an ado for Tamhane test Date Fri, 31 May 2013 12:10:16 +0200

```Thanks a lot Maarten.

Marta

El 31/05/2013 10:09, Maarten Buis escribió:
```
```On Fri, May 31, 2013 at 9:22 AM, Marta García-Granero
<mgarciagranero@gmail.com> wrote:
```
```Anyway, I have attempted
(perpetrated?) to write some code for Tamhane's T2 multiple comparison of
means with heterogeneous variances.
To avoid having to edit it every time I want to use it, to replace "Hb" by
the dependent variable name and "Status" by the grouping variable, I would
like to turn it into a program, like this:

tamhane Hb, by(Status)

Unfortunately, I have hit the ceiling of my knowledge in Stata programming
as it is right now.
```
```Here is how I would start:

*------------------ begin example ------------------
clear all

program define tamhane, rclass
syntax varname, by(varname)

// take care of possible missing values
marksample touse
markout `touse' `by', strok
qui count if `touse'
if r(N) == 0 error 2000

// collect the levels of by
qui levelsof `by' if `touse',local(levels)

// count the number of levels
// see: -help extended_fcn-
local k : word count `levels'

// count the number of comparisons
local comp=`k'*(`k'-1)/2

// create a matrix to store (and return) the results
tempname res
matrix `res' = J(`comp',1,.)

// collect the test results in that matrix
local row = 1
forvalues i = 1/ `k' {
local lev_i : word `i' of `levels'
forvalues j = `=`i'+1'/`k' {
local lev_j : word `j' of `levels'
quietly ttest `varlist'                             ///
if `touse' & ((`by'==`lev_i')|(`by'==`lev_j')), ///
by(`by') unequal

matrix `res'[`row',1] = 1-(1-r(p))^`comp'
local row = `row' + 1
local rowname "`rowname' `lev_i'_vs_`lev_j'"
}
}

// give the rows and collumn names
matrix rownames `res' = `rowname'
matrix colnames `res' = "p_value"

// display the matrix
matlist `res', underscore format(%7.4f)

// return the matrix
return matrix result = `res'
end

// try it out
sysuse auto
tamhane price, by(rep78)
*------------------- end example -------------------
(For more on examples I sent to the Statalist see:
http://www.maartenbuis.nl/example_faq )

Hope this helps,
Maarten

---------------------------------
Maarten L. Buis
WZB
Reichpietschufer 50
10785 Berlin
Germany

http://www.maartenbuis.nl
---------------------------------

*
*   For searches and help try:
*   http://www.stata.com/help.cgi?search
*   http://www.stata.com/support/faqs/resources/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/faqs/resources/statalist-faq/
*   http://www.ats.ucla.edu/stat/stata/
```

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