simulateScores            package:hddplot            R Documentation

_G_e_n_e_r_a_t_e _l_i_n_e_a_r _d_i_s_c_r_i_m_i_n_a_n_t _s_c_o_r_e_s _f_r_o_m _r_a_n_d_o_m _d_a_t_a, _a_f_t_e_r _s_e_l_e_c_t_i_o_n

_D_e_s_c_r_i_p_t_i_o_n:

     Simulates the effect of generating scores from random data,
     possibly  with predicted scores calculates also for additional
     'observations'

_U_s_a_g_e:

     simulateScores(nrows = 7129, cl = rep(1:3, c(19, 10, 2)), x = NULL, cl.other = 4, x.other = NULL, nfeatures = 15, dimen=2, seed = NULL)

_A_r_g_u_m_e_n_t_s:

   nrows: number of rows of random data matrix

      cl: classifying factor

       x: data matrix, by default randomly generated

cl.other: classifying factor for additional observations

 x.other: additional observations

nfeatures: number of features to select (by default uses  aov
          F-statistic)

   dimen: number of sets of discriminant scores to retain (at most one
          less than number of levels of 'cl')

    seed: set, if required, so that calculations can be reproduced

_D_e_t_a_i_l_s:

_V_a_l_u_e:

  scores: matrix of scores

      cl: classifying factor

   other: matrix of 'other' scores

cl.other: classifying factor for 'scores.other'

nfeatures: number of features used in generating the scores

_N_o_t_e:

_A_u_t_h_o_r(_s):

     John Maindonald

_R_e_f_e_r_e_n_c_e_s:

_S_e_e _A_l_s_o:

_E_x_a_m_p_l_e_s:

     scorelist <- simulateScores(nrows=500, cl=rep(1:3, c(19,10,2)))
     plot(scorelist$scores, col=unclass(scorelist$cl), pch=16)

     ## The function is currently defined as
     function(nrows=7129, cl=rep(1:3, c(19,10,2)), x=NULL, 
                cl.other=4, x.other=NULL, nfeatures=15, 
                dimen=2, seed=NULL){
         if(!is.null(seed))set.seed(seed)
         m <- length(cl)
         m.other <- length(cl.other)
         if(is.null(x)){
           x <- matrix(rnorm(nrows*m), nrow=nrows)
           rownames(x) <- paste(1:nrows)
         }
         else nrows <- dim(x)[1]
         if(is.null(x.other)){
           x.other <- matrix(rnorm(nrows*m.other), nrow=nrows)
           rownames(x.other) <- paste(1:nrows)
         }
         if(is.numeric(cl))cl <- paste("Gp", cl, sep="")
         if(is.numeric(cl.other))cl.other <- paste("Gp", cl.other, sep="")
         cl <- factor(cl)
         if(dimen>length(levels(cl))-1)dimen <- length(levels(cl))-1
         cl.other <- factor(cl.other)
         xx.random <- matrix(rnorm(nrows*m), nrow=nrows)
         ordfeatures <- orderFeatures(xx.random, cl=cl, values=T)
         stat <- ordfeatures$stat[1:nfeatures]
         ord.use <- ordfeatures$ord[1:nfeatures]
         dfUse.ord <- data.frame(t(x[ord.use, ]))
         dfUseOther.ord <- data.frame(t(x.other[ord.use, ]))
         ordUse.lda <-  lda(dfUse.ord, grouping=cl)
         scores <- predict(ordUse.lda, dimen=2)$x
         scores.other <- predict(ordUse.lda, newdata=dfUseOther.ord, dimen=dimen)$x
         invisible(list(scores=scores, cl=cl, other=scores.other, 
                        cl.other=cl.other, nfeatures=nfeatures))
       }

