# st: RE: RE: Re: chi squared matrix

 From "Nick Cox" <[email protected]> To <[email protected]> Subject st: RE: RE: Re: chi squared matrix Date Mon, 22 Nov 2004 19:08:06 -0000

```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/
```