Changeset 412906e in tol


Ignore:
Timestamp:
May 11, 2010, 1:31:08 PM (16 years ago)
Author:
Víctor de Buen <vdebuen@…>
Branches:
1941-docker-image-to-test, devel, master
Children:
5633d43
Parents:
fd471ab
Message:

refs #902
multivariant is changed to multivariate

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

Location:
tol_pkg/BysVecLinReg
Files:
2 edited
1 moved

Legend:

Unmodified
Added
Removed
  • tol_pkg/BysVecLinReg/BysVecLinReg.tol

    rfd471ab r412906e  
    99Text _.autodoc.url = "";
    1010Set _.autodoc.keys = [["MCMC","Markov chain","Bayesian","Metropolis",
    11   "Hastings","multivariant","linear","regression","inequality","constraints"]];
     11  "Hastings","multivariate","linear","regression","inequality","constraints"]];
    1212Set _.autodoc.authors = [[
    1313   "vdebuen@tol-project.org"]];
    1414
    15 #Embed "Multivariant.tol"
     15#Embed "Multivariate.tol"
    1616
    1717]];
  • tol_pkg/BysVecLinReg/Multivariate.tol

    rfd471ab r412906e  
    11/* -*- mode: C++ -*- */
    22//////////////////////////////////////////////////////////////////////////////
    3 // FILE   : Multivariant.tol
    4 // PURPOSE: Defines Class BysVecLinReg::@Multivariant
    5 //////////////////////////////////////////////////////////////////////////////
    6 
    7 //////////////////////////////////////////////////////////////////////////////
    8 //Multivariant linear regression
     3// FILE   : Multivariate.tol
     4// PURPOSE: Defines Class BysVecLinReg::@Multivariate
     5//////////////////////////////////////////////////////////////////////////////
     6
     7//////////////////////////////////////////////////////////////////////////////
     8//Multivariate linear regression
    99// Y = A*X + E
    1010//where
    … …  
    1616//     V has a prior inverse Wishart W(V0,N0)
    1717//
    18 Class @Multivariant
     18Class @Multivariate
    1919//////////////////////////////////////////////////////////////////////////////
    2020{
    … …  
    2525  //Definition members
    2626  ////////////////////////////////////////////////////////////////////////////
    27   VMatrix _.Y = Rand(0,0,0,0);    //Multivariant output matrix DxN
    28   VMatrix _.X = Rand(0,0,0,0);    //Multivariant input matrix MxN
     27  VMatrix _.Y = Rand(0,0,0,0);    //Multivariate output matrix DxN
     28  VMatrix _.X = Rand(0,0,0,0);    //Multivariate input matrix MxN
    2929  Real _.alpha = 0;               //Prior invariant scaling factor
    3030  Real _.W.weight = 0;            //Weight of prior Wishart freedom degrees
    … …  
    3737  //Data length
    3838  Real _.N = ?;
    39   //Number of multivariant output vectors
     39  //Number of multivariate output vectors
    4040  Real _.d = ?;
    4141  //Number of multivariantinput vectors
    4242  Real _.m = ?;
    43   //multivariant residuals (dxN)
     43  //multivariate residuals (dxN)
    4444  VMatrix _.E = Rand(0,0,0,0);
    45   //Instant covariance of multivariant residuals (dxd)
     45  //Instant covariance of multivariate residuals (dxd)
    4646  VMatrix _.V = Rand(0,0,0,0);
    47   //Regression multivariant coefficients (dxm)
     47  //Regression multivariate coefficients (dxm)
    4848  VMatrix _.A = Rand(0,0,0,0);
    4949  //Stacked columns of A (D*Mx1)
    … …  
    9696    If(And(VRows(M)==nRow, VColumns(M)==nCol), True,
    9797    {
    98       WriteLn("[BysVecLinReg::@Multivariant::"+method+"] "
     98      WriteLn("[BysVecLinReg::@Multivariate::"+method+"] "
    9999              "Incongruent dimensions of _.W.V0 that should be "
    100100              "("<<nRow+","<<nCol+") instead of "
    … …  
    114114    VColumns(Y)!=_.N,
    115115    {
    116       WriteLn("[BysVecLinReg::@Multivariant::set.outputInput] "
     116      WriteLn("[BysVecLinReg::@Multivariate::set.outputInput] "
    117117              "Incongruent rows data length between input "
    118118              "("<<VRows(X)+","<<VColumns(X)+") "
    … …  
    123123    _.m > _.N,
    124124    {
    125       WriteLn("[BysVecLinReg::@Multivariant::set.outputInput] "
     125      WriteLn("[BysVecLinReg::@Multivariate::set.outputInput] "
    126126              "Too much inputs for data length "<<_.N+"<"<<_.m,"E");
    127127      False
    … …  
    133133      change.alpha(0);
    134134      VMatrix _.vec.A := (_.vec.nu)/(1+_.alpha);
    135       VMatrix _.A := @Multivariant::vec2vmatrix(_.vec.A,Constant(_.d,_.m,1));
     135      VMatrix _.A := @Multivariate::vec2vmatrix(_.vec.A,Constant(_.d,_.m,1));
    136136      change.V(Eye(_.d));
    137137      True
    … …  
    140140
    141141  ////////////////////////////////////////////////////////////////////////////
    142   Static @Multivariant New( 
    143     Text desc,
    144     Set outputNames,
    145     Set inputNames,
    146     VMatrix Y,
    147     VMatrix X)
    148   ////////////////////////////////////////////////////////////////////////////
    149   {
    150     @Multivariant new = [[
    151       Text _.desc = desc;
    152       Set _.outputNames = outputNames;
    153       Set _.inputNames = inputNames]];
    154     Real new::set.outputInput(Y,X);
    155     new
     142  Real set.prior.V.none(Real void)
     143  ////////////////////////////////////////////////////////////////////////////
     144  {
     145    Real _.W.N0 := 0;
     146    Real _.W.weight := 0;
     147    VMatrix _.W.V0 := Constant(_.d,_.d,0);
     148    VMatrix gibbs.draw.V(0);
     149    True
    156150  };
    157151
    … …  
    171165      Real _.W.weight := _.W.N0 / (_.W.N0+_.N);
    172166      VMatrix _.W.V0 := Copy(W.V0);
     167      VMatrix gibbs.draw.V(0);
    173168      True
    174169    })
    … …  
    203198      VMatrix _.nu:=Tra(CholeskiSolve(_.X.Lf,XYt,"PtLLtP"));
    204199      VMatrix _.nuXYt := _.nu*XYt;
    205       VMatrix _.vec.nu:=@Multivariant::vmatrix2vec(_.nu);
     200      VMatrix _.vec.nu:=@Multivariate::vmatrix2vec(_.nu);
    206201      True
    207202    })
    … …  
    214209    If(alpha<0,
    215210    {
    216       WriteLn("[BysVecLinReg::@Multivariant::change.alpha] "
     211      WriteLn("[BysVecLinReg::@Multivariate::change.alpha] "
    217212              "scaling invariant parameter alpha must be non negative","E");
    218213      False
    … …  
    230225    If(!check.dim("change.V",V,_.d,_.d),False,
    231226    {
    232       VMatrix _.V := Copy(V);
     227      VMatrix _.V := (V+Tra(V))/2;
    233228      VMatrix _.VxIm := KroneckerProduct(_.V, Eye(_.m));
    234229      VMatrix _.VxIm.Lf := CholeskiFactor(_.VxIm,"X");
    … …  
    257252  ////////////////////////////////////////////////////////////////////////////
    258253  {
    259     VMatrix E = _.Y - _.A * _.X;
    260     VMatrix S2 = MMtSqr(E);
     254    VMatrix _.E := _.Y - _.A * _.X;
     255    VMatrix S2 = MMtSqr(_.E);
    261256    Real change.V(Mat2VMat(RandIWishart(_.N+_.W.N0, VMat2Mat(S2+_.W.V0*_.W.N0))));
    262257    Copy(_.V)
     258  };
     259
     260  ////////////////////////////////////////////////////////////////////////////
     261  VMatrix gibbs.draw.vec.V(Real numSim)
     262  ////////////////////////////////////////////////////////////////////////////
     263  {
     264    VMatrix gibbs.draw.V(numSim);
     265    @Multivariate::vmatrix2vec(_.V)
    263266  };
    264267
    … …  
    279282  {
    280283    VMatrix gibbs.draw.vec.A(numSim);
    281     VMatrix _.A := @Multivariant::vec2vmatrix(_.vec.A,_.A);
     284    VMatrix _.A := @Multivariate::vec2vmatrix(_.vec.A,_.A);
    282285    Copy(_.A)
    283286  }
  • tol_pkg/BysVecLinReg/test/test_0002/test.tol

    rfd471ab r412906e  
    88Text link_ = "";
    99Text summary_ =
    10 "test_0001 multivariate linear model with unknown covariance matrix" ;
     10"test_0002 multivariate linear model with unknown covariance matrix" ;
    1111
    1212Real numErr0 = Copy(NError);
Note: See TracChangeset for help on using the changeset viewer.