从双变量正态分布和学生T分布生成随机样本的最佳方法是什么?在这两种情况下,sigma是1,意思是0 - 所以我真正感兴趣的唯一参数是相关性(和学生t的自由度)。我需要在C ++中使用解决方案,所以我不能不幸地使用MatLab或Mathematica已经实现的函数。
答案 0 :(得分:6)
您可以使用GNU GSL库。请参阅此处了解双变量法线:
http://www.gnu.org/software/gsl/manual/html_node/The-Bivariate-Gaussian-Distribution.html
和学生的t分布在这里:
http://www.gnu.org/software/gsl/manual/html_node/The-t_002ddistribution.html
他们很容易使用。
答案 1 :(得分:4)
对于具有协方差单位和零均值的双变量法线,只需绘制两个单变量法线。
如果你想用平均值(m1,m2),标准偏差(s1,s2)和相关rho绘制二元法线,则绘制两个单位单变量法线X和Y并设置
u = m1 + s1 * X
v = m2 + s2 * (rho X + sqrt(1 - rho^2) Y)
然后根据您的意愿分发你和你。
对于学生T,你必须画一个正常变量N和一个chi ^ 2变量V.然后,N / sqrt(V)有T分布。
要绘制chi ^ 2,您应该使用包。或者看一下数字食谱第7章,了解如何从Gamma分布中绘制(xhi ^ 2是Gamma的特例)。
答案 2 :(得分:3)
您应该查看Boost库随机分布 - 请参阅http://www.boost.org/doc/libs/1_41_0/libs/random/random-distributions.html。一旦你围绕他们的基本概念,我发现它们非常容易使用。不幸的是,我对统计数据的了解不足以告诉您它们是否完全符合您的需求。