Random 是否有一种方法可以使用Stata'从正态分布的特定十分位数中获得随机样本;s rnormal()函数?

Random 是否有一种方法可以使用Stata'从正态分布的特定十分位数中获得随机样本;s rnormal()函数?,random,stata,Random,Stata,我正在使用一个数据集,其中隐藏了我感兴趣的变量的值。我有这个变量的范围(min-max)、平均值和sd,对于每次观察,我有关于观察值所在的十分位的信息。是否有任何方法可以使用Stata中的随机数生成器或rnormal()命令集为该变量输入一些值?大致如下: 设置种子1 gen-imputed_var=r正常值(平均值、标准差、小数位数),如果小数位数=1 谢谢你在这方面的帮助,谢谢 我对Stata不熟悉,但下面的内容可能会让你找到正确的方向 通常,要生成某个十分位数的随机数: 在[(十分位数-

我正在使用一个数据集,其中隐藏了我感兴趣的变量的值。我有这个变量的范围(min-max)、平均值和sd,对于每次观察,我有关于观察值所在的十分位的信息。是否有任何方法可以使用Stata中的随机数生成器或rnormal()命令集为该变量输入一些值?大致如下:

设置种子1

gen-imputed_var=r正常值(平均值、标准差、小数位数),如果小数位数=1


谢谢你在这方面的帮助,谢谢

我对Stata不熟悉,但下面的内容可能会让你找到正确的方向

通常,要生成某个十分位数的随机数:

  • 在[(十分位数-1)/10,十分位数/10]中生成一个随机数,
    decile
    是从1到10的所需十分位数
  • 找到刚刚生成的随机数的分位数
因此,在伪代码中,以下内容将实现您想要的(但我不确定Stata中相应函数的确切名称,这就是为什么它是伪代码):


我对斯塔塔不熟悉,但以下几点可能会让你找到正确的方向

通常,要生成某个十分位数的随机数:

  • 在[(十分位数-1)/10,十分位数/10]中生成一个随机数,
    decile
    是从1到10的所需十分位数
  • 找到刚刚生成的随机数的分位数
因此,在伪代码中,以下内容将实现您想要的(但我不确定Stata中相应函数的确切名称,这就是为什么它是伪代码):


这正是@Peter O刚刚提出的建议。我做出了与他相同的假设:通过一种常见的术语滥用,“decile”是您对十分位类、位号或间隔的速记。从历史上看,小数点是对应于累积概率0.1(0.1)0.9的值,而不是这些值所界定的任何箱子

. clear

. set obs 100
number of observations (_N) was 0, now 100

. set seed 1506

. gen foo = invnormal(runiform(0, 0.1))

. su foo

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
         foo |        100   -1.739382    .3795648  -3.073447  -1.285071
和(更接近变量名)


这正是@Peter O刚刚提出的建议。我做出了与他相同的假设:通过一种常见的术语滥用,“decile”是您对十分位类、位号或间隔的速记。从历史上看,小数点是对应于累积概率0.1(0.1)0.9的值,而不是这些值所界定的任何箱子

. clear

. set obs 100
number of observations (_N) was 0, now 100

. set seed 1506

. gen foo = invnormal(runiform(0, 0.1))

. su foo

    Variable |        Obs        Mean    Std. Dev.       Min        Max
-------------+---------------------------------------------------------
         foo |        100   -1.739382    .3795648  -3.073447  -1.285071
和(更接近变量名)

 gen wanted = invnormal(runiform(0.1 * (decile - 1), 0.1 * decile))