# AD cuadrático
 
data(iris)
 
# Selección de una submuestra de 105 (el 70% de los datos)
set.seed(101)
iris.indices <- sample(1:nrow(iris),size=105)
iris.entrenamiento <- iris[iris.indices,]
iris.test <- iris[-iris.indices,]
 
datos <- iris.entrenamiento
 
require(MASS) # para qda()
require(klaR) # para errormatrix() y stepclass()
 
# Ejecución del análisis discriminante
datos.qda <- qda(formula=Species~.,data=datos)
 
# Asignación a cada clase, proporciona la probabilidad de pertenencia a cada una
datos.qda.p <- predict(datos.qda, iris.test)
 
 
# Matriz de confusión:
tabla <- table(datos.qda.p$class,iris.test$Species)
tabla
# Correctamente clasificados en %
100 * sum(diag(tabla)) / sum(tabla)
 
 
 
# predicción. Se asignan valores nuevos a cada variable
nuevo <- data.frame(Sepal.Length=5, Sepal.Width=3, Petal.Length=1.5,
                    Petal.Width=0.3)
prediccion <- predict(datos.qda,newdata=nuevo, interval='confidence')
 
# Asignado a:
prediccion$class
 
# Probabilidad de pertenencia a cada clase:
prediccion$posterior
 
 
#Selección de variables. Paso a paso
 
datos.step <- stepclass(formula=Species~.,data=datos,method="qda")
# Variables retenidas en el modelo
datos.step$model
# Fórmula
datos.step$formula
 
 
Probar este programa
> # AD cuadrático
>
> data(iris)
>
> # Selección de una submuestra de 105 (el 70% de los datos)
> set.seed(101)
> iris.indices <- sample(1:nrow(iris),size=105)
> iris.entrenamiento <- iris[iris.indices,]
> iris.test <- iris[-iris.indices,]
>
> datos <- iris.entrenamiento
>
> require(MASS) # para qda()
> require(klaR) # para errormatrix() y stepclass()
>
> # Ejecución del análisis discriminante
> datos.qda <- qda(formula=Species~.,data=datos)
>
> # Asignación a cada clase, proporciona la probabilidad de pertenencia a cada una
> datos.qda.p <- predict(datos.qda, iris.test)
>
>
> # Matriz de confusión:
> tabla <- table(datos.qda.p$class,iris.test$Species)
> tabla
 
             setosa versicolor virginica
  setosa         15          0         0
  versicolor      0         12         0
  virginica       0          0        18
> # Correctamente clasificados en %
> 100 * sum(diag(tabla)) / sum(tabla)
[1] 100
>
>
>
> # predicción. Se asignan valores nuevos a cada variable
> nuevo <- data.frame(Sepal.Length=5, Sepal.Width=3, Petal.Length=1.5,
+                     Petal.Width=0.3)
> prediccion <- predict(datos.qda,newdata=nuevo, interval='confidence')
>
> # Asignado a:
> prediccion$class
[1] setosa
Levels: setosa versicolor virginica
>
> # Probabilidad de pertenencia a cada clase:
> prediccion$posterior
  setosa   versicolor    virginica
1      1 2.862949e-16 1.697836e-33
>
>
> #Selección de variables. Paso a paso
>
> datos.step <- stepclass(formula=Species~.,data=datos,method="qda")
 `stepwise classification', using 10-fold cross-validated correctness rate of method qda'.
105 observations of 4 variables in 3 classes; direction: both
stop criterion: improvement less than 5%.
correctness rate: 0.96182;  in: "Petal.Length";  variables (1): Petal.Length
 
 hr.elapsed min.elapsed sec.elapsed
      0.000       0.000       0.433
 
> # Variables retenidas en el modelo
> datos.step$model
    nr         name
var  3 Petal.Length
> # Fórmula
> datos.step$formula
Species ~ Petal.Length