Il nodo Genera simulazione (Sim Gen) fornisce un modo semplice per generare dati simulati - da zero utilizzando distribuzioni statistiche specificate dall'utente o automaticamente utilizzando le distribuzioni ottenute dall'esecuzione di un nodo Adattamento simulazione (Adattamento simulazione) su dati cronologici esistenti. Questo è utile quando si desidera valutare il risultato di un modello predittivo in presenza di incertezza negli input del modello.
Proprietà simgennode |
Tipo di dati | Descrizione proprietà |
---|---|---|
fields |
Proprietà strutturata | Vedere l'esempio |
correlations |
Proprietà strutturata | Vedere l'esempio |
keep_min_max_setting |
booleano | |
refit_correlations |
booleano | |
max_cases |
intero | Il valore minimo è 1000, il valore massimo è 2.147.483.647 |
create_iteration_field |
booleano | |
iteration_field_name |
Stringa | |
replicate_results |
booleano | |
random_seed |
intero | |
parameter_xml |
Stringa | Restituisce il codice Xml del parametro come stringa |
Esempio di fields
Questo è un parametro di slot strutturato con la seguente sintassi:
simgennode.setPropertyValue("fields", [
[field1, storage, locked, [distribution1], min, max],
[field2, storage, locked, [distribution2], min, max],
[field3, storage, locked, [distribution3], min, max]
])
distribution
è una dichiarazione del nome della
distribuzione seguito da un elenco contenente le coppie di nomi di attributo e valori. Ciascuna distribuzione è definita nel seguente modo:
[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"]]], "", ""]])
Ad esempio, per creare un nodo che genera un solo campo con una distribuzione Binomial è possibile utilizzare il seguente 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 distribuzione Binomial utilizza due parametri: n
e
prob
. Poiché Binomial non supporta i valori minimo e massimo,
questi vengono forniti da una stringa vuota.
distribution
direttamente; è possibile utilizzarlo insieme alla proprietà fields
.I seguenti esempi mostrano tutti i tipi di distribuzione possibili. Tenere
presente che la soglia viene inserita come thresh
in
NegativeBinomialFailures
e 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
])
Esempio di correlations
Questo è un parametro di slot strutturato con la seguente sintassi:
simgennode.setPropertyValue("correlations", [
[field1, field2, correlation],
[field1, field3, correlation],
[field2, field3, correlation]
])
La correlazione può essere qualsiasi numero compreso tra +1
e -1
. È possibile specificare tutte le correlazioni desiderate. Tutte le correlazioni non specificate vengono impostate su zero. Se alcuni campi sono sconosciuti, il valore di correlazione deve essere impostato sulla matrice di correlazione (o tabella). Quando sono presenti campi sconosciuti, non è possibile eseguire il nodo.