Преобразование равномерных отрисовок в нормальные распределения с известным средним и стандартным значением в R - PullRequest
0 голосов
/ 09 октября 2018

Я применяю пакет чувствительность в R. В частности, я хочу использовать sobolroalhs , поскольку он использует процедуру выборки для входных данных, которая позволяет оценивать модели с большим количествомпараметры.Функция выборки равномерно [0,1] для всех входов.Утверждается, что желаемые распределения должны быть получены следующим образом

####################
# Test case: dealing with non-uniform distributions
x <- sobolroalhs(model = NULL, factors = 3, N = 1000, order =1, nboot=0)
# X1 follows a log-normal distribution:
x$X[,1] <- qlnorm(x$X[,1])
# X2 follows a standard normal distribution:
x$X[,2] <- qnorm(x$X[,2])
# X3 follows a gamma distribution:
x$X[,3] <- qgamma(x$X[,3],shape=0.5)
# toy example
toy <- function(x){rowSums(x)}
y <- toy(x$X)
tell(x, y)
print(x)
plot(x)

У меня есть ненулевое среднее значение и стандартные отклонения для некоторого входного параметра, который я хочу выбрать из нормального распределения.Для других я хочу сделать выборку между определенным диапазоном (например, [0,03,0.07] вместо [0,1]).Я пытался использовать встроенные функции R, такие как

SA$X[,1]  <- rnorm(1000, mean = 579,  sd = 21) 

, но я боюсь, что эта процедура испортила дизайн выборки пакета и привела к странным результатам для индексов чувствительности.Следовательно, я думаю, что мне нужно придерживаться равномерного отрисовки функции sobolroalhs, в которой и использовать выборочное значение между [0, 1] при вытягивании из желаемого распределения (я думаю, что рисование плотности?).Имеет ли это смысл для кого-либо и / или кто-нибудь знает, как я мог бы выбрать правильные дистрибутивы, следуя синтаксису из описания пакета?

1 Ответ

0 голосов
/ 09 октября 2018

Вы можете указать mean и sd в qnorm.Поэтому измените строки следующим образом:

x$X[,2] <- qnorm(x$X[,2])

примерно так:

x$X[,2] <- qnorm(x$X[,2], mean = 579, sd = 21)

Аналогично, вы можете использовать параметры min и max qunif для получения значенийв данном диапазоне.

Конечно, также возможно преобразовать стандартные нормали или униформу в те, которые вы хотите, используя такие вещи, как X <- 579 + 21*Z или Y <- 0.03 + 0.04*U, где Z является стандартным нормалью и U является стандартной униформой, но для некоторых распределений эти преобразования не так просты, и использование функций q* может быть проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...