Stata 如何从联合分布模拟对
我有两个正态分布X和Y,它们之间有一个给定的协方差和X和Y的方差,我想从联合分布中模拟(比如说200个点)成对的点,但我似乎找不到一个命令/方法来做到这一点。我想最终在散点图中绘制这些点 到目前为止,我已经Stata 如何从联合分布模拟对,stata,scatter-plot,Stata,Scatter Plot,我有两个正态分布X和Y,它们之间有一个给定的协方差和X和Y的方差,我想从联合分布中模拟(比如说200个点)成对的点,但我似乎找不到一个命令/方法来做到这一点。我想最终在散点图中绘制这些点 到目前为止,我已经 set obs 100 set seed 1 gen y = 64*rnormal(1, 5/64) gen x = 64*rnromal(1, 5/64) matrix D = (1, .5 | .5, 1) drawnorm x, y, cov(D) 但这会导致一个错误,即x和y已
set obs 100
set seed 1
gen y = 64*rnormal(1, 5/64)
gen x = 64*rnromal(1, 5/64)
matrix D = (1, .5 | .5, 1)
drawnorm x, y, cov(D)
但这会导致一个错误,即x
和y
已经存在
此外,一旦我有了一个样本,我将如何将
drawnorm
输出绘制为散点?这里是一个几乎最小的示例:
. clear
. set obs 100
number of observations (_N) was 0, now 100
. set seed 1
. matrix D = (1, .5 \ .5, 1)
. drawnorm x y, cov(D)
正如drawnorm
的帮助
所述,您必须提供新的变量名。由于x
和y
已经存在,drawnorm
把你赶了出去。您还有一个多余的逗号,可能会触发语法错误
help scatter
介绍散点图 生成相关数据的相关方法是使用corr2data
命令:
clear
set obs 100
set seed 1
matrix D = (1, .5 \ .5, 1)
drawnorm x1 y1, cov(D)
corr2data x2 y2, cov(D)
. summarize x*
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
x1 | 100 .0630304 1.036762 -2.808194 2.280756
x2 | 100 1.83e-09 1 -2.332422 2.238905
. summarize y*
Variable | Obs Mean Std. Dev. Min Max
-------------+---------------------------------------------------------
y1 | 100 -.0767662 .9529448 -2.046532 2.726873
y2 | 100 3.40e-09 1 -2.492884 2.797518
需要注意的是,与drawnorm
不同,corr2data
方法不会从基础总体生成样本数据。
然后,您可以创建一个
散点
图,如下所示:
scatter x1 y1
或者在单个图表中比较两种方法:
twoway scatter x1 y1 || scatter x2 y2
编辑: 对于特定的均值和方差,您需要在
drawnorm
中指定均值向量μ
和协方差矩阵∑
。例如,要绘制两个正态分布的随机变量,其均值分别为8和12,方差分别为5和8,请键入:
matrix mu = (8, 12)
scalar cov = 0.4 * sqrt(5 * 8) // assuming a correlation of 0.4
matrix sigma = (5, cov \ cov, 8)
drawnorm double x y, means(mu) cov(sigma)
drawnorm
的mean
和cov
选项都记录在help
文件中。谢谢!但是我需要x1和y1具有上面指定的均值和方差。我该怎么做?您只需使用drawnorm
中的相关值即可。键入help drawnorm
了解完整语法。有关特定示例,请参阅我的编辑。再清楚不过了。