全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
18207 1
2012-12-15
请教各位,如何在使用sum命令时控制均值和标准差小数点之后的位数?
另外,有什么命令可以将sum之后结果导出到excel或word上吗?像esttab命令那样,直接导出。粘贴复制真的伤不起啊。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-12-16 04:55:24
输出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文档






二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群