KNN con SAS. Mejorando K-Means

La clasificación por k vecinos más cercanos es un método supervisado no paramétrico muy potente. El KNN (K-Nearest Neighbors) clasifica las observaciones en función de su proximidad a otros puntos en el espacio de características; en el vídeo que encabeza la entrada queda muy bien explicado. Tenemos la posibilidad de realizar esta clasificación con SAS/STAT y el PROC DISCRIM. Hace años ya hablamos de segmentación con SAS y vamos a emplear los mismos datos simulados de tres esferas para ilustrar esta entrada: ...

29 de abril de 2016 · rvaquerizo

Valor atípico o pocos registros. Animación con R

¿Cómo influye un solo punto en una recta de regresión? Evidentemente, cuantas menos observaciones tengo, más puede “descolocar” la recta de regresión. Sin embargo, cuantos más puntos tengo, más complicado es encontrar ese punto con una recta de regresión; sin analizar los residuos podríamos hasta pasarlo por alto, aunque puede ser que nos interese ese punto. El código de R que genera la animación es: library(animation) saveGIF({ for (i in c(100, 50, 25, 10, 5, 1)) { x <- seq(-500, 500, by = i) y <- sin(x) + x / 100 y[10] <- y[10] + 10 plot(y, x, main = paste("Regresión lineal con ", round(1000 / i), " observaciones")) reg <- lm(y ~ x) points(fitted.values(reg), x, type = "l", col = "red", lwd = 2) } }, interval = 0.85, movie.name = "/Users/raulvaquerizo/Desktop/R/animaciones/outlier.gif") El paquete animation nos permite generar archivos .gif de una forma muy sencilla. Saludos.

24 de abril de 2016 · rvaquerizo

Interpretación de los parámetros de un modelo GLM

Muchos estudiantes terminarán trabajando con GLM que siguen buscando relaciones lineales en multitud de organizaciones a lo largo del planeta. Y hoy quería ayudar a esos estudiantes a interpretar los parámetros resultantes de un GLM, más concretamente los resultados de un PROC GENMOD de SAS, aunque lo que vaya a contar ahora se puede extrapolar a otras salidas de SAS o R. En la línea de siempre, no entro en aspectos teóricos y os remito a los apuntes del profesor Juan Miguel Marín. Con un GLM al final lo que buscamos (como siempre) es distinguir lo que es aleatorio de lo que es debido al azar a través de relaciones lineales, de un modo similar a como lo hace una regresión lineal; sin embargo, los GLM nos permiten que nuestra variable dependiente no sólo siga una distribución normal: puede seguir otras distribuciones como Gamma, Poisson o Binomial. Además, un GLM puede trabajar indistintamente con variables categóricas y numéricas, pero yo recomiendo trabajar siempre con variables categóricas y, en la práctica, cuando realizamos un modelo de este tipo siempre realizaremos agrupaciones de variables numéricas. Si disponemos de variables agrupadas, de factores, los parámetros de los modelos nos servirán para saber cómo se comporta nuestra variable dependiente a lo largo de cada nivel del factor. ...

21 de marzo de 2016 · rvaquerizo

Truco para EMB Emblem. Cambiar el nivel base de un factor

Un buen truco que me han descubierto hoy para los usuarios de EMB Emblem: cómo cambiar el nivel base de un factor de datos sin necesidad de pasar por los datos (habitualmente SAS) o sin hacerlo a posteriori (habitualmente Excel, que era lo que hacía el ahora escribiente). Cuando se generan los datos, se genera el fichero binario .BID y el fichero que se emplea para leer ese fichero, el .FAC. Para alterar el nivel base, debemos abrir este archivo .FAC con un bloc de notas o cualquier editor de texto plano. Al abrirlo, tendremos lo siguiente: ...

22 de octubre de 2015 · rvaquerizo

Juego de modelos de regresión con R

Os propongo un juego con R. El juego parte de unos datos aleatorios que he generado con R (los que veis arriba) que dividimos in entrenamiento y test. Sobre el conjunto de datos de entrenamiento he realizado varios modelos y valoro las predicciones gráficamente sobre los datos de test. El juego consiste in asociar cada resultado gráfico de test a cada código de R correspondiente y justificar brevemente la respuesta. ...

28 de junio de 2015 · rvaquerizo

Medir la importancia de las variables en una red neuronal con R

Sigo a vueltas con esta gran web y hoy vamos a medir la importancia de las variables en una red neuronal. Al igual que sucede en un modelo de regresión, los parámetros obtenidos pueden servirnos para determinar la importancia de una variable dentro del modelo. En el caso de una red neuronal, los pesos de la red pueden ser utilizados para determinar cómo influye una variable en el modelo. Para ilustrar este tipo de tareas, el gran @beckmw realizó esta entrada: ...

29 de septiembre de 2014 · rvaquerizo

Representación de redes neuronales con R

En la última entrada realizamos un modelo de regresión con redes neuronales. Hoy quería mostraros cómo representar gráficamente la red neuronal creada en esa entrada. A la modelización con redes neuronales siempre se le ha achacado un comportamiento de “caja negra”: nosotros pasamos unas variables de entrada por una capa oculta y obtenemos una salida. No hay parámetros ni inferencia sobre los mismos; no sabemos lo que hace la red por dentro. En el caso concreto de R y continuando con la entrada anterior, si hacemos summary(bestnn): ...

9 de septiembre de 2014 · rvaquerizo

Modelos lineales dinámicos (DLM) con R

Otro de los modelos que está tocando estudiar este verano son los Dynamic Linear Models (DLM). Para estudiar este tipo de modelos es imprescindible leer este documento. Estos métodos parten de una idea: “la vida no es fácil cuando tienes que hacer estimaciones sobre una serie temporal”. Una serie temporal es un vector de datos aleatorios, una sucesión de observaciones de la forma $Y_t$ con $t=1, 2, \dots$. Si sobre esta sucesión tenemos una característica que puede influir, estamos ante un modelo de espacio estado. Estos modelos tienen una cadena de Markov (http://es.wikipedia.org/wiki/Cadena_de_M%C3%A1rkov) porque esa característica que afecta a la serie es una cadena de Markov, y eso nos permite que los $Y_t$ sean independientes ya que dependen sólo de esa característica. El más importante modelo de espacio estado es el modelo lineal dinámico. ...

7 de septiembre de 2014 · rvaquerizo

Regresión con redes neuronales en R

La última técnica que me estoy estudiando este verano es la regresión con redes neuronales. El ejemplo que os voy a poner es completamente análogo a este: http://heuristically.wordpress.com/2011/11/17/using-neural-network-for-regression/. Vamos a trabajar con el paquete nnet; si dispusiera de tiempo, replicaría este ejemplo en otra entrada con neuralnet. Para realizar el ejemplo tenemos el conjunto de datos BostonHousing, que contiene el censo de 1970 de 506 hogares de Boston. Empecemos a trabajar con la consola de RStudio: ...

7 de septiembre de 2014 · rvaquerizo

Primeros pasos con regresión no lineal (nls) con R

La regresión no lineal se da cuando tenemos que estimar $Y$ a partir de una función del tipo $Y = f(X, \beta) + \epsilon$, donde $\beta$ representa un vector de parámetros $\beta_1, \beta_2, \dots, \beta_n$. Unos datos $X$ e $Y$ se relacionan mediante una función no lineal respecto a unos parámetros $\beta$ desconocidos. ¿Cómo obtenemos estos $\beta$ desconocidos? Habitualmente a través de mínimos cuadrados ordinarios o bien con otros métodos como máxima verosimilitud. Este cálculo llevará asociada su inferencia estadística habitual. La función que asocia los pares de datos $(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)$ será una función conocida. Por eso esta técnica es muy utilizada en ciencias químicas, geodinámica… donde ya se conoce la relación teórica que hay entre las variables, pero es necesario realizar modelos con los pares de datos disponibles de cara a obtener estimaciones de los parámetros. ...

21 de agosto de 2014 · rvaquerizo