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

Opened 13 years ago

Closed 13 years ago

#754 closed defect (fixed)

Problemas de supuesta multicolinealidad

Reported by: libarra Owned by: Pedro Gea
Priority: blocker Milestone: Release 0.6
Component: StrategyBSR Keywords:
Cc:

Description

Buenos días, lanzando la estimación de un objeto Estimate_BSR (lo adjunto en el ticket) me encuentro con un problema de multicolinealidad.

Warning: [1] [CHOLMOD 1] at line c:\users\jsperez\suitesparse\cholmod\cholesky\t_cholmod_rowfac.c:431: not positive definite

ERROR: [1] Cannot apply CholeskiFactor to a non positive definite virtual matrix Cholmod.R.Sparse(519x2) 

Ahora bien lanzando la función de chequeo implementada en MMS y la forma antigua de diagnosis de multicolinealidad, no me reporta ninguna c.l.

Text Modelo = "PrecioHor.08.Log";

Set Set_F = ((MMS::Container::GetEstimations(?))[1])::GetModel(?)::GetSubmodel(Modelo)::GetExpTerms(?);

Set Set_Input = EvalSet(Set_F, NameBlock(MMS::@ExpTermOmega st)
{
 NameBlock st::GetInput(?)
});

Set ((MMS::Container::GetEstimations(?))[1])::GetModel(?)::GetSubmodel(Modelo)::CheckMulticollinearity(?);


Set Set_Series = EvalSet(Set_Input, Anything(NameBlock nb)
{
 Anything nb::GetData(?)
});


Matrix ToSVD = SerSetMat(Set_Series, y2010m05d01, y2011m10d01)*Tra(SerSetMat(Set_Series, y2010m05d01, y2011m10d01));
Set SVD(ToSVD);
Matrix GaussInverse(ToSVD);

Change History (6)

comment:1 Changed 13 years ago by Pedro Gea

Milestone: Release 0.6
Status: newaccepted
version: 0.6

comment:2 Changed 13 years ago by Pedro Gea

Se trata de un input de tipo pulso (Rev.y2011m10d01) colocado en la última fecha de estimación y con un retardo.

comment:3 Changed 13 years ago by mafernandez

El método CheckMulticollinearity solamente busca colinealidad entre los parámetros no dependientes (método IsIndependent = True).

En este modelo se tienen todos los parámetros fijos (IsIndependent = False) excepto los que pertenecen al término explicativo Rev.y2011m10d01

En este término explicativo se tienen dos parámetros, uno con degree = 0 y otro con degree = 1. El que tiene degree = 1 participa en un combinación lineal (IsIndependent = False) dejando uno solo para para chequear su combinación lineal.

Por eso resulta que no detecta combinaciones lineales, cuando en realidad el parámetro con degree = 1 en nulo en el intervalo a considerar.

De modo que habría que o bien cambiar lo que se considera como parámetro dependiente en el método IsIndependent o bien discriminar de que tipo de dependencia se trata para así poder considerarla que entre o no en CheckMulticollinearity.

comment:4 Changed 13 years ago by Pedro Gea

(In [2676]) Se corrige el método IsIndependent
Refs #754

comment:5 Changed 13 years ago by mafernandez

Resolution: fixed
Status: acceptedclosed

En el commit [2676] se modifica el método IsIndependent (def_m_object_prior.tol) para que a partir de ahora el método CheckMulticollinearity sólo busque correlación en los inputs asociados a los parámetros que no cumplan las siguientes condiciones:

  • esté fijado
  • tenga prior
  • participe en jerarquía
  • participe en combinación con prior
  • participe en equivalencia con prior

comment:6 Changed 12 years ago by (none)

Los archivos adjuntos con datos privados se han ubicado en la unidad local B.

Note: See TracTickets for help on using tickets.