análisis de datos 3
Índice
1 intro: recuerdo de A.DD.1
1.1 protocolo para analizar datos
- realizar análisis exploratorio de cada conjunto de datos
- depuración de datos (trasformar variables, eliminar datos imposibles)
- descripción univariante y bivariante (relación de la respuesta \(Y\) con cada \(X\))
- reducción dimensional
- aprendizaje: usar técnicas vistas en A.DD.1 o Modelos Lineales
- regresión (\(Y\) cuantitativa)
- lineal múltiple
- árboles de regresión
- clasificación (\(Y\) cualitativa)
- regresión logística (\(Y\) binaria)
- árboles de decisión
- regresión (\(Y\) cuantitativa)
- selección de un modelo
- entrenamiento
- validación (cruzada)
- calidad de la predicción
- interpretación del modelo
1.2 consejos para programar
- módulos casi independientes
- fáciles de chequearse
- enlazados de manera sencilla
- comentados
1.3 datos y tareas preliminares
1.3.1 iris
- datos incluidos en la distribución básica de R
en algunos entornos (como Rcmdr) están «a la sombra»; puede ser necesario hacer
library (datasets) data (iris)
- objetivo: clasificar en «Species»
- probar y comparar:
- análisis discriminante
- árbol de clasificación
- perceptrón
- buscar individuos que se clasifican de forma distinta según el método usado
1.3.2 cularidad en bovinos
- fichero de datos
- objetivos:
- depurar los datos
- predecir «peso» a partir del resto de variables
- clasificar en «tipo» (C = culón, AC = aculonado, N = normal/corriente)
- calcular edad, mes y estación de nacimiento y destete
- depurar los datos en tres etapas (en cada etapa, eliminar atípicos encontrados)
criterio univariante (stem, hist, boxplot)
## por ejemplo: stem (d$peri_torax) stem (d$peri_torax, scale=2, width=100) # con pantalla grande
por ejemplo:
depurar <- function (var, min, max) d[[var]] [d[[var]] < min | d[[var]] > max] <<- NA depurar ("alzada", 40, 150) # tras hacer: stem (d$alzada) depurar ("long_cruz", 20, Inf) # tras hacer: stem (d$long_cruz) depurar ("ancho_muslos", 10, 130) # etc. depurar ("curva_nalga", 1, 5) # ésta es discreta depurar ("peri_torax", 50, Inf) depurar ("peso", 20, Inf) # tras hacer: stem (d$peso, scale=2) depurar ("edad", 0, 400) # tras hacer: stem (d$peso, scale=10) d$sexo <- factor (d$sexo, levels = c("H", "M")) # tras hacer: table (d$sexo) d$tipo <- factor (d$tipo, levels = c("C ","AC","N "), labels = c("C","A","N"))
criterio bivariante (mahalanobis)
## por ejemplo, para "vacas" mirar peso frente a cada medida morfológica ## (alzada long_cruz ancho_muslos peri_torax) morfo <- "alzada" x <- na.omit (d [c (morfo, "peso")]) D2 <- mahalanobis (x, colMeans(x), var(x)) umbral <- quantile (D2, 0.999) # probar otros umbrales plot (as.formula (paste (morfo, "~ peso")), x, col = 1 + (D2 > umbral)) # color 1=negro 2=rojo
criterio multivariante
x <- na.omit (d [c ("alzada", "long_cruz", "ancho_muslos", "peri_torax", "peso")]) D2 <- mahalanobis (x, colMeans(x), var(x)) umbral <- quantile (D2, 0.999) # ¿umbral adecuado? for (morfo in c ("alzada", "long_cruz", "ancho_muslos", "peri_torax")) { dev.new () plot (as.formula (paste (morfo, "~ peso")), x, col = 1 + (D2 > umbral)) }
1.3.3 Chile
- datos incluidos en el paquete «car» de R
- objetivo:
- asignar los individuos con «vote=U» a una de las otras categorías (Y, N, A)
- comparar lo obtenido con los resultados del referendo de 1988 en Chile
1.3.4 simulados
2 análisis discriminante
- material
- compararlo con la versión bayesiana: lda (…, prior=…)
- compararlo con la versión bayesiana ingenua: library(e1071); naiveBayes(…)