data(iris)
datos <- iris


# AD sin selección de variables
require(MASS)
## Loading required package: MASS
require(klaR) # para errormatrix
## Loading required package: klaR
datos.lda <- lda(formula=Species~.,data=datos)
datos.lda.p <- predict(datos.lda,interval='confidence') # Asignación a cada clase, proporciona la probabilidad de pertenencia a cada una
plot(datos.lda,dimen=2) # Gráficos de las 2 primeras componentes del AD lineal

datos.lda.mc <- errormatrix(datos$Species, datos.lda.p$class) # Matriz de confusión
cat("\nMatriz de confusión:\n")
## 
## Matriz de confusión:
print(datos.lda.mc)
##             predicted
## true         setosa versicolor virginica -SUM-
##   setosa         50          0         0     0
##   versicolor      0         48         2     2
##   virginica       0          1        49     1
##   -SUM-           0          1         2     3
print(round(errormatrix(datos$Species, datos.lda.p$class,r=T)*100)) # Matriz de confusion en %
##             predicted
## true         setosa versicolor virginica -SUM-
##   setosa        100          0         0     0
##   versicolor      0         96         4     4
##   virginica       0          2        98     2
##   -SUM-           0         33        67     2
#Selección de variables. Paso a paso
require("klaR")
datos.step <- stepclass(formula=Species~.,data=datos,method="lda")
##  `stepwise classification', using 10-fold cross-validated correctness rate of method lda'.
## 150 observations of 4 variables in 3 classes; direction: both
## stop criterion: improvement less than 5%.
## correctness rate: 0.96;  in: "Petal.Width";  variables (1): Petal.Width 
## 
##  hr.elapsed min.elapsed sec.elapsed 
##       0.000       0.000       3.432
cat("Variables retenidas en el modelo\n")
## Variables retenidas en el modelo
print(datos.step$model)
##     nr        name
## var  4 Petal.Width
cat("\nFórmula:\n")
## 
## Fórmula:
print(datos.step$formula)
## Species ~ Petal.Width
## <environment: 0x3404d40>
# predicción
nuevo <- data.frame(Sepal.Length=5,Sepal.Width=3,Petal.Length=1.5,Petal.Width=0.3)
prediccion <- predict(datos.lda,newdata=nuevo, interval='confidence')
cat("\nAsignado a: ")
## 
## Asignado a:
print(prediccion$class)
## [1] setosa
## Levels: setosa versicolor virginica
cat("\nProbabilidad de pertenencia a cada clase:\n")
## 
## Probabilidad de pertenencia a cada clase:
print(prediccion$posterior)
##   setosa   versicolor   virginica
## 1      1 3.108937e-16 1.44443e-34