> Alternatively, is there any other command that will include the stars
> automatically? The command "mkcorr" does not appear to have this option but
> I'm wondering if you might know of any other similar command for correlation
> tables that does..
>
> Nish
Actually, there are several. Here is one. Glenn can have them.
*** the syntax here:
sysuse auto, clear
mkcorr2 pri mpg disp tr rep78, log(newstuff) replace aster sig
dataout using newstuff.log, save(output) excel replace
*** the program here:
* touched by [email protected]
prog drop _all
program mkcorr2, byable(recall)
*! Author: Glenn Hoetker
syntax varlist [if] [in],Log(string) [Replace] [CDec(integer 2)] ///
[MDec(integer 3)] [Means] [Sig] [Num] [Label] ///
[NOCorr] [CASEwise] [ASTER]
version 8.0
/* Macros */
local width=`cdec'+2
local cformat "%`width'.`cdec'f"
local mformat "%9.`mdec'f"
tempname output
tempvar touse
local n_rows:list sizeof varlist
local n_cols: list sizeof varlist
//Limit the sample to those with observations for all
//vars if CASEwise selected
if "`casewise'"~="" {
marksample touse
if "`if'"~="" {
local if="`if'" + " & \`touse'"
}
else {
local if "if \`touse'"
}
}
//Open and write to the file.
if index(`"`log'"',".")>0 {
local logname `log'
}
else {
local logname `log'.log
}
file open `output' using `"`logname'"', write text `replace'
//The labels across the top
file write `output' _tab
if "`num'"~="" file write `output' _tab
if "`means'"~="" {
file write `output' "Mean" _tab "S.D." _tab "Min" _tab
"Max" _tab
}
//Put either variable names or numbers
if "`nocorr'"=="" {
if "`num'"=="" {
foreach var of local varlist{
local lab: variable label `var'
if "`label'"=="" | `"`lab'"'=="" {
local lab `var'
}
file write `output' "`lab'" _tab
}
}
else {
forvalues x=1/`n_cols' {
file write `output'
"(" (`x') ")" _tab
}
}
}
file write `output' _n
//Output rows of the matrix one at a time, starting with the variable name
//and then the values
forvalues row=1/`n_rows' {
//The number of the variable, if requested by NUM
if "`num'"~="" {
file write `output' "(" (`row') ")" _tab
}
//The variable name
local var: word `row' of `varlist'
local lab: variable label `var'
if "`label'"=="" | `"`lab'"'==""{
local lab `var'
}
file write `output' "`lab'" _tab
//The values
//If we are putting in means
if "`means'"~="" {
quietly summarize `var' `if' `in'
file write `output' `mformat' (`r(mean)') _tab ///
`mformat' (`r(sd)') _tab `mformat' (`r(min)') _tab
`mformat' (`r(max)') _tab
}
//Correlations
if "`nocorr'"=="" {
forvalues col=1/`row' { //Notice that we are only
doing the bottom half
local var1:word `row' of `varlist'
local var2:word `col' of `varlist'
qui corr(`var1' `var2') `if' `in'
local val=r(rho)
* touched by [email protected]
local star
if "`aster'"=="aster" {
local p=min(tprob(r(N)-2,r(rho)*sqrt(r(N)-2)/sqrt(1-r(rho)^2)),1)
if `p'<.10 {
local star "*"
}
if `p'<.05 {
local star "**"
}
if `p'<.01 {
local star "***"
}
}
file write `output' `cformat' (`val') "`star'" _tab
}
file write `output' _n
//Put in the significance in the next row, if requested
if "`sig'"~="" {
file write `output' _tab
if "`means'"~="" {
file write `output' _tab(4)
}
if "`num'"~="" {
file write `output' _tab
}
forvalues col=1/`row' {
local var1:word `row' of `varlist'
local var2:word `col' of `varlist'
if "`row'"=="`col'" {
file write `output' "" _tab
}
else {
qui correlate `var1' `var2' `if' `in'
local rho=`r(rho)'
local n=`r(N)'
local
p=min(tprob(r(N)-2,r(rho)*sqrt(r(N)-2)/sqrt(1-r(rho)^2)),1)
file write `output' "(" `cformat' (`p') ")" _tab
}
}
file write `output' _n
}
}
else file write `output' _n
}
file close `output'
end
*
* 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/