.
# AD lineal
 
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 lda()
require(klaR) # para errormatrix() y stepclass()
 
# Ejecución del análisis discriminante
datos.lda <- lda(formula=Species~.,data=datos)
 
# Asignación a cada clase, proporciona la probabilidad de pertenencia a cada una
datos.lda.p <- predict(datos.lda, newdata=iris.test, interval='confidence')
 
# Asignación de colores a cada especie para dibujar.
# Se añade una variable nueva con los colores
color <- rep("black",nrow(datos))
color[datos$Species == "setosa"] <- "red"
color[datos$Species == "virginica"] <- "blue"
 
# Gráficos de las 2 primeras componentes del AD lineal.
# Abbrev abrevia los nombres
plot(datos.lda, dimen=2, col=color, abbrev=1)
 
# pairs() Dibuja los pares de componentes.
# En este ejemplo no tiene mucho sentido ya que sólo hay 2.
# Las componentes son el número de clases menos 1
pairs(datos.lda, col=color, abbrev=1)
 
# Matriz de confusión:
mc <- table(datos.lda.p$class, iris.test$Species)
mc
# Correctamente clasificados en %
100 * sum(diag(mc)) / sum(mc)
 
 
# 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.lda,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="lda")
# Variables retenidas en el modelo
datos.step$model
# Fórmula
datos.step$formula
 
 
Probar este programa
> # AD lineal
>
> 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 lda()
> require(klaR) # para errormatrix() y stepclass()
>
> # Ejecución del análisis discriminante
> datos.lda <- lda(formula=Species~.,data=datos)
>
> # Asignación a cada clase, proporciona la probabilidad de pertenencia a cada una
> datos.lda.p <- predict(datos.lda, newdata=iris.test, interval='confidence')
>
> # Asignación de colores a cada especie para dibujar.
> # Se añade una variable nueva con los colores
> color <- rep("black",nrow(datos))
> color[datos$Species == "setosa"] <- "red"
> color[datos$Species == "virginica"] <- "blue"
>
> # Gráficos de las 2 primeras componentes del AD lineal.
> # Abbrev abrevia los nombres
> plot(datos.lda, dimen=2, col=color, abbrev=1)
>
> # pairs() Dibuja los pares de componentes.
> # En este ejemplo no tiene mucho sentido ya que sólo hay 2.
> # Las componentes son el número de clases menos 1
> pairs(datos.lda, col=color, abbrev=1)
>
> # Matriz de confusión:
> mc <- table(datos.lda.p$class, iris.test$Species)
> mc
 
             setosa versicolor virginica
  setosa         15          0         0
  versicolor      0         12         0
  virginica       0          0        18
> # Correctamente clasificados en %
> 100 * sum(diag(mc)) / sum(mc)
[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.lda,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 4.782878e-17 1.421194e-35
>
>
> #Selección de variables. Paso a paso
>
> datos.step <- stepclass(formula=Species~.,data=datos,method="lda")
 `stepwise classification', using 10-fold cross-validated correctness rate of method lda'.
105 observations of 4 variables in 3 classes; direction: both
stop criterion: improvement less than 5%.
correctness rate: 0.96364;  in: "Petal.Length";  variables (1): Petal.Length
 
 hr.elapsed min.elapsed sec.elapsed
       0.00        0.00        0.54
 
> # Variables retenidas en el modelo
> datos.step$model
    nr         name
var  3 Petal.Length
> # Fórmula
> datos.step$formula




AD_lineal.png

AD_pairs.png