You will need to do some programming,
I believe.
The other day I wrote a -moments- for my
own use. This may look quite redundant
given -tabstat- but it has more deliberate
defaults and better controls on format
than -tabstat- _for this particular purpose_.
You'd need to add in a call to -sktest-.
That said, -sktest- is yet another
example of something often used automatically
when thought is generally preferable. As often
pointed out on this list, it may easily produce
low P-values even when the degree of non-normality is
trivial practically. It does what it is
designed to do, of course, which is part
of the problem.
Nick
[email protected]
*! 1.0.0 NJC 13 September 2004
program moments, byable(recall)
version 8.0
syntax [varlist(numeric)] [if] [in] ///
[, Matname(str) Format(str) ALLobs * ]
local nvars : word count `varlist'
if `nvars' > _N {
preserve
qui set obs `nvars'
}
if "`allobs'" != "" marksample touse, novarlist
else marksample touse
tempvar a group id n mean SD skewness kurtosis which
tempname mylbl
qui {
gen long `which' = _n
compress `which'
gen `n' = ""
label var `n' "n"
foreach s in mean SD skewness kurtosis {
gen ``s'' = .
label var ``s'' "`s'"
}
}
if "`matname'" != "" mat `matname' = J(`nvars',5,0)
local I = 1
qui foreach v of local varlist {
su `v' if `touse', detail
replace `n' = string(r(N)) in `I'
replace `mean' = r(mean) in `I'
replace `SD' = r(sd) in `I'
replace `skewness' = r(skewness) in `I'
replace `kurtosis' = r(kurtosis) in `I'
if "`matname'" != "" {
mat `matname'[`I',1] = r(N)
mat `matname'[`I',2] = r(mean)
mat `matname'[`I',3] = r(sd)
mat `matname'[`I',4] = r(skewness)
mat `matname'[`I',5] = r(kurtosis)
}
label def `mylbl' `I' "`v'", modify
local `I++'
}
if "`matname'" != "" {
mat colnames `matname' = n mean SD skewness kurtosis
mat rownames `matname' = `varlist'
}
label val `which' `mylbl'
if "`allobs'" != "" label var `which' "Variable"
else label var `which' "n = `r(N)'"
local fmt "format(%9.3f)"
if "`format'" != "" {
tokenize `format'
if "`4'" != "" {
tempvar skurtosis
gen `skurtosis' = string(`kurtosis', "`4'")
label var `skurtosis' "kurtosis"
local kurtosis "`skurtosis'"
}
if "`3'" != "" {
tempvar sskewness
gen `sskewness' = string(`skewness', "`3'")
label var `sskewness' "skewness"
local skewness "`skewness'"
}
if "`2'" != "" {
tempvar sSD
gen `sSD' = string(`SD', "`2'")
label var `sSD' "SD"
local SD "`sSD'"
}
tempvar smean
gen `smean' = string(`mean', "`1'")
label var `smean' "mean"
local mean "`smean'"
}
if "`allobs'" != "" local shown "`n'"
tabdisp `which' if `which' < `I', ///
c(`shown' `mean' `SD' `skewness' `kurtosis') `options' `fmt'
end
Herve STOLOWY
> Is there an easy way to display in the same table a few
> summary statistics with a normality test for each variable? I
> know how to do separately (with tabstat and sktest) but have
> some difficulties to get it automatically in the same table.
*
* For searches and help try:
* http://www.stata.com/support/faqs/res/findit.html
* http://www.stata.com/support/statalist/faq
* http://www.ats.ucla.edu/stat/stata/