KNN con SAS. Mejorando K-Means

La clasificación por k vecinos más cercanos es EL MÉTODO supervisado no paramétrico. El KNN, si empleamos las siglas en inglés, clasifica las observaciones en función de su probabilidad de pertenecer a uno u otro grupo, en el video que encabeza la entrada queda muy bien explicado. El caso es que tenemos la posibilidad de realizar esta clasificación con SAS STAT y el PROC DISCRIM y me parece interesante dedicarle unas líneas. Hace años ya hablamos de segmentación con SAS y vamos a emplear los mismos datos para ilustrar esta entrada. Primero generamos un conjunto de datos con datos simulados de 3 esferas que clasificamos en 3 grupos: ...

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 cuanto 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: ```r 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 ",1000/i," observaciones")) reg <- lm(y~x) points( fitted.values(reg),x, type="l", col="red", lwd=2)}, interval = .85, ,movie.name="/Users/raulvaquerizo/Desktop/R/animaciones/outlier.gif")

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 esta 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 como 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, como 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 y 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 *.FAC; para alterar el nivel base debemos abrir este archivo *.FAC con un block 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 en 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 en 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 como 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 Yt con t=1,2,... 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 Yt 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 neuranet. Para realizar el ejemplo tenemos el conjunto de datos housing 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) + Error$ donde Beta son Beta1, Beta2,…, Beta n. Unos datos X e Y se relacionan mediante una función no lineal respecto a unos parámetros Beta desconocidos. Y cómo obtenemos estos Beta desconocidos, a través de mínimos cuadrados 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 (x1,y1), (x2, y2),…, (yn, xn) 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 que hay entre las variables independientes y la variable dependiente pero es necesario realizar modelos con los pares de datos disponibles de cara a obtener estimaciones. ...

21 de agosto de 2014 · rvaquerizo