首页 > 解决方案 > 如何从R中的左卡方分布生成随机数?

问题描述

我想从具有 3 个自由度但向左移动的卡方分布生成随机数。我的意思是移位分布函数 f(xa) a 是移位量。

在 r 中,据说非中心性参数必须是非负的。

标签: rrandom

解决方案


让我们看一下具有 3 个自由度的卡方分布:

x_vals <- seq(0, 10, 0.1)

plot(x_vals, dchisq(x_vals, 3), type = "l", 
     main = "Chi Squared distribution of x with 3 DOF")

现在让我们将它向左移动一个常量a。我们将在 x = 0 处绘制一条垂直线以强调这种转变:

a <- 2
plot(x_vals - a, dchisq(x_vals, 3), type = "l",
     main = "Chi Squared distribution of x - 2 with 3 DOF")
abline(v = 0, lty = 2)

这是您希望从中采样的分布。在这种情况下,我们只需要从卡方分布中采样并a从绘制的每个元素中减去。在 R 中,这就像在rchisq(n, 3) - a哪里做n所需的样本大小一样简单。

为了演示,这里是从这个分布中抽取的 10,000 个样本的直方图:

hist(rchisq(10000, 3) - a, breaks = 100, xlim = c(-2, 8), 
     main = "10,000 samples from Chi Square distribution of (x - 2) with 3 DOF")

在此处输入图像描述


推荐阅读