Le noeud Simulation Generate (Sim Gen) permet de générer facilement des données simulées, soit à partir de zéro à l'aide de distributions statistiques spécifiées par l'utilisateur, soit automatiquement à l'aide des distributions obtenues lors de l'exécution d'un noeud Simulation Fitting (Sim Fit) sur des données d'historique existantes. Cela s'avère utile si vous voulez évaluer le résultat d'un modèle prédictif en présence d'incertitude dans les entrées du modèle.
simgennode propriétés |
Type de données | Description de la propriété |
---|---|---|
fields |
Propriété structurée | Voir l'exemple |
correlations |
Propriété structurée | Voir l'exemple |
keep_min_max_setting |
Booléen | |
refit_correlations |
Booléen | |
max_cases |
Integer | La valeur minimum est de 1000 ; la valeur maximum est de 2 147 483 647. |
create_iteration_field |
Booléen | |
iteration_field_name |
chaîne | |
replicate_results |
Booléen | |
random_seed |
Integer | |
parameter_xml |
chaîne | Renvoie le paramètre Xml sous forme de chaîne. |
Exemple pour fields
Il s'agit d'un paramètre de propriété structurée dont la syntaxe est :
simgennode.setPropertyValue("fields", [
[field1, storage, locked, [distribution1], min, max],
[field2, storage, locked, [distribution2], min, max],
[field3, storage, locked, [distribution3], min, max]
])
distribution
est une déclaration du nom de distribution suivie d'une liste contenant des paires de noms d'attributs et de valeurs. Chaque distribution est définie de la manière suivante :
[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"]]], "", ""]])
Par exemple, pour créer un noeud qui génère un champ unique avec une distribution binomiale, vous pouvez utiliser le script suivant :
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 distribution binomiale prend 2 paramètres: n
et prob
. Comme
Binomial ne prend pas en charge les valeurs de minimum et de maximum, ces valeurs sont fournies en tant que chaîne vide.
distribution
; vous l'utilisez avec la propriété fields
.Les exemples suivants représentent tous les types de distribution possibles. Notez que le seuil est entré sous la forme thresh
dans NegativeBinomialFailures
et 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
])
Exemple pour correlations
Il s'agit d'un paramètre de propriété structurée dont la syntaxe est :
simgennode.setPropertyValue("correlations", [
[field1, field2, correlation],
[field1, field3, correlation],
[field2, field3, correlation]
])
La corrélation peut être n'importe quel nombre entre +1
et -1
. Vous pouvez indiquer autant ou aussi peu de corrélations que vous le souhaitez. Toutes les corrélations
non spécifiées sont définies sur zéro. Si des champs sont inconnus, la valeur de corrélation doit être définie sur la matrice de corrélation (ou table). Lorsqu'il existe des champs inconnus, il n'est pas possible d'exécuter le noeud.