My poor understanding of -makematrix-
meant that I posted a solution that
can be improved.
. makematrix , from(r(p)) : tab i*, chi
i1 i2 i3 i4 i5
i1 1.524e-23 .90369711 .28195568 .5464936 .45622921
i2 .90369711 1.524e-23 .47066711 .22864426 .51488065
i3 .28195568 .47066711 1.524e-23 .15738391 .6243488
i4 .5464936 .22864426 .15738391 1.524e-23 .31643784
i5 .45622921 .51488065 .6243488 .31643784 1.524e-23
. makematrix , from(r(chi2)) : tab i*, chi
i1 i2 i3 i4 i5
i1 100
i2 .01463915 100
i3 1.1576392 .52040936 100
i4 .36363636 1.4492754 1.999184 100
i5 .55512978 .42413558 .2398025 1.003613 100
Nick
[email protected]
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]]On Behalf Of Nick Cox
> Sent: 22 November 2004 18:58
> To: [email protected]
> Subject: st: RE: Re: chi squared matrix
>
>
> Always interesting in these cases to
> contrast a first principles solution
> and recourse to a canned program.
>
> Let's invent some data:
>
> clear
> set obs 100
> forval i = 1/5 {
> gen i`i' = uniform() > 0.5
> }
>
> A first principles solution is
>
> (1) set up some matrices
>
> mat chi2 = J(5,5,0)
> mat pval = J(5,5,0)
>
> (2) loop over varlists and populate the matrices with
> results:
>
> local i = 0
>
> qui foreach x of var i* {
> local ++i
> local j = 0
> foreach y of var i* {
> local ++j
> tab `x' `y', chi
> mat chi2[`i',`j'] = r(chi2)
> mat pval[`i',`j'] = r(p)
> }
> }
>
> (3) decorate the matrices
>
> unab x: i*
> matrix rownames chi2 = `x'
> matrix colnames chi2 = `x'
> matrix colnames pval = `x'
> matrix rownames pval = `x'
>
> (4) show results
>
> mat li chi2
>
> symmetric chi2[5,5]
> i1 i2 i3 i4 i5
> i1 100
> i2 .01463915 100
> i3 1.1576392 .52040936 100
> i4 .36363636 1.4492754 1.999184 100
> i5 .55512978 .42413558 .2398025 1.003613 100
>
> mat li pval
>
> pval[5,5]
> i1 i2 i3 i4 i5
> i1 1.524e-23 .90369711 .28195568 .5464936 .45622921
> i2 .90369711 1.524e-23 .47066711 .22864426 .51488065
> i3 .28195568 .47066711 1.524e-23 .15738391 .6243488
> i4 .5464936 .22864426 .15738391 1.524e-23 .31643784
> i5 .45622921 .51488065 .6243488 .31643784 1.524e-23
>
> =============================
>
> -makematrix- is two steps:
>
> (1) spend 30 minutes reading the help file and
> figuring out syntax
>
> (2)
>
> makematrix , from(r(chi2)) cols(i*) : tab i*, chi
>
> i1 i2 i3 i4 i5
> i1 100
> i2 .01463915 100
> i3 1.1576392 .52040936 100
> i4 .36363636 1.4492754 1.999184 100
> i5 .55512978 .42413558 .2398025 1.003613 100
>
> makematrix , from(r(p)) cols(i*) : tab i*, chi
>
> i1 i2 i3 i4 i5
> i1 1.524e-23 .90369711 .28195568 .5464936 .45622921
> i2 .90369711 1.524e-23 .47066711 .22864426 .51488065
> i3 .28195568 .47066711 1.524e-23 .15738391 .6243488
> i4 .5464936 .22864426 .15738391 1.524e-23 .31643784
> i5 .45622921 .51488065 .6243488 .31643784 1.524e-23
>
> I am not clear why Stata does not regard the last matrix
> as symmetric.
>
> Nick
> [email protected]
>
>
*
* 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/