Hi,

  I am trying to solve a discriminant analysis in the same way as SPSS does it. 
I mean, given an amount of data, to train the discriminant analysis I obtain 
the Fisher's discriminant functions, an array of coefficients per group, so if 
I have 8 groups I get 8 linear functions, that allow me to operate with them 
easily and without a great cost of time.

  My main problem is that I need to give a prediction over an application that 
is running in real time, and I can't expend a lot of time on online operations. 
That's why the solution given by SPSS is a good one, as it provides a matrix 
and the only operation needed is nearly just dot matrices. But it has a great 
disadvantage, as it is propietary, and runs over Windows OS, and I need it 
running over Linux OS to automate some operations.

  The most reliable application for statistics was R-project, and I decided to 
adopt it as the base platform for all the statistics operations (and I think it 
has been a good choice). But ... how could I obtain the same matrix given by 
SPSS with R??

  I've tried to do it with R, but I only get the canonical matrices as the 
result, n-1 arrays of coefficients for my n groups, and after that I have to 
use 'predict' to get the sample classification. This is right but it takes 
about 0.6 seconds to solve this operations: raising the R environment and 
making the operations, and it's too much. Even, I tested rpy module (over 
Python) to make a kind of server which could just save the time spent on 
raising the R environment and spend just the operations time, but it was not as 
I thought and was a fruitless work.

  For example (the data is not real and not good but works, just an example):

>From Linux console:

> cat data.txt

group    v1     v2      v3
1           2       3        5
1           2       4        6
2           11     8        7
2           9       9        10
3           20     14      13
3           21     15      17

>From R console:

> data <- read.table("data.txt", header=T)
> data.lda <- lda(group ~ ., data=data)
> data.lda

Call:
lda(group ~ (v1 + v2 + v3), data = tmp.data)

Prior probabilities of groups:
        1         2         3
0.3333333 0.3333333 0.3333333

Group means:
    v1   v2   v3
1  2.0  3.5  5.5
2 10.0  8.5  8.5
3 20.5 14.5 15.0

Coefficients of linear discriminants:
          LD1        LD2
v1  0.8294354  0.6168736
v2  2.8623498 -1.7696711
v3 -0.7612283  0.8423363

Proportion of trace:
   LD1    LD2
0.9984 0.0016

  In this example, I get 2 functions: LD1 and LD2 as the canonical functions 
for 3 groups, and what I'd need is 3 functions for my 3 groups (Fisher's 
discriminant functions).

  Has anyone got the same problem as me?? If it has, how was it solved?? Which 
library was taken?? ... How could I convert the canonical functions (n-1 
functions per n groups) into Fisher's functions (n functions per n groups)??

  Thanks.

Regards.

  Carlos Niharra López

                
---------------------------------




        [[alternative HTML version deleted]]

______________________________________________
R-help@stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to