输出sum结果,有个很好的用户编写的程序就是tabout,可输出excel, txt, tex等:
不过先说tabout的局限性【不然等看完发现不能满足要求就白瞎了】:
1、tabout只能输出单一统计量(mean, sd, ....一次只能选其中一个),
2、且统计量种类有限制,比如:不能求均值标准误差semean。
"standard error of the mean"=sd/sqrt(n)
而Std.dev.(sd)用的样本量是n-1。n是obs "number of observations"。
即sd = sqrt(total((x_i-mean(x_i))^2)/(n-1))
而std.err.of.mean=sd/sqrt(n)
源自var(mean of x)=var(sum 1/n x_i) = 1/(n^2) * sum( var(x_i) )= 1/(n^2)*n*var(x_i) = var(x_i)/n = sd^2 /n
std.err.of.mean=sqrt( var(mean of x)) = sd/sqrt(n)
另外一个是Stata系统里自带的程序:collapse,这个能生成的统计量就很全了,且可以一次生成多个统计量。【不过要生成同一个变量的多个描述统计量,需要对每个统计量,重新命名原变量,比如 之前求过变量price的统计量mean [(mean) price]之后,还要求它的std.err.,那么就得重命名 [(sd) sdprice=price]】
其实就是把原来的数据表,简化成只剩变量统计量的表。
所以就是collapse后,用format 对各个变量(生成的统计量)调小数点位数,再outsheet using *.xls, ... 即可。
具体例子:
collapse ///
(mean) price weight length headroom gear_ratio ///
(semean) meanprice=price meanweight=weight meanlength=length meanheadroom=headroom meangear_ratio=gear_ratio ///
, by(rep78)
format * %12.2fc
format rep78 %4.0f
* 这样*.dta-file里的数字格式就整齐了
outsheet using c.xls,replace
* 在Excel里打开,会发现没有保留原来的小数点位数,但是生成*.txt的话能够保留Stata的数据格式;
不过,可以自己在Excel调格式(选中,右键,单元格格式,数值,小数位数2,确定)
还有一个根据quantiles生成类别变量categorial Dummy的函数比较常用:
xtile dummyname=varname, nquantiles(#) 选择生成几个quantile,常用4个,即对var从低到高排序,按25% 50% 75%分成4组。然后用在collapse的,by()里。
e.g.:
xtile quartileprice=price, nquantiles(4)
tab quartileprice
4 quantiles |
of price | Freq. Percent Cum.
------------+-----------------------------------
1 | 19 25.68 25.68
2 | 18 24.32 50.00
3 | 19 25.68 75.68
4 | 18 24.32 100.00
------------+-----------------------------------
Total | 74 100.00
下面是tabout的简介:
ssc install tabout
sysuse auto
tabout foreign rep78 using table11.txt, ///
c(mean mpg mean weight mean length median price median headroom) ///
f(1c 1c 1c 2cm 1c) ///
clab(MPG Weight_(lbs) Length_(in) Price Headroom_(in)) ///
sum npos(tufte) 下面是结果: Mean Mean Mean Median Median
MPG Weight (lbs) Length (in) Price Headroom (in)
Car type
Domestic (70%) 19.8 3,317.1 196.1 $4,782.50 3.5
Foreign (29%) 24.8 2,315.9 168.5 $5,759.00 2.5
Total (100%) 21.3 3,019.5 187.9 $5,006.50 3.0
Repair Record 1978
1 (2%) 21.0 3,100.0 189.0 $4,564.50 1.8
2 (11%) 19.1 3,353.8 199.4 $4,638.00 3.8
3 (43%) 19.4 3,299.0 194.0 $4,741.00 3.5
4 (26%) 21.7 2,870.0 184.8 $5,751.50 3.0
5 (15%) 27.4 2,322.7 170.2 $5,397.00 2.5
Total (100%) 21.3 3,032.0 188.3 $5,079.00 3.0
tabout 后面的varlist是分类变量列表cat. list.,类似于bysort cat.: sum [varlist],
依据cat. 分类求 varlist里变量的各个描述统计量 mean, median 等等,
有几个分类变量,就列出几个分类统计结果表格。
c 即content()是求描述统计量的对象
f 即format() 设置小数点位数,或是逗号模式1000 为1,000, 百分数模式p,如 0.1 10%, 还有货币模式m,可以组合在一起 比如format(1p), 0.103 就变成 10.3%【显示为百分数,保留小数点后1位】
有很多options,参help tabout,以及里面的
pdf文档。