[Stata]模拟标准正态分布 |
- clear
- set obs 10000
- gen u1=uniform() //生成均匀分布随机变量u1
- gen u2=uniform() //生成均匀分布随机变量u2
- gen r_square=-2*log(u1) //生成参数为2的指数分布R^2
- gen theta=2*_pi*u2 // 生成(0,2pi)上的均匀分布theta
- gen x=sqrt(r_square)*cos(theta) //转换极坐标系
- gen y=sqrt(r_square)*sin(theta)
- histogram x,bin(50) norm // 50个直条
- histogram y,bin(50) norm
- pwcorr x y //计算相关系数
*标准正态分布模拟方法二(快速)
- clear
- set obs 12000
- gen r_square=sqrt(-2*log(uniform()))
- gen v1=uniform()*2-1 //分别生成(-1,1)上的均匀随机变量
- gen v2=uniform()*2-1
- keep if v1^2+v2^2 <=1 //只保留v1 v2单位元之内的部分,不必再进行转化
- keep if _n <=10000 //限制保留在10000内
- gen x=sqrt(r_square)*v1/sqrt(v1^2+v2^2) // v1/sqrt(v1^2+v2^2)是cos(theta)
- gen y=sqrt(r_square)*v2/sqrt(v1^2+v2^2) // v2/sqrt(v1^2+v2^2)是sin(theta)
- histogram x,bin(50) norm // 50个直条
- histogram y,bin(50) norm
- pwcorr x y //计算相关系数
*方法三
- clear
- set obs 100
- generate x1 = rnormal(0,1)
- generate x2 = rnormal(0.5,1.3)
- summarize x1
- local M1 = r(mean)
- local SD1 = r(sd)
- summarize x2
- local M2 = r(mean)
- local SD2 = r(sd)
- twoway function x1 = normalden(x, `M1', `SD1') , range(-4 4) || ///
- function x2 = normalden(x, `M2', `SD2'), range(-4 5)


雷达卡




京公网安备 11010802022788号







