4

从二元正态分布和学生 T 分布生成随机样本的最佳方法是什么?在这两种情况下,sigma 都是 1,意味着 0 - 所以我真正感兴趣的唯一参数是相关性(以及学生 t 的自由度)。我需要 C++ 中的解决方案,所以很遗憾我不能使用 MatLab 或 Mathematica 中已经实现的函数。

4

3 回答 3

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

它们可以直接使用。

于 2010-01-24T18:21:36.660 回答
4

对于协方差为单位且均值为零的双变量法线,只需绘制两个单变量法线。

如果要绘制具有均值 (m1, m2)、标准差 (s1, s2) 和相关性 rho 的双变量法线,则绘制两个单位单变量法线 X 和 Y 并设置

u = m1 + s1 * X
v = m2 + s2 * (rho X + sqrt(1 - rho^2) Y)

然后 u 和 v 按您的意愿分配。

对于学生 T,您必须绘制一个正态变量 N 和一个 chi^2 变量 V。然后,N / sqrt(V) 具有 T 分布。

要绘制 chi^2,您应该使用包。或者查看数字食谱第 7 章,了解如何从 Gamma 分布中提取(xhi^2 是 Gamma 的一个特例)。

于 2011-07-01T21:23:47.593 回答
3

您应该查看 Boost 库随机分布 - 请参阅http://www.boost.org/doc/libs/1_41_0/libs/random/random-distributions.html。一旦您了解它们的基本概念,我发现它们非常易于使用。不幸的是,我对统计数据的了解还不够,无法告诉您它们是否能完全满足您的需求。

于 2010-01-24T18:20:58.550 回答