Stata中的5-by-5矩阵“制表双向”频率计数表

时间:2012-01-09 00:31:52

标签: stata

我想创建一个5乘5的tabulate twoway频率计数表网格,如下表所示。

enter image description here

使用嵌套的foreach循环生成每个子表很容易,但是长列表输出比5乘5的网格更难解释(并且具有冗余条目 - 它提供了两个部分对称矩阵)。

是否有可能在Stata制作这样的桌子?为了清楚起见,我可以稍后弄清楚LaTeX,我只是想获得清晰简洁的控制台输出。

谢谢!下面是一些使用auto数据执行基础知识的代码,但生成列表而不是矩阵。 xtile来自egenmore

sysuse auto, clear
global vars price mpg headroom trunk weight
foreach x of global vars {
    egen d_`x' = xtile(`x'), nquantiles(2)
}

* can make diagonal entries
tabulate d_price d_price

* can make off-diagonal entries
tabulate d_price d_mpg

* crude solution that generates list output with redundant entries
foreach x of global vars {
    foreach y of global vars {
        tabulate d_`x' d_`y'
    }
}

1 个答案:

答案 0 :(得分:3)

我在循环中添加了一些矩阵运算。

tempname col all tabout
foreach x of global vars {
    foreach y of global vars {
        qui tabulate d_`x' d_`y', matcell(`tabout')
        mat colnames `tabout' = `x' `x'
        mat rownames `tabout' = `y' `y'
        mat `col' = (nullmat(`col') \ `tabout' )
    }
    mat `all'= (nullmat(`all') , `col')
    mat drop `col'
}
mat list `all'

这与http://code.google.com/p/kk-adofiles/

上名为meantab的程序有点类似