Opened 13 years ago
Last modified 12 years ago
#991 new task
crear clases generales para poder hacer 'prevision' con modelos Probit
Reported by: | mruiz | Owned by: | Pedro Gea |
---|---|---|---|
Priority: | major | Milestone: | Next |
Component: | General | Keywords: | |
Cc: | mruiz@… |
Description
hola,
ante la problematica que nos hemos encontrado, se propone crear algunas clases de tipo general que facilite el poder hacer prevision en modelos probit cuando se trabaja con matrices.
Añado el codigo que se ha hecho para el proyecto de Banamex para que sirva de ejemplo y facilite el trabajo.
// Calculo los intervalos de prevision para cada submodelo Set intervals = EvalSet(est::GetModel(?)::GetSubmodels(?), Set (NameBlock sMFor) { //NameBlock sM = sSubmod[1]; Text nameOut = (sMFor::GetOutput(?))::GetName(?); Text agen = Sub(nameOut, TextFind(nameOut, ".")+1, TextLength(nameOut)); NameBlock varAge = est::GetModel(?)::GetDataSet(?)::GetVariable("id_dt_start_Agen."+ agen); Matrix data = varAge::GetData(?); Real numFechasEst = DateDif(Diario, FechaEstimDsd, FechaEstimHst); Real numFechasFor = DateDif(Diario, FechaEstimDsd, FechaForHst); Real numDatosEst = MatSum(LE(data, numFechasEst+1)); Real numDatosFor = MatSum(LE(data, numFechasFor)); [[ numDatosEst, numDatosFor]] }); // Creamos los nombres de las variables para 'prevision', para no machacar Set inputs = EvalSet(est::GetModel(?)::GetSubmodel(1)::GetExpTerms(?), Text (NameBlock et) { Text name = et::GetInput(?)::GetVariable(?)::GetName(?); Text Sub(name, 1, TextFind(name, "_", TextLength(name), 1, -1))<<"Agen.For" }); // Asignamos a esas variables los nuevos datos Set For(1, Card(inputs), Anything (Real j) { Matrix newinput = BinGroup("<<", For(1, Card(intervals), Matrix (Real i) { SubRow( est::GetModel(?)::GetSubmodel(i)::GetExpTerm(j)::GetInput(?)::GetVariable(?)::GetData(?), Range(intervals[i][1], intervals[i][2], 1) ) })); NameBlock est::GetModel(?)::GetDataSet(?)::ReplaceVariable([[ Text _.name = inputs[j]; Set _.data. = [[newinput]] ]]); // Real est::GetModel(?)::RemoveMVariable(inputs[j]); NameBlock est::GetModel(?)::CreateMVariable([[ Text _.name = inputs[j]; Text _.variable = inputs[j] ]]) }); // volvemos a cambiar los valores Begin y End en la estimacion Set EvalSet(est::GetModel(?)::GetSubmodels(?), Anything (NameBlock sub) { Real sub::SetBegin(Matrix Row(1,1)); Real sub::SetEnd(Matrix Row(-1,-1)); Set For(1, Card(inputs), Real (Real j) { sub::GetExpTerm(j)::SetInput(inputs[j]) }); 1 });
Saludos.
Change History (1)
comment:1 Changed 12 years ago by
Milestone: | Maintenance → Next |
---|---|
Type: | defect → task |
Note: See
TracTickets for help on using
tickets.