Метод ранговой корреляции Имана и Коновера представляется широко используемым и общим подходом к получению коррелированных образцов Монте-Карло для компьютерных экспериментов, анализа чувствительности и т. Д. К сожалению, я только что столкнулся с этим и у вас нет доступа к PDF, поэтому вы не знаете, как авторы на самом деле реализуют свой метод, но вы могли бы продолжить.
Их метод является более общим, поскольку каждая переменная может происходить из другого распределения, в отличие от многовариантной нормали ответа @ Dirk.
Обновление: Я нашел реализацию R вышеуказанного подхода в пакете mc2d
, в частности, вам нужна функция cornode()
.
Вот пример, взятый из ?cornode
> require(mc2d)
> x1 <- rnorm(1000)
> x2 <- rnorm(1000)
> x3 <- rnorm(1000)
> mat <- cbind(x1, x2, x3)
> ## Target
> (corr <- matrix(c(1, 0.5, 0.2, 0.5, 1, 0.2, 0.2, 0.2, 1), ncol=3))
[,1] [,2] [,3]
[1,] 1.0 0.5 0.2
[2,] 0.5 1.0 0.2
[3,] 0.2 0.2 1.0
> ## Before
> cor(mat, method="spearman")
x1 x2 x3
x1 1.00000000 0.01218894 -0.02203357
x2 0.01218894 1.00000000 0.02298695
x3 -0.02203357 0.02298695 1.00000000
> matc <- cornode(mat, target=corr, result=TRUE)
Spearman Rank Correlation Post Function
x1 x2 x3
x1 1.0000000 0.4515535 0.1739153
x2 0.4515535 1.0000000 0.1646381
x3 0.1739153 0.1646381 1.0000000
Ранговые корреляции в matc
теперь очень близки к целевым корреляциям corr
.
Идея заключается в том, что вы рисуете выборки отдельно от распределения для каждой переменной, а затем используете подход Iman & Connover, чтобы сделать выборки (как можно ближе) к целевым корреляциям, насколько это возможно.