【发布时间】:2018-10-09 08:36:54
【问题描述】:
我在 R 中应用 sensitivity 包。特别是,我想使用 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] 之间的采样值(我认为是密度绘制?)。这对任何人是否有意义和/或是否有人知道我如何按照包描述中的语法从正确的发行版中采样?
【问题讨论】:
标签: r distribution sampling montecarlo