NLRX 包:包括布尔参数作为变量
NLRX Package: Include boolean parameter as variable
我可以在 simdesign 的变量中包含布尔参数吗?如果是这样,那会是什么样子?现在我只有这样的度量变量:
variables = list(
'navigation-system-rate' = list(min = 0, max = 1, qfun="qunif"),
"expected-weight" = list(min = 0, max = 1, qfun="qunif")
)
但我希望他们为某个参数随机取值“true”或“false”。这有可能吗?
是的,您可以定义布尔值和分类变量值,但仅适用于某些模拟设计(简单、独特、全阶乘),如此处所述:
https://docs.ropensci.org/nlrx/articles/furthernotes.html#variables-and-constants-definitions
例如你可以使用,
variables = list(
"bool1" = list(values = c("true", "false")),
"bool2" = list(values = c("true", "false"))
)
然后例如将 simdesign_ff()
应用于 运行 布尔变量的所有组合。
所有其他 simdesigns 都需要一个数字 range/distribution,并且不会使用任何 categorical/boolean 值。
作为一个简单的解决方法,您可以在生成参数矩阵后对其应用一些转换。
例如,如果您正在做一个拉丁超立方体,您可以将布尔变量定义为 0 到 1 范围内的均匀分布变量。然后在应用 simdesign_lhs
之后,只需覆盖 nl@simdesign@siminput
通过将值 < 0.5 的所有单元格设置为 false 并将所有其他值设置为 true 来更新变量的值。
# Define variable as numeric in range 0 .. 1
nl@experiment <- experiment(
# ...
variables = list("bool1" = list(min = 0, max = 1, qfun="qunif"))
# ...
)
# apply simdesign_lhs to generate parameter matrix
nl@simdesign <- simdesign_lhs(nl=nl,
samples=100,
nseeds=3,
precision=3)
# apply transformation to boolean (netlogo needs booleans as strings)
nl@simdesign@siminput <- nl@simdesign@siminput %>%
dplyr::mutate(bool1 = dplyr::if_else(bool1 < 0.5, "false", "true"))
我可以在 simdesign 的变量中包含布尔参数吗?如果是这样,那会是什么样子?现在我只有这样的度量变量:
variables = list(
'navigation-system-rate' = list(min = 0, max = 1, qfun="qunif"),
"expected-weight" = list(min = 0, max = 1, qfun="qunif")
)
但我希望他们为某个参数随机取值“true”或“false”。这有可能吗?
是的,您可以定义布尔值和分类变量值,但仅适用于某些模拟设计(简单、独特、全阶乘),如此处所述: https://docs.ropensci.org/nlrx/articles/furthernotes.html#variables-and-constants-definitions
例如你可以使用,
variables = list(
"bool1" = list(values = c("true", "false")),
"bool2" = list(values = c("true", "false"))
)
然后例如将 simdesign_ff()
应用于 运行 布尔变量的所有组合。
所有其他 simdesigns 都需要一个数字 range/distribution,并且不会使用任何 categorical/boolean 值。 作为一个简单的解决方法,您可以在生成参数矩阵后对其应用一些转换。
例如,如果您正在做一个拉丁超立方体,您可以将布尔变量定义为 0 到 1 范围内的均匀分布变量。然后在应用 simdesign_lhs
之后,只需覆盖 nl@simdesign@siminput
通过将值 < 0.5 的所有单元格设置为 false 并将所有其他值设置为 true 来更新变量的值。
# Define variable as numeric in range 0 .. 1
nl@experiment <- experiment(
# ...
variables = list("bool1" = list(min = 0, max = 1, qfun="qunif"))
# ...
)
# apply simdesign_lhs to generate parameter matrix
nl@simdesign <- simdesign_lhs(nl=nl,
samples=100,
nseeds=3,
precision=3)
# apply transformation to boolean (netlogo needs booleans as strings)
nl@simdesign@siminput <- nl@simdesign@siminput %>%
dplyr::mutate(bool1 = dplyr::if_else(bool1 < 0.5, "false", "true"))