svdbips                package:concor                R Documentation

_S_V_D _f_o_r _b_i_p_a_r_t_i_t_i_o_n_e_d _m_a_t_r_i_x _x

_D_e_s_c_r_i_p_t_i_o_n:

     SVD for bipartitioned matrix x. SIMULTANEOUS SOLUTIONS.
     ("simultaneous svdbip")

_U_s_a_g_e:

     svdbips(x,K,H,r)

_A_r_g_u_m_e_n_t_s:

       x: is a p x q matrix

       K: is a row vector which contains the numbers pk, k=1,...,kx, of
          the partition of x with kx row blocks : sum_k p_k=p

       H: is a row vector which contains the numbers qh, h=1,...,ky, of
          the partition of x with ky column blocks : sum_h q_h=q

       r: is the wanted number of solutions

_D_e_t_a_i_l_s:

     One set of r solutions is calculated by maximizing sum_i sum_k
     sum_h (u_k[,i]'*x_{kh}*v_h[,i])^2, with kx+ky orthonormality
     constraints (for each uk and each vh).  For each fixed r value,
     the solution is totally new (does'nt consist to complete a
     previous calculus of one set of r-1 solutions). 
     rmax=min([min(K),min(H)]).  When r=1, it is svdbip (thus it is
     svdcp when r=1 and kx=1).

     Convergence of algorithm may be not global. So the below proposed
     initialisation of the algorithm may be not very suitable for some
     data sets.  Several different random initialisations with normed
     vectors might be considered and the best result then choosen....

_V_a_l_u_e:

     list with following components 

       u: is a p x r matrix of kx row blocks uk (pk x r); uk'*uk =
          Identity

       v: is a q x r matrix of ky row blocks vh (qh x r); vh'*vh =
          Identity

      s2: is a kx x ky x r array; for a fixed solution k, each matrix
          s2[,,k] contains kxky values (u_h'*x_{kh}*v_k)^2, the
          "partial (squared) singular values" relative to x_{kh}.

_R_e_f_e_r_e_n_c_e_s:

     Lafosse R. & Ten Berge J. A simultaneous CONCOR method for the
     analysis of two partitioned matrices. submitted.

_E_x_a_m_p_l_e_s:

     x<-matrix(runif(200),10,20)
     s1<-svdbip(x,c(3,4,3),c(5,5,10),2);sum(sum(sum(s1$s2)))
     ss<-svdbips(x,c(3,4,3),c(5,5,10),2);sum(sum(sum(ss$s2)))

