如何在Stata中将一个矩阵除以另一个矩阵

时间:2016-07-04 10:31:47

标签: matrix stata division

我使用以下命令创建了两个矩阵:

tab year region if x==1, matcell(cases)  
tab year region, matcell(total)

两个矩阵都是10列乘9行。 我现在想要创建一个具有百分比的新矩阵 等于:p =(案例/总数)* 100

但我在Stata找不到这样做的命令?有一个简单的方法吗?

1 个答案:

答案 0 :(得分:3)

我们没有自己的实验数据,所以请考虑这种类比。

我们希望第一个表格占第二个表格的百分比。很容易直接到达那里,因为我们可以先计算出我们想要展示的内容。

. webuse nlsw88, clear 
(NLSW, 1988 extract)

. tab race collgrad if married == 1

           |   college graduate
      race | not colle  college g |     Total
-----------+----------------------+----------
     white |       862        288 |     1,150 
     black |       224         50 |       274 
     other |        12          6 |        18 
-----------+----------------------+----------
     Total |     1,098        344 |     1,442 


. tab race collgrad

           |   college graduate
      race | not colle  college g |     Total
-----------+----------------------+----------
     white |     1,217        420 |     1,637 
     black |       480        103 |       583 
     other |        17          9 |        26 
-----------+----------------------+----------
     Total |     1,714        532 |     2,246 


. egen toshow = mean(100 * (married == 1)), by(race collgrad)

. tabdisp race collgrad, c(toshow) format(%2.1f)

----------------------------------------------
          |          college graduate         
     race | not college grad      college grad
----------+-----------------------------------
    white |             70.8              68.6
    black |             46.7              48.5
    other |             70.6              66.7
----------------------------------------------

但是让我们展示如何使用矩阵。请注意,您要求的是矩阵除法,如线性代数中通常所理解的那样,作为除法 是元素。最简单的方法(现在)就是打电话给Mata。

quietly tab race collgrad if married == 1, matcell(num) 
quietly tab race collgrad, matcell(den)
mata : st_matrix("wanted", 100 * st_matrix("num") :/ st_matrix("den"))
mat li wanted

wanted[3,2]
           c1         c2
r1   70.82991  68.571429
r2  46.666667  48.543689
r3  70.588235  66.666667

请注意,单独使用Stata会更加尴尬,但安装后matewd完全可能。但由于Stata 9 Mata允许一线解决方案,因此Stata公平地标记了“历史”这样的程序。 matewd中包含dm69,即使摘要中未提及。

. search dm69, entry historical 


STB-50  dm69  . . . . . . . . . . . . . . . . . .  Further new matrix commands
        (help matdelrc, matewm, matmad, matpow if installed)  . . .  N. J. Cox
        7/99    pp.5--9; STB Reprints Vol 9, pp.29--34
        collection of new matrix commands providing additional matrix
        checking, management, element-wise operators, maximum absolute
        difference, and power