Resolución del juego de modelos con R

Hace mucho planteé un juego de identificación de modelos con R y ya se me había olvidado daros la solución. Pensando en el Grupo de Usuarios de R y en hacer algo parecido en una presentación recordé que había que solucionar el ejercicio. Lo primero es la creación de los datos, se me ocurrió una función sencilla y una nube de puntos alrededor de ella:

#Variable independiente
indep = runif(500,100,500)
#Función para crear la variable dependiente
foo = function(x){ mean(x)*(1-sin(-0.006042*x))
}
dep = sapply(indep,foo)

dep=dep+(runif(length(dep),-100,100))
datos = data.frame(cbind(indep,dep))
plot(datos)

juego_modelos1

Reunión del Grupo de Usuarios de R de Madrid 12/05/2016

R

Nueva reunión del Grupo de Usuarios de R de Madrid en MediaLab Prado. No está publicado en la web por temas de cerrar definitivamente las agendas. De momento las propuestas son:

• Iñaki Úcar: «Presentación de simmer (Discrete Event Simulation in R)». Iñaki nos presentará simmer. Un paquete que ha creado para poder realizar análisis y simulaciones de eventos discretos (DES) en R. Con este paquete se pueden realizar simulaciones para el estudio de la evolución de sistemas teniendo en cuenta diferentes tipos de gestión de colas.

KNN con SAS. Mejorando K-Means

Imagen de previsualización de YouTube

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:

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

outlier¿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:

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»)

Reunión del Grupo de Usuarios de R de Madrid 14/04/2016

R

Nueva reunión del Grupo de Usuarios de R de Madrid este jueves día 14 de abril de 2016, para más detalles:

http://madrid.r-es.org/34-jueves-14-de-abril-2016/

La agenda de la reunión será:

  • Pedro Concejero: “Análisis de datos de accidentes de tráfico – DGT“.
  • Miguel Ángel Gómez: “Análisis de Sentimiento – Aplicación a noticias Financieras”
  • Carlos J. Gil Bellosta: “Posibilidades de interacción entre R y Python a través del nuevo paquete feather”

Si el tiempo me lo permite por allí estaré. Saludos

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.

Truco Excel. Abrir múltiples libros de Excel en distintas hojas de un nuevo libro

Hace tiempo escribí sobre el método de Excel GetOpenFilename para abrir archivos desde Excel a través del explorador de archivos ahora le damos una nueva vuelta de tuerca a aquella entrada y de forma simple podemos abrir múltiples libros de Excel que además se añadirán de forma sucesiva en un nuevo libro. En este link podéis descargaros el archivo y como veréis no tiene nada. Un botón Abrir Excel realiza el proceso, se abre el explorador de Windows y podéis seleccionar múltiples archivos Excel que se almacenan en un array. La macro a ejecutar es la siguiente:

DESREF para trasponer en Excel varias columnas

Hoy han planteado una duda en el blog que me ha parecido interesante porque es un buen ejemplo de uso de la función DESREF de Excel para trasponer filas en columnas con cierto criterio. La idea que planteaba es realizar una trasposición de 3 en 3 elementos como indica en la figura:

ejemplo_trasponer_desref

Para entender como funciona la función DESREF lo mejor es pensar en lo siguiente: fijado un punto nos movemos x-filas ; x-columnas. En el ejemplo concreto el punto inicial está en la celda A1;0;0 si nos desplazamos a la derecha haremos A1;1;0 es decir, nos movemos a la derecha +1 y siempre mantenemos la columna porque estamos trasponiendo filas en columnas. Las coordenadas de la fila para la trasposición en nuestro ejemplo quedarían:

Internet of things en el sector asegurador

DSC00028El martes 23 de febrero de 2016 voy a una ponencia en la Semana del Seguro que tiene casi el mismo título que esta entrada del blog. Antes de ir a este tipo de jornadas es bueno realizar diversas búsquedas en Google con para conocer a los ponentes, buscar algo de literatura al respecto y saber de primera mano que está haciendo el sector en este ámbito. En vez de hacer eso me acabo de sentar delante de www.analisisydecision.es y voy a añadir una nueva entrada. ¿El motivo? En cuanto escribes Internet of Things sector asegurador en el buscador por excelencia en seguida aparecen coches que circulan sin conductor, big data (como no), ecosistemas interconectados, networking,… y mucha terminología que debe excitar mucho a los consultores pero que a un dinosaurio como yo le viene un poco grande. Sin embargo, me acabo de dar cuenta de que el internet de las cosas puede ayudarnos mucho en el sector asegurador , por eso en vez de contaminarme con tendencias, seguros basados en uso (UBI en inglés) y demás se me ha ocurrido dar mi propia opinión y crear mi propio disparate.

Como hacer un mapa de España por códigos postales con QGIS

Editado 2022:

Francisco Goerlich ha elaborado una versión que de nuevo puede obtener los datos de Cartociudad. Volveremos sobre el tema y dejaremos una capa que pueda ser reutilizable.

https://www.uv.es/goerlich/Ivie/CodPost

Editado 2019:

Como podéis leer más abajo Correos ha impedido al proyecto Cartociudad incluir los mapas de España por Código Postal, ahora es necesario comprarlos. Sin embargo, hay versiones antiguas como las que se descargó en su día Íñigo Flores. Con estas descargas yo he elaborado un mapa de España por códigos postales:

Macro SAS. Número de variables de un dataset en una macro

Una macro que nos permite saber el número de variables que tiene un conjunto de datos SAS. Es una petición de una lectora y la macro es análoga a otra que ya pusimos en el blog allá por 2010. Veamos cómo funciona:

%macro numvars(datos);
 %global numvars;
 /*ABRIMOS EL CONJUNTO DE DATOS PARA VER SUS CARACTERISTICAS*/
 %let datosid = %sysfunc(open(&datos));
 /*SI ESTA ABIERTO ENTONCES LA FUNCION ATTRN NOS DA EL NUMERO DE VARIABLES*/
 %if &datosid %then %do;
 %let numvars =%sysfunc(attrn(&datosid,nvars));
 /*CERRAMOS EL CONJUNTO DE DATOS*/
 %let rc = %sysfunc(close(&datosid));%end;
 %mend;
data ejemplo;
 a=1;
 b=2;
 c=3;
 d=4;
 f=5;
 g=6;
 run;
%numvars(ejemplo);
 %put _user_;

Utilizamos las funciones I/O de SAS, en concreto ATTRN que unido a NVARS nos permite saber el número de variables que tiene un dataset, el número de variables lo ponemos en la macrovariable global &numvars..