如何创建相关的拉丁超立方体样品?

时间:2019-07-12 07:33:29

标签: r random correlated

我一直在尝试使用1因子高斯copula模型生成二维相关的拉丁超立方体样本。但是,所得的相关分位数在二维拉丁立方体的每个行列中不一定具有1个采样点。

下面是使用2-d大小写的示例R代码。我已经编写了一个简单的LHS随机数生成器,并且没有为此使用R包,但是我认为这应该没关系。该图显示了不相关(黑点)和相关(红点)样本的二维拉丁方。您可以看到,尽管这似乎是正确的,但相关的样本并没有像在LHS中那样出现在每一行/每一列。

简单的LHS随机数生成器:

rnlhs <- function(n) {
  # define strata
  brks <- seq(0, 1, length.out=(n + 1))
  strata <- data.frame(start=brks[1:n], end=brks[2:(n + 1)])
  s <- runif(n, strata$start, strata$end) 
  # reshuffle
  sample(s)
}

rho=0.5; n=10

### Random case
set.seed(9)
q1 <- rnlhs(n)
q2 <- rnlhs(n)

plot(q1, q2, xlim=c(0, 1), ylim=c(0, 1))
abline(h=seq(0, 1, 0.1), v=seq(0, 1, 0.1), col="gray", lty=3)

### Correlated samples (factor model)
q1 <- rnlhs(n)
q2 <- rnlhs(n)
q0 <- rnlhs(n)
X0 <- qnorm(q0, 0, 1)
X1 <- qnorm(q1, 0, 1)
X2 <- qnorm(q2, 0, 1)
Y1 <- sqrt(rho)*X0 + sqrt(1 - rho)*X1
Y2 <- sqrt(rho)*X0 + sqrt(1 - rho)*X2

# correlated quantiles using the normal CDF
q11 <- pnorm(Y1, 0, 1)
q22 <- pnorm(Y2, 0, 1)

points(q11, q22, col="red", pch=16)

enter image description here

由于-例如-q11q22都没有样本,因此不能将所得的相关分位数q11q22真正定义为拉丁超立方体样本点在[0.1,0.2]之内。如何确保在每一行和每一列中都出现一个相关的样本点?

0 个答案:

没有答案