Changeset d2e4542 in tol
- Timestamp:
- Oct 21, 2008, 11:09:25 AM (18 years ago)
- Branches:
- 1941-docker-image-to-test, devel, master
- Children:
- abf9afa
- Parents:
- abcdfdb
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tol/stdlib/math/stat/models/bayesian/bysMcmc/test_04/test.tol
rabcdfdb rd2e4542 19 19 ////////////////////////////////////////////////////////////////////////////// 20 20 //NOTA IMPORTANTE: Los comentarios dentro de un NameBlock precedidos de ## 21 //significan que el m étodo o miembro a continuación es obligatorio para21 //significan que el método o miembro a continuación es obligatorio para 22 22 //ser usado por la API BsrHLM, debe estar presente con el mismo nombre, tipo y 23 //estructura interna. Por supuesto el contenido s Ãpuede cambiar para23 //estructura interna. Por supuesto el contenido sí puede cambiar para 24 24 //adaptarse al caso del modelo analizado. 25 //Los precedidos de un s ólo # son recomendables pero no obligatorios y se26 //puede cambiar el nombre sin problemas pero respetando la acci ón si es25 //Los precedidos de un sólo # son recomendables pero no obligatorios y se 26 //puede cambiar el nombre sin problemas pero respetando la acción si es 27 27 //posible. 28 //Los miembros y m étodos de un NameBlock que empiezan con _ son privados y28 //Los miembros y métodos de un NameBlock que empiezan con _ son privados y 29 29 //no se pueden acceder desde fuera, a noser que empiecen por _. en cuyo caso 30 //son de s ólo lectura, es decir, se pueden consultar pero no modificar desde30 //son de sólo lectura, es decir, se pueden consultar pero no modificar desde 31 31 //fuera del NameBlock 32 32 ////////////////////////////////////////////////////////////////////////////// … … 39 39 40 40 ////////////////////////////////////////////////////////////////////////////// 41 WriteLn("Creando en la base de datos el área documental");41 WriteLn("Creando en la base de datos el área documental"); 42 42 ////////////////////////////////////////////////////////////////////////////// 43 43 44 44 //Identificador del objetivo modelo. 45 //Deber Ãa distinguir de forma inequÃvocamente el proyecto, el concepto que45 //Debería distinguir de forma inequívocamente el proyecto, el concepto que 46 46 //se quiere analizar y otros detalles como el fechado o intervalo al que se 47 47 //refiere. … … 49 49 Text id_model = "Tdt.Test.Delta"; 50 50 51 //Descripci ón del objetivo modelo51 //Descripción del objetivo modelo 52 52 //Sin extenderse demasiado debe dejar muy claro l oque pretende el modelo 53 Text ds_model = "Modelo generado autom áticamente por simulación para el "54 "chequeo de la implementaci ón de la simulación de funciones de transferencia "55 "no lineales (delta), sobre un solo output y una sola funci ón de "53 Text ds_model = "Modelo generado automáticamente por simulación para el " 54 "chequeo de la implementación de la simulación de funciones de transferencia " 55 "no lineales (delta), sobre un solo output y una sola función de " 56 56 "transferencia, sin omitidos ni parte ARIMA"; 57 57 58 //Identificador de la sesi ón o implementación58 //Identificador de la sesión o implementación 59 59 //Es recomendable cambiarla cada vez que se produzca un cambio no trivial en 60 //la definici ón y que siga algún tipo de orden, cronológico, alfabético u60 //la definición y que siga algún tipo de orden, cronológico, alfabético u 61 61 //ordinal que permita a simple vista saber cual es anterior a otra. 62 //Si una sesi ón va asociada a un único modelo es prudente que el nombre lo62 //Si una sesión va asociada a un único modelo es prudente que el nombre lo 63 63 //recoja para evitar confusiones. En este caso se infija con A3Aud7CH como 64 64 //abreviatura del nombre del modelo. 65 Text id_session = "SES_Tdt.Test.Delta. SLICE"+IntText(rndSeed);65 Text id_session = "SES_Tdt.Test.Delta."+IntText(rndSeed); 66 66 67 67 //Esta orden desbloquea todas las sesiones relativas a este modelo … … 73 73 74 74 75 //Descripci ón de la sesión o implementación75 //Descripción de la sesión o implementación 76 76 //Se recomienda introducir un comentario sobre los cambios introducidos con 77 //respecto a la última sesión78 Text ds_session = "Modelo de un a ño en diario con función de transferencia "77 //respecto a la última sesión 78 Text ds_session = "Modelo de un año en diario con función de transferencia " 79 79 " omega_1/(1-delta_1*B) y un input de nivel"; 80 80 81 81 //Autores 82 //Deben firmar al menos los que han hecho los cambios de la presente sesi ón,82 //Deben firmar al menos los que han hecho los cambios de la presente sesión, 83 83 //preferentemente con su email separados por ; 84 84 Text ds_authors = … … 94 94 95 95 ////////////////////////////////////////////////////////////////////////////// 96 WriteLn("Creando en la base de datos los niveles de la jerarqu Ãa");96 WriteLn("Creando en la base de datos los niveles de la jerarquía"); 97 97 ////////////////////////////////////////////////////////////////////////////// 98 98 Real {BysMcmc::Bsr::DynHlm::DBApi::ModSes.SetLevels( 99 99 DBConnection::BsrHlm::_.defaultDB, id_model, id_session, 100 Real maxLatLevel = 0, //M áximo nivel de latencia100 Real maxLatLevel = 0, //Máximo nivel de latencia 101 101 Real hasPrior = False, //Indica si hay nodo a priori 102 102 Real hasMixture = False)}; //Indica si hay restricciones que afectan a … … 137 137 ////////////////////////////////////////////////////////////////////////////// 138 138 //Crea el manejador de series de un nodo observacional concreto 139 //En este caso s ólo hay un nodo observacional139 //En este caso sólo hay un nodo observacional 140 140 NameBlock node.series.handler(Real nu_node) 141 141 ////////////////////////////////////////////////////////////////////////////// … … 145 145 //##Nombre del nodo 146 146 Text _.id_node = "Obs.Node_"+te_node; 147 //##Descripci ón del nodo148 Text _.description = "Nodo observacional n úmero "+te_node;147 //##Descripción del nodo 148 Text _.description = "Nodo observacional número "+te_node; 149 149 150 150 //Para recorte de series input y output 151 151 NameBlock time.interval = GetTimeInterval(y2008m01d01, y2008m12d31); 152 152 153 //Generaci ón de inputs153 //Generación de inputs 154 154 NameBlock gen.input(Real minCoef, Real maxCoef, Serie shape) 155 155 {[[ … … 162 162 ]]}; 163 163 164 //Generaci ón de la funciones de transferencia164 //Generación de la funciones de transferencia 165 165 NameBlock gen.transFun(Real minCoef, Real maxCoef, Serie shape, 166 166 Real omega_deg, Real delta_deg) … … 169 169 Real _.maxCoef = maxCoef; 170 170 Real _.omega_deg = omega_deg; 171 //ARMS se cae sin m ás con delta de grado 2171 //ARMS se cae sin más con delta de grado 2 172 172 Real _.delta_deg = delta_deg; 173 173 //Real _.delta_deg = 1; … … 221 221 Matrix _.param.denIni = Tra(SerMat(_.denIni)) 222 222 ]]}; 223 //Generaci ón de las series del modelo223 //Generación de las series del modelo 224 224 NameBlock real.data = 225 225 [[ … … 258 258 ]]; 259 259 260 //#Contiene todas las series input y output con nombres únicos dentro260 //#Contiene todas las series input y output con nombres únicos dentro 261 261 //de cada nodo. 262 262 Set _.series = [[real.data::output ]] << real.data::input; 263 263 //#Se comprueba la unicidad de nombres y se indexa para acelerar 264 //b úsquedas264 //búsquedas 265 265 Real _check_unique = SetIndexByName(_.series); 266 266 267 //##Devuelve una serie del nodo dado un identificador único267 //##Devuelve una serie del nodo dado un identificador único 268 268 Serie GetSerie(Text id_serie) 269 269 { … … 271 271 }; 272 272 273 //##Informaci ón adicional del modelo sobre el output273 //##Información adicional del modelo sobre el output 274 274 NameBlock _.output = 275 275 {[[ … … 278 278 //##Serie output 279 279 Serie _.serie = _.series::output; 280 //##N úmero de sigmas para la distribución a priori de los omitidos281 //se multiplicar á por la desviación tÃpica muestral de la serie.282 //La media a priori ser ála de la propia serie.280 //##Número de sigmas para la distribución a priori de los omitidos 281 //se multiplicará por la desviación típica muestral de la serie. 282 //La media a priori será la de la propia serie. 283 283 Real _.mis_pri_sig_fac = 3; 284 //##Valor m Ãnimo a priori para los omitidos284 //##Valor mínimo a priori para los omitidos 285 285 Real _.mis_pri_min = -1/0; 286 //##Valor m áximo a priori para los omitidos286 //##Valor máximo a priori para los omitidos 287 287 Real _.mis_pri_max = +1/0; 288 //##Fecha inicial de estimaci ón del nodo288 //##Fecha inicial de estimación del nodo 289 289 Date _.firstDate = time.interval::_.firstDate; 290 //##Fecha final de estimaci ón del nodo290 //##Fecha final de estimación del nodo 291 291 Date _.lastDate = time.interval::_.lastDate; 292 292 //##Parte ARIMA asociada … … 303 303 304 304 Real _.useRealDataAsInitValue = False; 305 //##Informaci ón adicional del modelo sobre los inputs306 //Cada elemento es un NameBlock cuyo nombre ser áel identificador en305 //##Información adicional del modelo sobre los inputs 306 //Cada elemento es un NameBlock cuyo nombre será el identificador en 307 307 //la base de datos de BsrHlm y es obligatorio que se llame igual que 308 308 //la correspondiente serie input … … 310 310 NameBlock constante = [[ 311 311 //##Serie input 312 //Los d Ãas de fiesta la gente suele salir de casa más y ver menos tele312 //Los días de fiesta la gente suele salir de casa más y ver menos tele 313 313 Serie _.serie = _.series::constante; 314 //##Si es falso no se usar áeste input314 //##Si es falso no se usará este input 315 315 Real _.enabled = notNullDiff(_.serie); 316 //##N úmero de sigmas para la distribución a priori de los omitidos316 //##Número de sigmas para la distribución a priori de los omitidos 317 317 Real _.mis_pri_sig_fac = 5; 318 //##Valor m Ãnimo a priori para los omitidos318 //##Valor mínimo a priori para los omitidos 319 319 Real _.mis_pri_min = -1/0; 320 //##Valor m áximo a priori para los omitidos320 //##Valor máximo a priori para los omitidos 321 321 Real _.mis_pri_max = +1/0; 322 //##Valor inicial del par ámetro322 //##Valor inicial del parámetro 323 323 Real _.initValue = If(!_.useRealDataAsInitValue,0, 324 324 real.data::transFun::constante::_.coef); 325 //##Valor m Ãnimo a priori del parámetro325 //##Valor mínimo a priori del parámetro 326 326 Real _.minimum = -1/0; 327 //##Valor m áximo a priori del parámetro327 //##Valor máximo a priori del parámetro 328 328 Real _.maximum = +1/0 329 329 ]], 330 330 NameBlock lunes = [[ 331 331 //##Serie input 332 //Los d Ãas de fiesta la gente suele salir de casa más y ver menos tele332 //Los días de fiesta la gente suele salir de casa más y ver menos tele 333 333 Serie _.serie = _.series::lunes; 334 //##Si es falso no se usar áeste input334 //##Si es falso no se usará este input 335 335 Real _.enabled =notNullDiff(_.serie); 336 //##N úmero de sigmas para la distribución a priori de los omitidos336 //##Número de sigmas para la distribución a priori de los omitidos 337 337 Real _.mis_pri_sig_fac = 5; 338 //##Valor m Ãnimo a priori para los omitidos338 //##Valor mínimo a priori para los omitidos 339 339 Real _.mis_pri_min = -1/0; 340 //##Valor m áximo a priori para los omitidos340 //##Valor máximo a priori para los omitidos 341 341 Real _.mis_pri_max = +1/0; 342 //##Valor inicial del par ámetro342 //##Valor inicial del parámetro 343 343 Real _.initValue = If(!_.useRealDataAsInitValue,0, 344 344 real.data::transFun::lunes::_.coef); 345 //##Valor m Ãnimo a priori del parámetro345 //##Valor mínimo a priori del parámetro 346 346 Real _.minimum = -1/0; 347 //##Valor m áximo a priori del parámetro347 //##Valor máximo a priori del parámetro 348 348 Real _.maximum = +1/0 349 349 ]], 350 350 NameBlock priMes = [[ 351 351 //##Serie input 352 //Los d Ãas de fiesta la gente suele salir de casa más y ver menos tele352 //Los días de fiesta la gente suele salir de casa más y ver menos tele 353 353 Serie _.serie = _.series::priMes; 354 //##Si es falso no se usar áeste input354 //##Si es falso no se usará este input 355 355 Real _.enabled = notNullDiff(_.serie); 356 //#Funci ón de transferencia.356 //#Función de transferencia. 357 357 Ratio _.transferFunction = If(!_.useRealDataAsInitValue, 358 358 real.data::transFun::priMes::rand.transFun(0), 359 359 real.data::transFun::priMes::_.transFun); 360 //##N úmero de sigmas para la distribución a priori de los omitidos360 //##Número de sigmas para la distribución a priori de los omitidos 361 361 Real _.mis_pri_sig_fac = 5; 362 //##Valor m Ãnimo a priori para los omitidos362 //##Valor mínimo a priori para los omitidos 363 363 Real _.mis_pri_min = -1/0; 364 //##Valor m áximo a priori para los omitidos364 //##Valor máximo a priori para los omitidos 365 365 Real _.mis_pri_max = +1/0; 366 //##Valor inicial del par ámetro366 //##Valor inicial del parámetro 367 367 Real _.initValue = If(!_.useRealDataAsInitValue,0, 368 368 Coef(real.data::transFun::priMes::_.omega,0)); 369 //##Valor m Ãnimo a priori del parámetro369 //##Valor mínimo a priori del parámetro 370 370 Real _.minimum = -1/0; 371 //##Valor m áximo a priori del parámetro371 //##Valor máximo a priori del parámetro 372 372 Real _.maximum = +1/0 373 373 ]] )}; … … 400 400 NameBlock config = BysMcmc::BuildFullConfig([[ 401 401 //MCMC dimensions 402 Real mcmc.burnin = 500;402 Real mcmc.burnin = 600; 403 403 Real mcmc.sampleLength = 2000; 404 404 Real mcmc.cacheLength = 100; … … 445 445 /* */ 446 446 ////////////////////////////////////////////////////////////////////////////// 447 //Estimaci ón del modelo con el sistema Bsr::DynHlm447 //Estimación del modelo con el sistema Bsr::DynHlm 448 448 ////////////////////////////////////////////////////////////////////////////// 449 449 Set bsr.estim = {BysMcmc::Bsr::DynHlm::DBApi::Estim … … 467 467 Set estim = (bsr.estim::eval.average)[nu_node]; 468 468 Set aux = [[ 469 //Compara los valores de los par ámetros reales y estimados469 //Compara los valores de los parámetros reales y estimados 470 470 Matrix param.cmp = known::param | Tra(bsr.estim::param.average); 471 471 //Filtro real … … 479 479 //Output real 480 480 Serie Output = known::output, 481 //Previsi ón481 //Previsión 482 482 Serie Forecast = estim::serForecast; 483 //Error en t érminos absolutos483 //Error en términos absolutos 484 484 Serie Error = Output-Forecast; 485 485 //Error relativo medio
Note: See TracChangeset
for help on using the changeset viewer.
