close Warning: Can't synchronize with repository "(default)" (/var/svn/tolp does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Closed 14 years ago

#1231 closed doubt (fixed)

BSR: How to indicate a covariance matrix in the import of a segment

Reported by: Pedro Gea Owned by: Víctor de Buen Remiro
Priority: normal Milestone: Mantainance
Component: BysMCMC Version: head
Severity: normal Keywords: bsr, covariance matrix, import
Cc: irobles@…

Description

Se busca cómo establecer la matriz de covarianzas de un segmento dado
del modelo en BSR.

Se encuentran referencias en el código a algunos métodos opcionales como: Get.Cov, pero no queda claro cuál es la manera de utilizarlos.

Attachments (1)

Regresion.COV.zip (45.2 KB) - added by Pedro Gea 14 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 Changed 14 years ago by Víctor de Buen Remiro

Status: newaccepted

Hay distintas formas de expresar las covarianzas según se tenga dicha matriz, su inversa, su descomposición de Cholesky o la de su inversa, respectivamente:

  Text Get.Cov(Real void);
  Text Get.CovInv(Real void);
  Text Get.CovChol(Real void);
  Text Get.CovInvChol(Real void);

Por favor, cuando haya un caso creado, tanto si funciona como si no, pasarme los .bsr ya que es algo que no ha sido probado todavía y no hay ningún test al respecto.

En todos los casos lo que se espera es una expresión TOL arbitraria que devuelva una VMatrix. Una posibilidad es hacer lo mismo que con el input y el output, es decir, almacenar la matriz en un OIS y pasar la expresión que la carga

Text Get.Cov(Real void)
{
  "VMatrix { Include(\"./Cov.oza\")[1]"
}

En el caso de covarianzas diagonales, quizás sea más sencillo pasar una expresión del tipo

Text Get.Cov(Real void)
{
  "VMatrix Eye(5,5,0,Mat2VMat(Row(1,4,4,9,9)));"
}

Esta última expresión indicaría que las varianzas de las 5 ecuaciones del segmento en cuestión serían correlativamente: 1, 4, 4, 9 y 9; o lo que es lo mismo, que los pesos relativos, o credibilidades relativas, de dichas ecuaciones serían: 1, 1/2, 1/2, 1/3 y 1/3 respectivamente. Lo mismo podría expresar con esta otra definición

Text Get.CovInvChol(Real void)
{
  "VMatrix Eye(5,5,0,Mat2VMat(Row(1,1/2,1/2,1/3,1/3)));"
}

comment:2 Changed 14 years ago by Víctor de Buen Remiro

Cc: irobles@… added

comment:3 Changed 14 years ago by Pedro Gea

Estupendo, lo he probado y funciona bien.

Adjunto el ejemplo que utilicé, se trata de un modelo de 60 observaciones con un input: y = beta * x + error donde las 50 primeras observaciones correponden a y ~ x y las 10 últimas a y ~ 2*x.

Para restar importancia a éstas últimas se utilizaron unas sigmas relativas de 1.0 para las 50 primeras y de 2.0 para las otras 10.

Se espera que el parámetro (beta) esté en torno a 1.0 y se puede comprobar la influencia de las 10 últimas observaciones jugando con el valor de las sigmas relativas.

Se usó la variante vía el archivo "Cov.oza".

Changed 14 years ago by Pedro Gea

Attachment: Regresion.COV.zip added

comment:4 Changed 14 years ago by Víctor de Buen Remiro

Aunque supongo que queda claro me gustaría subrayar que hay que ser muy cuidadoso con la forma de crear la matriz para que sea lo más sparse posible. En casos pequeños puede que no se note pero si tienes un segmento de 4000 ecuaciones e intentas pasar una matriz densa el resultado puede ser catastrófico.

comment:5 Changed 14 years ago by Víctor de Buen Remiro

Resolution: fixed
Status: acceptedclosed
Note: See TracTickets for help on using tickets.