如何获得具有不同箱宽的直方图?

如何获得具有不同箱宽的直方图?

这是Statalist上的一个问题。How can I get a histogram with varying bin widths?。方法是使用Nicholas J. Cox大神的eqprhistogram命令。

安装

Stata
1
2
ssc desc eqprhistogram
ssc install eqprhistogram

使用

Stata
1
2
3
use "http://www.stata-press.com/data/r9/womenwage.dta", clear
* bin(10)表示指定每个条形代表分布中总概率的1/10
eqprhistogram wage, bin(10) plot(kdensity wage, biweight w(5))

所以这里的每个柱体代表的数据是总体的十分之一。

而实际上如果你了解twoway bar的一些特殊功能,你可以直接绘制不等宽柱形图,例如对于Altman (1991, 25)的数据集:

Age Frequency
0-4 28
5-9 46
10-15 58
16 20
17 31
18-19 64
20-24 149
25-59 316
60+ 103

我们把这个数据集输入Stata:

Stata
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
clear all
input Age Frequency
0 28
5 46
10 58
16 20
17 31
18 64
20 149
25 316
60 103
80 .
end
sum Freq
* 计算密度
gen Density = Freq / (`r(sum)' * (Age[_n+1] - Age))
twoway bar Density Age, bartype(spanning) bstyle(histogram)

spanning将柱体向右拓展,这也就是为什么要指定上下界。 另外数据应该是排好序的,bstyle(histogram)选项不是必须的。如果柱体不是从0开始,你可能需要添加选项yscale(range(0))

# Stata

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×