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