如何在矩阵中的制表符双向后保存相对行或列频率?

How do I save the relative row or column frequencies after tab twoway in a matrix?

如果我运行这个代码:

sysuse auto, clear
tab rep78 foreign, nofreq row matcell(freqs)
matrix list freqs

很明显,选项卡只保存了每个单元格中的实际计数,而不是使用 nofreq 行选项计算和显示的频率。如何将这些相对频率保存在矩阵中?我可以手动取消它们,但由于 Stata 已经计算了它们,所以应该有办法保存它们。

也发布在 Statalist

您可以在 Stata 中操作矩阵,但 Mata 在这方面更丰富。它可以像计算器一样使用。

. sysuse auto, clear
(1978 Automobile Data)

. tab rep78 foreign, nofreq row matcell(freqs)

    Repair |
    Record |       Car type
      1978 |  Domestic    Foreign |     Total
-----------+----------------------+----------
         1 |    100.00       0.00 |    100.00 
         2 |    100.00       0.00 |    100.00 
         3 |     90.00      10.00 |    100.00 
         4 |     50.00      50.00 |    100.00 
         5 |     18.18      81.82 |    100.00 
-----------+----------------------+----------
     Total |     69.57      30.43 |    100.00 


. matrix list freqs

freqs[5,2]
    c1  c2
r1   2   0
r2   8   0
r3  27   3
r4   9   9
r5   2   9

. mata 

: freqs = st_matrix("freqs")
: freqs :/ rowsum(freqs)
: freqs :/ colsum(freqs)

当然,您可以将这些矩阵中的任何一个推回 Stata。