我使用以下命令创建了两个矩阵:
tab year region if x==1, matcell(cases)
tab year region, matcell(total)
两个矩阵都是10列乘9行。 我现在想要创建一个具有百分比的新矩阵 等于:p =(案例/总数)* 100
但我在Stata找不到这样做的命令?有一个简单的方法吗?
答案 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