我正在尝试在 Stata 中使用 10000 个随机样本进行模拟,用于 (i) 带有 pdf 的变量 X
f(x) = 2*x*exp(-x^2), X>0
,以及 (ii)Y=X^2
我计算出 F 的 cdf 为1-exp(-x^2)
,所以 F 的倒数是sqrt(-ln(1-u).
我使用以下代码在Stata中:
(1)
clear
set obs 10000
set seed 527665
gen u= runiform()
gen x= sqrt(-ln(1-u))
histogram x
summ x, detail
(mean 0.88, sd 0.46)
(2)
clear
set obs 10000
set seed 527665
gen u= runiform()
gen x= (sqrt(-ln(1-u)))^2
summ x, detail
(mean 0.99, sd 0.99)
(3)
clear
set obs 10000
set seed 527665
gen u= rexponential(1)
gen x= 2*u*exp(-(u^2))
summ x, detail
(mean 0.49, sd 0.28)
(4)
clear
set obs 10000
set seed 527665
gen v= runiform()
gen u=1/v
gen x= 2*u*exp(-(u^2))
histogram x
summ x, detail
(mean 0.22, sd 0.26)
我的查询是:(i)(1)和(2)基于概率积分变换,我遇到过但不明白。如果(1)和(2)是有效的方法,这背后的直觉是什么,(ii)(3)的输出似乎不正确;我不确定我是否正确应用了 reexponential 函数,以及 scale 参数是什么(在 stata 帮助中似乎没有对此进行解释)(iii)(4)的输出似乎也不正确,我是想知道为什么这种方法有缺陷。
谢谢