El nodo Generar simulación (Generación de simulación) proporciona una forma fácil de generar datos simulados, ya sea desde cero utilizando distribuciones estadísticas especificadas por el usuario o automáticamente utilizando las distribuciones obtenidas de la ejecución de un nodo Ajustar simulación (Ajuste de simulación) en los datos históricos existentes. Esto es útil cuando se desea evaluar el resultado de un modelo predictivo en presencia de incertidumbre en las entradas de modelo.
Propiedades de simgennode |
Tipo de datos | Descripción de la propiedad |
---|---|---|
fields |
Propiedad estructurada | Ver ejemplo |
correlations |
Propiedad estructurada | Ver ejemplo |
keep_min_max_setting |
Boolean | |
refit_correlations |
Boolean | |
max_cases |
entero | El valor mínimo es 1000, el valor máximo es 2,147,483,647. |
create_iteration_field |
Boolean | |
iteration_field_name |
serie | |
replicate_results |
Boolean | |
random_seed |
entero | |
parameter_xml |
serie | Devuelve el XML del parámetro como una cadena. |
Ejemplo de fields
Este es un parámetro de ranura estructurado con la sintaxis siguiente:
simgennode.setPropertyValue("fields", [
[field1, storage, locked, [distribution1], min, max],
[field2, storage, locked, [distribution2], min, max],
[field3, storage, locked, [distribution3], min, max]
])
distribution
es una declaración del nombre de distribución seguida de una lista que contiene pares de nombres y valores de atributos. Cada distribución se define de la siguiente forma:
[distributionname, [[par1], [par2], [par3]]]
simgennode = modeler.script.stream().createAt("simgen", u"Sim Gen", 726, 322)
simgennode.setPropertyValue("fields", [["Age", "integer", False, ["Uniform",[["min","1"],["max","2"]]], "", ""]])
Por ejemplo, para crear un nodo que genere un solo campo con una distribución binomial puede utilizar el siguiente script:
simgen_node1 = modeler.script.stream().createAt("simgen", u"Sim Gen", 200, 200)
simgen_node1.setPropertyValue("fields", [["Education", "Real", False, ["Binomial", [["n", 32],
["prob", 0.7]]], "", ""]])
La distribución binomial toma 2 parámetros: n
y prob
. Puesto que binomial no admite los valores mínimo y máximo, éstos se suministran como una serie vacía.
distribution
directamente; lo utiliza junto con la propiedad fields
.Los ejemplos siguientes muestran todos los tipos de distribución
posibles. Tenga en cuenta que el umbral se especifica como thresh
en NegativeBinomialFailures
y NegativeBinomialTrial
.
stream = modeler.script.stream()
simgennode = stream.createAt("simgen", u"Sim Gen", 200, 200)
beta_dist = ["Field1", "Real", False, ["Beta",[["shape1","1"],["shape2","2"]]], "", ""]
binomial_dist = ["Field2", "Real", False, ["Binomial",[["n" ,"1"],["prob","1"]]], "", ""]
categorical_dist = ["Field3", "String", False, ["Categorical", [["A",0.3],["B",0.5],["C",0.2]]], "", ""]
dice_dist = ["Field4", "Real", False, ["Dice", [["1" ,"0.5"],["2","0.5"]]], "", ""]
exponential_dist = ["Field5", "Real", False, ["Exponential", [["scale","1"]]], "", ""]
fixed_dist = ["Field6", "Real", False, ["Fixed", [["value","1" ]]], "", ""]
gamma_dist = ["Field7", "Real", False, ["Gamma", [["scale","1"],["shape"," 1"]]], "", ""]
lognormal_dist = ["Field8", "Real", False, ["Lognormal", [["a","1"],["b","1" ]]], "", ""]
negbinomialfailures_dist = ["Field9", "Real", False, ["NegativeBinomialFailures",[["prob","0.5"],["thresh","1"]]], "", ""]
negbinomialtrial_dist = ["Field10", "Real", False, ["NegativeBinomialTrials",[["prob","0.2"],["thresh","1"]]], "", ""]
normal_dist = ["Field11", "Real", False, ["Normal", [["mean","1"] ,["stddev","2"]]], "", ""]
poisson_dist = ["Field12", "Real", False, ["Poisson", [["mean","1"]]], "", ""]
range_dist = ["Field13", "Real", False, ["Range", [["BEGIN","[1,3]"] ,["END","[2,4]"],["PROB","[[0.5],[0.5]]"]]], "", ""]
triangular_dist = ["Field14", "Real", False, ["Triangular", [["min","0"],["max","1"],["mode","1"]]], "", ""]
uniform_dist = ["Field15", "Real", False, ["Uniform", [["min","1"],["max","2"]]], "", ""]
weibull_dist = ["Field16", "Real", False, ["Weibull", [["a","0"],["b","1 "],["c","1"]]], "", ""]
simgennode.setPropertyValue("fields", [\
beta_dist, \
binomial_dist, \
categorical_dist, \
dice_dist, \
exponential_dist, \
fixed_dist, \
gamma_dist, \
lognormal_dist, \
negbinomialfailures_dist, \
negbinomialtrial_dist, \
normal_dist, \
poisson_dist, \
range_dist, \
triangular_dist, \
uniform_dist, \
weibull_dist
])
Ejemplo de correlations
Este es un parámetro de ranura estructurado con la sintaxis siguiente:
simgennode.setPropertyValue("correlations", [
[field1, field2, correlation],
[field1, field3, correlation],
[field2, field3, correlation]
])
La correlación puede ser cualquier número entre +1
y -1
. Puede especificar tantas correlaciones como desee. Las correlaciones no especificadas se establecen en cero. Si se desconoce algún campo, el valor de correlación debe establecerse en la matriz (o tabla) de correlación. Cuando hay campos desconocidos, no es posible ejecutar el nodo.