Stata:密度/分布函数与调查数据

时间:2015-08-20 15:07:06

标签: histogram distribution stata survey

我在Stata遇到了问题。我有一个带有抽样权重和分层的调查数据集。通过首先设置调查设计(抽样权重和分层)然后使用前缀svy:total,可以非常容易地计算人口总数。但遗憾的是,由于忽略了调查设计,因此无法使用直方图绘制密度函数。有没有办法用调查数据轻松绘制人口总数的密度和分布函数?

1 个答案:

答案 0 :(得分:0)

直方图 kdensity cumul 命令都采用频率权重,必须为整数。采样权重的问题在于它们可以是非整数的。但是,您可以创建频率权重,该频率权重将是概率权重的倍数,并且精确度与任何所需精度一致。 (诀窍是由于Austin Nichols。)这将允许您使用上述命令。 唯一不可用的选项是直方图频率选项。其他函数是均值,因此对原始权重的乘法不变。< / p>

在这个例子中,我使用了nhanes2b数据集。事实证明,所有权重都是整数,因此不需要转换技巧。

 webuse nhanes2b, clear

/* Create frequency weight which
agrees with original weight to any degree of accuracy */

local k = 2 
/* Match sampling weights to k = 2 decimal places:
   e.g. sampling weight = 3.212 -> fwt =321 */ 
gen fwt = round(10^(`k')*finalwgt,1)

/* 1. Histogram */
histogram height [fw = fwt], percent width(10)
/* 2. Probability Density */
kdensity height [fw = fwt], bwidth(2)


/*  3. CDF  */
cumul height [fw = fwt], gen(cum)
sort height cum
scatter cum height, c(J) ms(i)

编辑:带频率选项的直方图:

这使用未记录的命令twoway__histogram_genhttp://www.stata-journal.com/sjpdf.html?articlenum=gr0014)。

  twoway__histogram_gen height [fw = fwt], ///
     freq  width(10) gen(h x, replace)
  replace  h = round( h/10^`k')/10^6
  format h %5.0f
  twoway bar h x, ///
      bstyle(histogram) barwidth(10) ///
      ytitle("Frequency (Millions)")