Changeset 1798133 in tol


Ignore:
Timestamp:
Nov 18, 2008, 10:34:26 AM (18 years ago)
Author:
Miguel Ángel Fernández <mafernandez@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
56df6ca
Parents:
fedf88a
Message:

Actualizada plantilla de usuario con ejemplo extenso de plantilla

git-svn-id: ​https://www.tol-project.org/svn/tolp/trunk@187 be4846ae-f051-483a-831f-b64e7d08527f

File:
1 edited

Legend:

Unmodified
Added
Removed
  • doc/modeling/BSR/BSR_P3_S2_BsrHlm_plantilla_de_modelo.lyx

    rfedf88a r1798133  
    1 #LyX 1.5.3 created this file. For more info see http://www.lyx.org/
     1#LyX 1.5.6 created this file. For more info see http://www.lyx.org/
    22\lyxformat 276
    33\begin_document
    … …  
    8282\end_layout
    8383
     84\begin_layout Standard
     85A continuación exponemos las partes necesarias de código en las que consiste
     86 una plantilla ejemplo para el uso de BSr-Hlm:
     87\newline
     88
     89\newline
     90Este NameBlock especifica
     91 los datos necesarios para la conexión con la base da datos BsrHlm
     92\newline
     93
     94\begin_inset listings
     95inline false
     96status open
     97
     98\begin_layout Standard
     99
     100NameBlock DBConnection = [[   
     101\end_layout
     102
     103\begin_layout Standard
     104
     105  NameBlock BsrHlm = DBConnect::Create("BsrHlm","bysfor","bys!98.",
     106\end_layout
     107
     108\begin_layout Standard
     109
     110     "mysql","bysNPIDSO","d-mysql01","Almacenamiento de
     111\end_layout
     112
     113\begin_layout Standard
     114
     115      modelos BSR-DynHLM"); 
     116\end_layout
     117
     118\begin_layout Standard
     119
     120  Real check = Real DBConnect::CheckAll(0)
     121\end_layout
     122
     123\begin_layout Standard
     124
     125                         ]];
     126\end_layout
     127
     128\end_inset
     129
     130Activamos la base de datos BsrHlm:
     131\newline
     132
     133\begin_inset listings
     134inline false
     135status open
     136
     137\begin_layout Standard
     138
     139Real DBConnection::BsrHlm::Activate(0);
     140\end_layout
     141
     142\end_inset
     143
     144Identificamos el nombre del modelo:
     145\newline
     146
     147\begin_inset listings
     148inline false
     149status open
     150
     151\begin_layout Standard
     152
     153Text id_model =  "BSR_Lat.Reg.Test_III";
     154\end_layout
     155
     156\end_inset
     157
     158Descripción del objetivo del modelo:
     159\newline
     160
     161\begin_inset listings
     162inline false
     163status open
     164
     165\begin_layout Standard
     166
     167Text ds_model = "Pruebas para nodos latentes regresivos";
     168\end_layout
     169
     170\end_inset
     171
     172Identificamos la sesión:
     173\newline
     174
     175\begin_inset listings
     176inline false
     177status open
     178
     179\begin_layout Standard
     180
     181Text id_session = "SES_LAT.REG_TEST.20081006_22";
     182\end_layout
     183
     184\end_inset
     185
     186Descripción de la sesión:
     187\newline
     188
     189\begin_inset listings
     190inline false
     191status open
     192
     193\begin_layout Standard
     194
     195Text ds_session = "Pruebas nodos regresivos latentes";
     196\end_layout
     197
     198\end_inset
     199
     200Listado de autores:
     201\newline
     202
     203\begin_inset listings
     204inline false
     205status open
     206
     207\begin_layout Standard
     208
     209Text ds_authors = "mafernandez@bayesinf.com;";
     210\end_layout
     211
     212\end_inset
     213
     214Inserción del modelo en la base de datos:
     215\newline
     216
     217\begin_inset listings
     218inline false
     219status open
     220
     221\begin_layout Standard
     222
     223Real BysMcmc::Bsr::DynHlm::DBApi::Mod.Create(
     224\end_layout
     225
     226\begin_layout Standard
     227
     228     DBConnection::BsrHlm::_.defaultDB, id_model, ds_model);
     229\end_layout
     230
     231\end_inset
     232
     233Inserción de la sesión en la base de datos:
     234\newline
     235
     236\begin_inset listings
     237inline false
     238status open
     239
     240\begin_layout Standard
     241
     242Real BysMcmc::Bsr::DynHlm::DBApi::Ses.Create(
     243\end_layout
     244
     245\begin_layout Standard
     246
     247     DBConnection::BsrHlm::_.defaultDB, id_session, ds_session,
     248\end_layout
     249
     250\begin_layout Standard
     251
     252     ds_authors);
     253\end_layout
     254
     255\end_inset
     256
     257Inserción del modelo-sesión en la base de datos:
     258\newline
     259
     260\begin_inset listings
     261inline false
     262status open
     263
     264\begin_layout Standard
     265
     266Real BysMcmc::Bsr::DynHlm::DBApi::ModSes.Create(
     267\end_layout
     268
     269\begin_layout Standard
     270
     271      DBConnection::BsrHlm::_.defaultDB, id_model, id_session);
     272\end_layout
     273
     274\end_inset
     275
     276Se crean en la base da datos los niveles de jerarquía .
     277\newline
     278
     279\begin_inset listings
     280inline false
     281status open
     282
     283\begin_layout Standard
     284
     285Real BysMcmc::Bsr::DynHlm::DBApi::ModSes.SetLevels(
     286\end_layout
     287
     288\begin_layout Standard
     289
     290     DBConnection::BsrHlm::_.defaultDB,id_model,id_session,
     291\end_layout
     292
     293\begin_layout Standard
     294
     295     Real maxLatLevel = 1,
     296\end_layout
     297
     298\begin_layout Standard
     299
     300     Real hasPrior    = True,
     301\end_layout
     302
     303\begin_layout Standard
     304
     305     Real hasMixture  = False)};
     306\end_layout
     307
     308\end_inset
     309
     310
     311\end_layout
     312
     313\begin_layout Standard
     314Es el momento de crear el NameBlock node.series.handler, responsable de manejar
     315 las series asociada a un nodo observacional.
     316 Describimos a continuación los elementos necesarios que aparecen en este
     317 NameBlock, los comentarios realizados con ## indican variables que son
     318 obligatorias:
     319\newline
     320
     321\begin_inset listings
     322inline false
     323status open
     324
     325\begin_layout Standard
     326
     327/////////////////////////////////////////////////////////
     328\end_layout
     329
     330\begin_layout Standard
     331
     332NameBlock node.series.handler (Real node)
     333\end_layout
     334
     335\begin_layout Standard
     336
     337/////////////////////////////////////////////////////////
     338\end_layout
     339
     340\begin_layout Standard
     341
     342{ [[
     343\end_layout
     344
     345\begin_layout Standard
     346
     347    // Se forma la etiqueta del nodo.
     348\end_layout
     349
     350\begin_layout Standard
     351
     352    Text _node = FormatReal(node,"%1.0f");
     353\end_layout
     354
     355\begin_layout Standard
     356
     357    //## Nombre del nodo
     358\end_layout
     359
     360\begin_layout Standard
     361
     362    Text _.description = "Nodo observacional referido al output "+_node;
     363\end_layout
     364
     365\begin_layout Standard
     366
     367    //# Contiene todas las series output e input con nombres únicos dentro
     368\end_layout
     369
     370\begin_layout Standard
     371
     372    //de cada nodo
     373\end_layout
     374
     375\begin_layout Standard
     376
     377     Set _.series = { SetOfSerie (
     378\end_layout
     379
     380\begin_layout Standard
     381
     382        Output = .....
     383\end_layout
     384
     385\begin_layout Standard
     386
     387        Input1 = .....
     388\end_layout
     389
     390\begin_layout Standard
     391
     392        Input2 = .....
     393\end_layout
     394
     395\begin_layout Standard
     396
     397        ....
     398\end_layout
     399
     400\begin_layout Standard
     401
     402               )
     403\end_layout
     404
     405\begin_layout Standard
     406
     407                    };
     408\end_layout
     409
     410\begin_layout Standard
     411
     412    //# Se indexa para acelerar búsquedas
     413\end_layout
     414
     415\begin_layout Standard
     416
     417      Real _check_unique = SetIndexByName(_.series);
     418\end_layout
     419
     420\begin_layout Standard
     421
     422    //## Devuelve serie del nodo dado un identificaador único
     423\end_layout
     424
     425\begin_layout Standard
     426
     427      GetSerie (Text id_serie)
     428\end_layout
     429
     430\begin_layout Standard
     431
     432      {
     433\end_layout
     434
     435\begin_layout Standard
     436
     437       _.series[id_serie]
     438\end_layout
     439
     440\begin_layout Standard
     441
     442      }
     443\end_layout
     444
     445\begin_layout Standard
     446
     447    //##Información adicional del modelo sobre el output
     448\end_layout
     449
     450\begin_layout Standard
     451
     452     NameBlock _.output =   
     453\end_layout
     454
     455\begin_layout Standard
     456
     457      {[[
     458\end_layout
     459
     460\begin_layout Standard
     461
     462      //##Nombre con el que reconoce la serie en la base de datos
     463\end_layout
     464
     465\begin_layout Standard
     466
     467      Text _.name = "Output";
     468\end_layout
     469
     470\begin_layout Standard
     471
     472      //##Serie output
     473\end_layout
     474
     475\begin_layout Standard
     476
     477      Serie _.serie = _.series::Output;
     478\end_layout
     479
     480\begin_layout Standard
     481
     482      //##Número de sigmas para la distribución a priori de los omitidos
     483\end_layout
     484
     485\begin_layout Standard
     486
     487      Real _.mis_pri_sig_fac = 5;
     488\end_layout
     489
     490\begin_layout Standard
     491
     492      //##Valor mínimo a priori para los omitidos
     493\end_layout
     494
     495\begin_layout Standard
     496
     497      Real _.mis_pri_min     = 0;
     498\end_layout
     499
     500\begin_layout Standard
     501
     502      //##Valor máximo a priori para los omitidos
     503\end_layout
     504
     505\begin_layout Standard
     506
     507      Real _.mis_pri_max     = 2;
     508\end_layout
     509
     510\begin_layout Standard
     511
     512      //##Fecha inicial de estimación del nodo
     513\end_layout
     514
     515\begin_layout Standard
     516
     517      Date _.firstDate =  y2001m01;
     518\end_layout
     519
     520\begin_layout Standard
     521
     522      //##Fecha final de estimación del nodo
     523\end_layout
     524
     525\begin_layout Standard
     526
     527      Date _.lastDate  =  y2013m01;
     528\end_layout
     529
     530\begin_layout Standard
     531
     532      //Desviación típica de los residuos.
     533 Si es ? se estimará
     534\end_layout
     535
     536\begin_layout Standard
     537
     538      Real _.sigma = ?;
     539\end_layout
     540
     541\begin_layout Standard
     542
     543      //##Parte ARIMA asociada
     544\end_layout
     545
     546\begin_layout Standard
     547
     548      Set _.arima = SetOfSet (
     549\end_layout
     550
     551\begin_layout Standard
     552
     553         ARIMAStruct (1,1,1,1)
     554\end_layout
     555
     556\begin_layout Standard
     557
     558      )
     559\end_layout
     560
     561\begin_layout Standard
     562
     563      ]]};
     564\end_layout
     565
     566\begin_layout Standard
     567
     568      //##Información adicional del modelo sobre los inputs
     569\end_layout
     570
     571\begin_layout Standard
     572
     573      //Cada elemento es un NameBlock cuyo nombre será el identificador
     574 en
     575\end_layout
     576
     577\begin_layout Standard
     578
     579      //la base de datos de BsrHlm y es obligatorio que se llame igual que
     580\end_layout
     581
     582\begin_layout Standard
     583
     584      //la corespondiente serie input
     585\end_layout
     586
     587\begin_layout Standard
     588
     589      Set _.input = {
     590\end_layout
     591
     592\begin_layout Standard
     593
     594      SetOfNameBlock(
     595\end_layout
     596
     597\begin_layout Standard
     598
     599      NameBlock Input1= [[
     600\end_layout
     601
     602\begin_layout Standard
     603
     604      //##Serie input
     605\end_layout
     606
     607\begin_layout Standard
     608
     609      Serie _.serie = _.series::Input1;
     610\end_layout
     611
     612\begin_layout Standard
     613
     614      //##Si es falso no se usará este input
     615\end_layout
     616
     617\begin_layout Standard
     618
     619      Real _.enabled = 1;
     620\end_layout
     621
     622\begin_layout Standard
     623
     624      //##Número de sigmas para la distribución a priori de los omitidos
     625\end_layout
     626
     627\begin_layout Standard
     628
     629      Real _.mis_pri_sig_fac =  5;
     630\end_layout
     631
     632\begin_layout Standard
     633
     634      //##Valor mínimo a priori para los omitidos
     635\end_layout
     636
     637\begin_layout Standard
     638
     639      Real _.mis_pri_min     =  0;
     640\end_layout
     641
     642\begin_layout Standard
     643
     644      //##Valor máximo a priori para los omitidos
     645\end_layout
     646
     647\begin_layout Standard
     648
     649      Real _.mis_pri_max     =  2;
     650\end_layout
     651
     652\begin_layout Standard
     653
     654      //##Valor inicial del parámetro
     655\end_layout
     656
     657\begin_layout Standard
     658
     659      Real _.initValue       = 0.1;
     660\end_layout
     661
     662\begin_layout Standard
     663
     664      //##Valor mínimo a priori del parámetro
     665\end_layout
     666
     667\begin_layout Standard
     668
     669      Real _.minimum         = -1;
     670\end_layout
     671
     672\begin_layout Standard
     673
     674      //##Valor máximo a priori del parámetro
     675\end_layout
     676
     677\begin_layout Standard
     678
     679      Real _.maximum         =  1
     680\end_layout
     681
     682\begin_layout Standard
     683
     684      ]],
     685\end_layout
     686
     687\begin_layout Standard
     688
     689      NameBlock Input2 = [[
     690\end_layout
     691
     692\begin_layout Standard
     693
     694       .....
     695\end_layout
     696
     697\begin_layout Standard
     698
     699       .....
     700\end_layout
     701
     702\begin_layout Standard
     703
     704      ]],
     705\end_layout
     706
     707\begin_layout Standard
     708
     709      .....
     710\end_layout
     711
     712\begin_layout Standard
     713
     714    // Se indexa para acelerar busquedas
     715\end_layout
     716
     717\begin_layout Standard
     718
     719    Real _checkUniqueInput = SetIndexByName(_.input)
     720\end_layout
     721
     722\begin_layout Standard
     723
     724 ]]
     725\end_layout
     726
     727\begin_layout Standard
     728
     729};
     730\end_layout
     731
     732\end_inset
     733
     734
     735\end_layout
     736
     737\begin_layout Standard
     738Ahora se llama al manejador de series del modelo, notar que el bucle For
     739 debe correr a todos los nodos observacionales que se quieran calcular:
     740\newline
     741
     742\begin_inset listings
     743inline false
     744status open
     745
     746\begin_layout Standard
     747
     748///////////////////////////////////////////////////////
     749\end_layout
     750
     751\begin_layout Standard
     752
     753NameBlock series.handler =
     754\end_layout
     755
     756\begin_layout Standard
     757
     758  BysMcmc::Bsr::DynHlm::DBApi::CreateSeriesHandler(
     759\end_layout
     760
     761\begin_layout Standard
     762
     763  For (1,num_nodos, NameBlock (Real node)
     764\end_layout
     765
     766\begin_layout Standard
     767
     768  {
     769\end_layout
     770
     771\begin_layout Standard
     772
     773   WriteLn("[series.handler] creando de series del nodo "+ IntText(node));
     774\end_layout
     775
     776\begin_layout Standard
     777
     778   NameBlock aux = node.series.handler(node);   
     779\end_layout
     780
     781\begin_layout Standard
     782
     783   Eval(aux::_.id_node+"=aux")
     784\end_layout
     785
     786\begin_layout Standard
     787
     788}));
     789\end_layout
     790
     791\end_inset
     792
     793 Ahora se crea en la base de datos los nodos observacionales :
     794\newline
     795
     796\begin_inset listings
     797inline false
     798status open
     799
     800\begin_layout Standard
     801
     802Real BysMcmc::Bsr::DynHlm::DBApi::ModSes.Obs.CreateAll(
     803\end_layout
     804
     805\begin_layout Standard
     806
     807     DBConnection::BsrHlm::_.defaultDB, id_model, id_session,
     808\end_layout
     809
     810\begin_layout Standard
     811
     812     series.handler::_.obs.node);
     813\end_layout
     814
     815\end_inset
     816
     817
     818\end_layout
     819
     820\begin_layout Standard
     821Ahora viene la parte del código dónde se usarán las funciones necesarias
     822 para implementar en el modelo los nodos latentes, nodos a priori etc...
     823 Incluimos algunos ejemplos del uso de estas funciones
     824\newline
     825
     826\newline
     827
     828\series bold
     829Nodos latentes homogéneos.
     830
     831\series default
     832 
     833\end_layout
     834
     835\begin_layout Standard
     836\begin_inset listings
     837inline false
     838status open
     839
     840\begin_layout Standard
     841
     842Real {
     843\end_layout
     844
     845\begin_layout Standard
     846
     847 BysMcmc::Bsr::DynHlm::DBApi::ModSes.Lat.Homog_1.Create
     848\end_layout
     849
     850\begin_layout Standard
     851
     852 (DBConnection::BsrHlm::_.defaultDB,
     853\end_layout
     854
     855\begin_layout Standard
     856
     857  id_model,
     858\end_layout
     859
     860\begin_layout Standard
     861
     862  id_session,
     863\end_layout
     864
     865\begin_layout Standard
     866
     867  // identificación del nodo latente
     868\end_layout
     869
     870\begin_layout Standard
     871
     872  id_node = "Lat."+child_input,
     873\end_layout
     874
     875\begin_layout Standard
     876
     877  // descripción del node latente
     878\end_layout
     879
     880\begin_layout Standard
     881
     882  description = "Fuerza la homogeneidad de la variable ...",
     883\end_layout
     884
     885\begin_layout Standard
     886
     887  // Nivel de latencia en la jerarquía
     888\end_layout
     889
     890\begin_layout Standard
     891
     892  Real level = 1,
     893\end_layout
     894
     895\begin_layout Standard
     896
     897  //Orden de aparición dentro del nivel
     898\end_layout
     899
     900\begin_layout Standard
     901
     902  Copy(level.1_number := level.1_number+1),
     903\end_layout
     904
     905\begin_layout Standard
     906
     907  //Nombre del hiperparámetro
     908\end_layout
     909
     910\begin_layout Standard
     911
     912  Text id_parameter = "hiper",
     913\end_layout
     914
     915\begin_layout Standard
     916
     917  //Valor inicial del hiperparámetro
     918\end_layout
     919
     920\begin_layout Standard
     921
     922  Real initValue = -0.1,
     923\end_layout
     924
     925\begin_layout Standard
     926
     927  //Desviación típica de los residuos.
     928 Si es ? se estimará
     929\end_layout
     930
     931\begin_layout Standard
     932
     933  Real sigma = 0.05,
     934\end_layout
     935
     936\begin_layout Standard
     937
     938  //Valor mínimo del hiperparámetro
     939\end_layout
     940
     941\begin_layout Standard
     942
     943  Real minimum = -1,
     944\end_layout
     945
     946\begin_layout Standard
     947
     948  //Valor máximo del hiperparámetro
     949\end_layout
     950
     951\begin_layout Standard
     952
     953  Real maximum = 10,
     954\end_layout
     955
     956\begin_layout Standard
     957
     958  //Selección de los parámetros y nodos hijos con el input habilitado
     959\end_layout
     960
     961\begin_layout Standard
     962
     963  //Es un Set formado por tantos NameBlocks como parémetroas hijos
     964\end_layout
     965
     966\begin_layout Standard
     967
     968  //(betas) formen el nodo latente homogéneo
     969\end_layout
     970
     971\begin_layout Standard
     972
     973  [[
     974\end_layout
     975
     976\begin_layout Standard
     977
     978    NameBlock beta1 = [[
     979\end_layout
     980
     981\begin_layout Standard
     982
     983       Text _.id_parameter = "Nombre del nodo donde está beta1"
     984\end_layout
     985
     986\begin_layout Standard
     987
     988       Text _.id_node      = "Nodo donde está situado el beta1"
     989\end_layout
     990
     991\begin_layout Standard
     992
     993       Real _.sigma_factor = 1
     994\end_layout
     995
     996\begin_layout Standard
     997
     998                      ]],
     999\end_layout
     1000
     1001\begin_layout Standard
     1002
     1003    NameBlock beta2 = [[ ...
     1004\end_layout
     1005
     1006\begin_layout Standard
     1007
     1008                         ...]],
     1009\end_layout
     1010
     1011\begin_layout Standard
     1012
     1013    ...
     1014\end_layout
     1015
     1016\begin_layout Standard
     1017
     1018    ...
     1019\end_layout
     1020
     1021\begin_layout Standard
     1022
     1023  ]]
     1024\end_layout
     1025
     1026\begin_layout Standard
     1027
     1028 )};
     1029\end_layout
     1030
     1031\end_inset
     1032
     1033
     1034\series bold
     1035Nodos latentes generalizados.
     1036\end_layout
     1037
     1038\begin_layout Standard
     1039\begin_inset listings
     1040inline false
     1041status open
     1042
     1043\begin_layout Standard
     1044
     1045Real {
     1046\end_layout
     1047
     1048\begin_layout Standard
     1049
     1050  // Set de hiperparámetros.
     1051 Es un set con tantos NameBlocks como
     1052\end_layout
     1053
     1054\begin_layout Standard
     1055
     1056  // hiperparámetros tiene el nodo lantente.
     1057\end_layout
     1058
     1059\begin_layout Standard
     1060
     1061  Set father_parameters = [[
     1062\end_layout
     1063
     1064\begin_layout Standard
     1065
     1066      NameBlock Lam1 =  ModSes.Lat.Father.Param.Def (
     1067\end_layout
     1068
     1069\begin_layout Standard
     1070
     1071                        Text id_parameter = "hiper1",
     1072\end_layout
     1073
     1074\begin_layout Standard
     1075
     1076                        Real init_value   = 0.1,
     1077\end_layout
     1078
     1079\begin_layout Standard
     1080
     1081                        Real min          = 0,
     1082\end_layout
     1083
     1084\begin_layout Standard
     1085
     1086                        Real max          = 1
     1087\end_layout
     1088
     1089\begin_layout Standard
     1090
     1091                        ),
     1092\end_layout
     1093
     1094\begin_layout Standard
     1095
     1096      NameBlock Lam2 = ModSes.Lat.Father.Param.Def (
     1097\end_layout
     1098
     1099\begin_layout Standard
     1100
     1101                        ......
     1102\end_layout
     1103
     1104\begin_layout Standard
     1105
     1106                        ......
     1107\end_layout
     1108
     1109\begin_layout Standard
     1110
     1111                        ),
     1112\end_layout
     1113
     1114\begin_layout Standard
     1115
     1116      ........
     1117\end_layout
     1118
     1119\begin_layout Standard
     1120
     1121      ........
     1122\end_layout
     1123
     1124\begin_layout Standard
     1125
     1126                          ]]; 
     1127\end_layout
     1128
     1129\begin_layout Standard
     1130
     1131   // Set de parámetros hijo.
     1132 Es un set con tantos NameBlocks como
     1133\end_layout
     1134
     1135\begin_layout Standard
     1136
     1137   // paramétros hijo tenga el nodo latente regresivo.
     1138\end_layout
     1139
     1140\begin_layout Standard
     1141
     1142   Set node_childs = [[
     1143\end_layout
     1144
     1145\begin_layout Standard
     1146
     1147      NameBlock beta1 = ModSes.Lat.Child.Param.Def (
     1148\end_layout
     1149
     1150\begin_layout Standard
     1151
     1152                        Text id_node = "node1",
     1153\end_layout
     1154
     1155\begin_layout Standard
     1156
     1157                        Text id_parameter = "beta1",
     1158\end_layout
     1159
     1160\begin_layout Standard
     1161
     1162                        Real sigma_factor = 1
     1163\end_layout
     1164
     1165\begin_layout Standard
     1166
     1167                        ),
     1168\end_layout
     1169
     1170\begin_layout Standard
     1171
     1172      NameBlock beta2 = ModSes.Lat.Child.Param.Def (
     1173\end_layout
     1174
     1175\begin_layout Standard
     1176
     1177                        .....
     1178\end_layout
     1179
     1180\begin_layout Standard
     1181
     1182                        .....
     1183\end_layout
     1184
     1185\begin_layout Standard
     1186
     1187                        ),
     1188\end_layout
     1189
     1190\begin_layout Standard
     1191
     1192      ......
     1193\end_layout
     1194
     1195\begin_layout Standard
     1196
     1197      ......
     1198\end_layout
     1199
     1200\begin_layout Standard
     1201
     1202                     ]]; 
     1203\end_layout
     1204
     1205\begin_layout Standard
     1206
     1207Real BysMcmc::Bsr::DynHlm::DBApi::ModSes.Lat.Create (
     1208\end_layout
     1209
     1210\begin_layout Standard
     1211
     1212     DBConnection::BsrHlm::_.defaultDB,
     1213\end_layout
     1214
     1215\begin_layout Standard
     1216
     1217     id_model,
     1218\end_layout
     1219
     1220\begin_layout Standard
     1221
     1222     id_session,
     1223\end_layout
     1224
     1225\begin_layout Standard
     1226
     1227     // Nombre del nodo latente
     1228\end_layout
     1229
     1230\begin_layout Standard
     1231
     1232     id_node = "Lat.Reg",
     1233\end_layout
     1234
     1235\begin_layout Standard
     1236
     1237     // Descripcion del nodo latente
     1238\end_layout
     1239
     1240\begin_layout Standard
     1241
     1242     description = "Establece un nodo regresivo latente...",
     1243\end_layout
     1244
     1245\begin_layout Standard
     1246
     1247     //Nivel de latencia en la jerarquía
     1248\end_layout
     1249
     1250\begin_layout Standard
     1251
     1252     Real level = 1,
     1253\end_layout
     1254
     1255\begin_layout Standard
     1256
     1257     // Orden de aparición dentro del nivel
     1258\end_layout
     1259
     1260\begin_layout Standard
     1261
     1262     Copy(level.1_number := level.1_number+1),
     1263\end_layout
     1264
     1265\begin_layout Standard
     1266
     1267     father_parameters,
     1268\end_layout
     1269
     1270\begin_layout Standard
     1271
     1272     node_childs,
     1273\end_layout
     1274
     1275\begin_layout Standard
     1276
     1277     // Valor de la sigma del bloque latente conjunto
     1278\end_layout
     1279
     1280\begin_layout Standard
     1281
     1282     Real sigma = 0.1,
     1283\end_layout
     1284
     1285\begin_layout Standard
     1286
     1287     // Matrix X del nodo latente
     1288\end_layout
     1289
     1290\begin_layout Standard
     1291
     1292     Matrix X
     1293\end_layout
     1294
     1295\begin_layout Standard
     1296
     1297     )
     1298\end_layout
     1299
     1300\begin_layout Standard
     1301
     1302};
     1303\end_layout
     1304
     1305\end_inset
     1306
     1307
     1308\series bold
     1309Nodos latentes con combinacion de output.
     1310\end_layout
     1311
     1312\begin_layout Standard
     1313\begin_inset listings
     1314inline false
     1315status open
     1316
     1317\begin_layout Standard
     1318
     1319Real {
     1320\end_layout
     1321
     1322\begin_layout Standard
     1323
     1324   Set father_parameters = [[
     1325\end_layout
     1326
     1327\begin_layout Standard
     1328
     1329      NameBlock Lam1 =  ModSes.Lat.Father.Param.Def (
     1330\end_layout
     1331
     1332\begin_layout Standard
     1333
     1334                        Text id_parameter = "hiper1",
     1335\end_layout
     1336
     1337\begin_layout Standard
     1338
     1339                        Real init_value   = 0.1,
     1340\end_layout
     1341
     1342\begin_layout Standard
     1343
     1344                        Real min          = 0,
     1345\end_layout
     1346
     1347\begin_layout Standard
     1348
     1349                        Real max          = 1
     1350\end_layout
     1351
     1352\begin_layout Standard
     1353
     1354                        ),
     1355\end_layout
     1356
     1357\begin_layout Standard
     1358
     1359      NameBlock Lam2 = ModSes.Lat.Father.Param.Def (
     1360\end_layout
     1361
     1362\begin_layout Standard
     1363
     1364                        ......
     1365\end_layout
     1366
     1367\begin_layout Standard
     1368
     1369                        ......
     1370\end_layout
     1371
     1372\begin_layout Standard
     1373
     1374                        ),
     1375\end_layout
     1376
     1377\begin_layout Standard
     1378
     1379      ........
     1380\end_layout
     1381
     1382\begin_layout Standard
     1383
     1384      ........
     1385\end_layout
     1386
     1387\begin_layout Standard
     1388
     1389                          ]]; 
     1390\end_layout
     1391
     1392\begin_layout Standard
     1393
     1394   // Set de parámetros hijo.
     1395 Es un set con tantos NameBlocks como
     1396\end_layout
     1397
     1398\begin_layout Standard
     1399
     1400   // paramétros hijo tenga el nodo latente regresivo.
     1401\end_layout
     1402
     1403\begin_layout Standard
     1404
     1405   Set node_childs = [[
     1406\end_layout
     1407
     1408\begin_layout Standard
     1409
     1410      NameBlock beta1 = ModSes.Lat.Child.Param.Def (
     1411\end_layout
     1412
     1413\begin_layout Standard
     1414
     1415                        Text id_node = "node1",
     1416\end_layout
     1417
     1418\begin_layout Standard
     1419
     1420                        Text id_parameter = "beta1",
     1421\end_layout
     1422
     1423\begin_layout Standard
     1424
     1425                        Real sigma_factor = 1
     1426\end_layout
     1427
     1428\begin_layout Standard
     1429
     1430                        ),
     1431\end_layout
     1432
     1433\begin_layout Standard
     1434
     1435      NameBlock beta2 = ModSes.Lat.Child.Param.Def (
     1436\end_layout
     1437
     1438\begin_layout Standard
     1439
     1440                        .....
     1441\end_layout
     1442
     1443\begin_layout Standard
     1444
     1445                        .....
     1446\end_layout
     1447
     1448\begin_layout Standard
     1449
     1450                        ),
     1451\end_layout
     1452
     1453\begin_layout Standard
     1454
     1455      ......
     1456\end_layout
     1457
     1458\begin_layout Standard
     1459
     1460      ......
     1461\end_layout
     1462
     1463\begin_layout Standard
     1464
     1465                     ]];   
     1466\end_layout
     1467
     1468\begin_layout Standard
     1469
     1470\end_layout
     1471
     1472\begin_layout Standard
     1473
     1474      Real ModSes.Lat.OutComb.Create (
     1475\end_layout
     1476
     1477\begin_layout Standard
     1478
     1479      DBConnection::BsrHlm::_.defaultDB,
     1480\end_layout
     1481
     1482\begin_layout Standard
     1483
     1484      id_model,
     1485\end_layout
     1486
     1487\begin_layout Standard
     1488
     1489      id_session,
     1490\end_layout
     1491
     1492\begin_layout Standard
     1493
     1494      // Nombre del nodo latente
     1495\end_layout
     1496
     1497\begin_layout Standard
     1498
     1499      id_node = "Lat.Reg",
     1500\end_layout
     1501
     1502\begin_layout Standard
     1503
     1504      // Descripción del nodo latente
     1505\end_layout
     1506
     1507\begin_layout Standard
     1508
     1509      description = "Establece un nodo regresivo latente...",
     1510\end_layout
     1511
     1512\begin_layout Standard
     1513
     1514      // Nivel de latencia en la jerarquía
     1515\end_layout
     1516
     1517\begin_layout Standard
     1518
     1519      Real level = 1,
     1520\end_layout
     1521
     1522\begin_layout Standard
     1523
     1524      // Orden de aparición dentro del nivel
     1525\end_layout
     1526
     1527\begin_layout Standard
     1528
     1529      Copy(level.1_number := level.1_number+1),
     1530\end_layout
     1531
     1532\begin_layout Standard
     1533
     1534      father_parameters,
     1535\end_layout
     1536
     1537\begin_layout Standard
     1538
     1539      node_childs,
     1540\end_layout
     1541
     1542\begin_layout Standard
     1543
     1544      // Valor de Sigma para todo el nodo latente
     1545\end_layout
     1546
     1547\begin_layout Standard
     1548
     1549      Real sigma = 0.1,
     1550\end_layout
     1551
     1552\begin_layout Standard
     1553
     1554      // Matriz X del nodo latente
     1555\end_layout
     1556
     1557\begin_layout Standard
     1558
     1559      Matrix X,
     1560\end_layout
     1561
     1562\begin_layout Standard
     1563
     1564      // Matriz Y del nodo latente
     1565\end_layout
     1566
     1567\begin_layout Standard
     1568
     1569      Matrix Y,
     1570\end_layout
     1571
     1572\begin_layout Standard
     1573
     1574      // Un Set de Reales.
     1575 Cada valor real especifica el i-ésimo valor
     1576\end_layout
     1577
     1578\begin_layout Standard
     1579
     1580      // de sigma de la i-ésima ecuación del nodo latente   
     1581\end_layout
     1582
     1583\begin_layout Standard
     1584
     1585      Set SigmaLat = [[
     1586\end_layout
     1587
     1588\begin_layout Standard
     1589
     1590      Real sigma1 = 0.1
     1591\end_layout
     1592
     1593\begin_layout Standard
     1594
     1595      Real sigma2 = 0.2
     1596\end_layout
     1597
     1598\begin_layout Standard
     1599
     1600      ....
     1601\end_layout
     1602
     1603\begin_layout Standard
     1604
     1605      ....
     1606\end_layout
     1607
     1608\begin_layout Standard
     1609
     1610      ]])
     1611\end_layout
     1612
     1613\begin_layout Standard
     1614
     1615};     
     1616\end_layout
     1617
     1618\end_inset
     1619
     1620
     1621\series bold
     1622Nodo a priori
     1623\series default
     1624.
     1625\newline
     1626
     1627\begin_inset listings
     1628inline false
     1629status open
     1630
     1631\begin_layout Standard
     1632
     1633Real{
     1634\end_layout
     1635
     1636\begin_layout Standard
     1637
     1638  BysMcmc::Bsr::DynHlm::DPApi::ModSes.Pri.Homog_1.Create(
     1639\end_layout
     1640
     1641\begin_layout Standard
     1642
     1643    DBConnection::BsrHlm::_.defaultDB,
     1644\end_layout
     1645
     1646\begin_layout Standard
     1647
     1648    id_model,
     1649\end_layout
     1650
     1651\begin_layout Standard
     1652
     1653    id_session,
     1654\end_layout
     1655
     1656\begin_layout Standard
     1657
     1658    // identificación del nodo
     1659\end_layout
     1660
     1661\begin_layout Standard
     1662
     1663    id_node = "Pri",
     1664\end_layout
     1665
     1666\begin_layout Standard
     1667
     1668    // descripción del nodo
     1669\end_layout
     1670
     1671\begin_layout Standard
     1672
     1673    description = "Prior para..."
     1674\end_layout
     1675
     1676\begin_layout Standard
     1677
     1678    // Conjunto de NameBlock.
     1679 Cada NameBlock especifica que
     1680\end_layout
     1681
     1682\begin_layout Standard
     1683
     1684    // parámetro o hiperparámetro es el que tiene el a priori.
     1685\end_layout
     1686
     1687\begin_layout Standard
     1688
     1689    [[
     1690\end_layout
     1691
     1692\begin_layout Standard
     1693
     1694       NameBlock hiper1 = [[
     1695\end_layout
     1696
     1697\begin_layout Standard
     1698
     1699                            // Nombre del nodo donde está hiper1
     1700\end_layout
     1701
     1702\begin_layout Standard
     1703
     1704                            Text _.id_node = "node_hiper1",
     1705\end_layout
     1706
     1707\begin_layout Standard
     1708
     1709                            // Nombre del parámetro que tiene el prior
     1710\end_layout
     1711
     1712\begin_layout Standard
     1713
     1714                            Text _.id_parameter = "Lam1",
     1715\end_layout
     1716
     1717\begin_layout Standard
     1718
     1719                            // Valor medio de la Normal prior
     1720\end_layout
     1721
     1722\begin_layout Standard
     1723
     1724                            Real _.average = 0.1,
     1725\end_layout
     1726
     1727\begin_layout Standard
     1728
     1729                            // Valor de sigma de la Normla prior
     1730\end_layout
     1731
     1732\begin_layout Standard
     1733
     1734                            Real _.sigma = 0.01
     1735\end_layout
     1736
     1737\begin_layout Standard
     1738
     1739                          ]]
     1740\end_layout
     1741
     1742\begin_layout Standard
     1743
     1744       NameBlock hiper2 = [[
     1745\end_layout
     1746
     1747\begin_layout Standard
     1748
     1749                             ....
     1750\end_layout
     1751
     1752\begin_layout Standard
     1753
     1754                             ....
     1755 
     1756\end_layout
     1757
     1758\begin_layout Standard
     1759
     1760                          ]]
     1761\end_layout
     1762
     1763\begin_layout Standard
     1764
     1765       ....
     1766\end_layout
     1767
     1768\begin_layout Standard
     1769
     1770\end_layout
     1771
     1772\begin_layout Standard
     1773
     1774    ]]
     1775\end_layout
     1776
     1777\begin_layout Standard
     1778
     1779    )
     1780\end_layout
     1781
     1782\begin_layout Standard
     1783
     1784};
     1785\end_layout
     1786
     1787\end_inset
     1788
     1789
     1790\end_layout
     1791
     1792\begin_layout Standard
     1793
     1794\series bold
     1795Nodo a priori combinación del output
     1796\series default
     1797.
     1798\newline
     1799
     1800\begin_inset listings
     1801inline false
     1802status open
     1803
     1804\begin_layout Standard
     1805
     1806Real {
     1807\end_layout
     1808
     1809\begin_layout Standard
     1810
     1811  BysMcmc::Bsr::DynHlm::DPApi::ModSes.Pri.Out.Comb.Create(
     1812\end_layout
     1813
     1814\begin_layout Standard
     1815
     1816    DBConnection::BsrHlm::_.defaultDB,
     1817\end_layout
     1818
     1819\begin_layout Standard
     1820
     1821    id_model,
     1822\end_layout
     1823
     1824\begin_layout Standard
     1825
     1826    id_session,
     1827\end_layout
     1828
     1829\begin_layout Standard
     1830
     1831    // identificación del nodo
     1832\end_layout
     1833
     1834\begin_layout Standard
     1835
     1836    id_node = "Pri.OutComb",
     1837\end_layout
     1838
     1839\begin_layout Standard
     1840
     1841    // descripción del nodo
     1842\end_layout
     1843
     1844\begin_layout Standard
     1845
     1846    description = "Prior para...",
     1847\end_layout
     1848
     1849\begin_layout Standard
     1850
     1851    Copy(level.2_number := level.2_number+1),
     1852\end_layout
     1853
     1854\begin_layout Standard
     1855
     1856    // Set de sets, cada set contiene dos reales que especifican
     1857\end_layout
     1858
     1859\begin_layout Standard
     1860
     1861    // el valor de la media y sigma para cada ecuacion del nodo a priori
     1862\end_layout
     1863
     1864\begin_layout Standard
     1865
     1866    [[
     1867\end_layout
     1868
     1869\begin_layout Standard
     1870
     1871      [[ mu_1, sigma_1 ]],
     1872\end_layout
     1873
     1874\begin_layout Standard
     1875
     1876      [[ mu_2, sigma_2 ]],
     1877\end_layout
     1878
     1879\begin_layout Standard
     1880
     1881         ............
     1882\end_layout
     1883
     1884\begin_layout Standard
     1885
     1886    ]],
     1887\end_layout
     1888
     1889\begin_layout Standard
     1890
     1891    // Set de NameBlocks, tantos NameBlocks como parámetros entran
     1892\end_layout
     1893
     1894\begin_layout Standard
     1895
     1896    // en la combinación lineal del output
     1897\end_layout
     1898
     1899\begin_layout Standard
     1900
     1901    [[
     1902\end_layout
     1903
     1904\begin_layout Standard
     1905
     1906      NameBlock param1 = [[
     1907\end_layout
     1908
     1909\begin_layout Standard
     1910
     1911                          // Nombre de ese parámetro
     1912\end_layout
     1913
     1914\begin_layout Standard
     1915
     1916                          Text _.id_node = "param1",
     1917\end_layout
     1918
     1919\begin_layout Standard
     1920
     1921                          // Localización de ese parámetro
     1922\end_layout
     1923
     1924\begin_layout Standard
     1925
     1926                          Text _.id_parameter = "node.param1"
     1927\end_layout
     1928
     1929\begin_layout Standard
     1930
     1931                         ]],
     1932\end_layout
     1933
     1934\begin_layout Standard
     1935
     1936      NameBlock param2 = [[
     1937\end_layout
     1938
     1939\begin_layout Standard
     1940
     1941                          .....
     1942   
     1943\end_layout
     1944
     1945\begin_layout Standard
     1946
     1947                         ]]
     1948\end_layout
     1949
     1950\begin_layout Standard
     1951
     1952    ]],
     1953\end_layout
     1954
     1955\begin_layout Standard
     1956
     1957    // Matriz Y responsable de la combinación lineal del output
     1958\end_layout
     1959
     1960\begin_layout Standard
     1961
     1962    Matrix Y
     1963\end_layout
     1964
     1965\begin_layout Standard
     1966
     1967    )
     1968\end_layout
     1969
     1970\begin_layout Standard
     1971
     1972}
     1973\end_layout
     1974
     1975\end_inset
     1976
     1977
     1978\end_layout
     1979
     1980\begin_layout Standard
     1981
     1982\series bold
     1983Nodo restricción de orden.
     1984\series default
     1985
     1986\newline
     1987
     1988\begin_inset listings
     1989inline false
     1990status open
     1991
     1992\begin_layout Standard
     1993
     1994Real {
     1995\end_layout
     1996
     1997\begin_layout Standard
     1998
     1999  BysMcmc::Bsr::DynHlm::DBApi::ModSes.Mix.OrderRelation.Create(
     2000\end_layout
     2001
     2002\begin_layout Standard
     2003
     2004    DBConnection::BsrHlm::_.defaultDB,
     2005\end_layout
     2006
     2007\begin_layout Standard
     2008
     2009    id_model,
     2010\end_layout
     2011
     2012\begin_layout Standard
     2013
     2014    id_session,
     2015\end_layout
     2016
     2017\begin_layout Standard
     2018
     2019    id_node_param1, "param1",
     2020\end_layout
     2021
     2022\begin_layout Standard
     2023
     2024    /* <= */ // param1 <= param2
     2025\end_layout
     2026
     2027\begin_layout Standard
     2028
     2029    id_node_param2, "param2")
     2030\end_layout
     2031
     2032\begin_layout Standard
     2033
     2034     };
     2035\end_layout
     2036
     2037\end_inset
     2038
     2039
     2040\end_layout
     2041
     2042\begin_layout Standard
     2043Finalmente la llamada al estimador BSR se realiza por el siguiente código:
     2044\newline
     2045
     2046\begin_inset listings
     2047inline false
     2048status open
     2049
     2050\begin_layout Standard
     2051
     2052NameBlock bsr.config =
     2053\end_layout
     2054
     2055\begin_layout Standard
     2056
     2057[[
     2058\end_layout
     2059
     2060\begin_layout Standard
     2061
     2062  //MCMC dimensions
     2063\end_layout
     2064
     2065\begin_layout Standard
     2066
     2067  Real mcmc.burnin   =  100;
     2068\end_layout
     2069
     2070\begin_layout Standard
     2071
     2072  Real mcmc.sampleLength = 2000;
     2073\end_layout
     2074
     2075\begin_layout Standard
     2076
     2077  Real mcmc.cacheLength  =  100;
     2078\end_layout
     2079
     2080\begin_layout Standard
     2081
     2082  //Basic master configuration
     2083\end_layout
     2084
     2085\begin_layout Standard
     2086
     2087  Real basic.cholesky.epsilon = 1.E-10;
     2088\end_layout
     2089
     2090\begin_layout Standard
     2091
     2092  Real basic.cholesky.warningFreq = 100;
     2093\end_layout
     2094
     2095\begin_layout Standard
     2096
     2097  Real basic.truncMNormal.gibbsNumIter = 5;
     2098\end_layout
     2099
     2100\begin_layout Standard
     2101
     2102  //Report configuration
     2103\end_layout
     2104
     2105\begin_layout Standard
     2106
     2107  Real report.raftery.diag.q   = 0.025;
     2108\end_layout
     2109
     2110\begin_layout Standard
     2111
     2112  Real report.raftery.diag.r   = 0.007;
     2113\end_layout
     2114
     2115\begin_layout Standard
     2116
     2117  Real report.raftery.diag.s   = 0.950;
     2118\end_layout
     2119
     2120\begin_layout Standard
     2121
     2122  Real report.raftery.diag.eps = 0.001;
     2123\end_layout
     2124
     2125\begin_layout Standard
     2126
     2127  Real report.acf.lag          = 20,
     2128\end_layout
     2129
     2130\begin_layout Standard
     2131
     2132  Real report.histogram.parts  = 100;
     2133\end_layout
     2134
     2135\begin_layout Standard
     2136
     2137  Real report.kerDens.points   = 0;
     2138\end_layout
     2139
     2140\begin_layout Standard
     2141
     2142  Real report.kerDens.numIter  = 2;
     2143\end_layout
     2144
     2145\begin_layout Standard
     2146
     2147  Real report.kerDens.epsilon  = 0.001;
     2148\end_layout
     2149
     2150\begin_layout Standard
     2151
     2152  //Generic flags
     2153\end_layout
     2154
     2155\begin_layout Standard
     2156
     2157  Real do.resume          =  False;
     2158\end_layout
     2159
     2160\begin_layout Standard
     2161
     2162  Real do.report          =  True;
     2163\end_layout
     2164
     2165\begin_layout Standard
     2166
     2167  Real do.eval            =  True;
     2168\end_layout
     2169
     2170\begin_layout Standard
     2171
     2172  Real do.linear.effects  =  True
     2173\end_layout
     2174
     2175\begin_layout Standard
     2176
     2177]];
     2178\end_layout
     2179
     2180\begin_layout Standard
     2181
     2182///////////////////////////////////////////////////////////
     2183\end_layout
     2184
     2185\begin_layout Standard
     2186
     2187\end_layout
     2188
     2189\begin_layout Standard
     2190
     2191///////////////////////////////////////////////////////////
     2192\end_layout
     2193
     2194\begin_layout Standard
     2195
     2196// Estimación del modelo con el sistema Bsr::DynHlm
     2197\end_layout
     2198
     2199\begin_layout Standard
     2200
     2201///////////////////////////////////////////////////////////
     2202\end_layout
     2203
     2204\begin_layout Standard
     2205
     2206Set bsr.estim = {BysMcmc::Bsr::DynHlm::DBApi::Estim(
     2207\end_layout
     2208
     2209\begin_layout Standard
     2210
     2211  DBConnection::BsrHlm::_.defaultDB,
     2212\end_layout
     2213
     2214\begin_layout Standard
     2215
     2216  id_model,
     2217\end_layout
     2218
     2219\begin_layout Standard
     2220
     2221  id_session,
     2222\end_layout
     2223
     2224\begin_layout Standard
     2225
     2226  Path::_.data.out,
     2227\end_layout
     2228
     2229\begin_layout Standard
     2230
     2231  series.handler,
     2232\end_layout
     2233
     2234\begin_layout Standard
     2235
     2236  bsr.config
     2237\end_layout
     2238
     2239\begin_layout Standard
     2240
     2241)};
     2242\end_layout
     2243
     2244\begin_layout Standard
     2245
     2246\end_layout
     2247
     2248\begin_layout Standard
     2249
     2250// Desconectamos de la base de datos
     2251\end_layout
     2252
     2253\begin_layout Standard
     2254
     2255  Real DBConnection::BsrHlm::Close(0);
     2256\end_layout
     2257
     2258\end_inset
     2259
     2260
     2261\end_layout
     2262
    842263\end_body
    852264\end_document
Note: See TracChangeset for help on using the changeset viewer.