Selección del mejor punto de diagnóstico en una prueba diagnóstica

La pasada semana, in un examen, me preguntaron cuál era el mejor punto para una prueba diagnóstica; era necesario razonar mi respuesta. Seguramente mi respuesta fue correcta, pero mi razonamiento no lo fue y por eso quería redimirme. Para evaluar las pruebas diagnósticas con una respuesta binaria (sí/no), contamos con la sensibilidad y la especificidad. La sensibilidad es la capacidad que tiene la prueba para acertar sobre los que de verdad tiene que acertar (la probabilidad de etiquetar como enfermos a aquellos que verdaderamente están enfermos). La especificidad es una medida que nos indica cuánto nos hemos equivocado con los «unos» (la probabilidad de etiquetar enfermos a pacientes sanos). Una forma de medir cuánto acertamos y cuánto nos equivocamos con nuestra prueba. Para analizar el comportamiento de nuestra prueba diagnóstica, debemos determinar un punto de corte. Para ilustrar cómo seleccionar el mejor punto de corte, vamos a emplear unos datos sacados de la web de bioestadística del Hospital Ramón y Cajal y vamos a elaborar una curva ROC con R y ggplot2. ...

5 de febrero de 2014 · rvaquerizo

Jornadas de R gratuitas en Galicia

Buena iniciativa en la que seguro que algún lector está interesado: http://www.galpon.org/content/2a-xornada-dos-sabados-libres-na-altamar-estatistica-con-r-i En este enlace podéis ver con más detalle el contenido del curso. Saludos.

4 de febrero de 2014 · rvaquerizo

Seleccionar un elemento de un objeto de R

Quedarnos con un elemento específico de un objeto en R. Viene de una duda planteada por un lector que surgía a raíz de un post dedicado al $p$-valor y al tamaño muestral. José Ignacio desea almacenar en un objeto el $p$-valor asociado a un test de Wald para la independencia entre los niveles de un factor. Una sugerencia para poder trabajar con este elemento: y <- c(rep(1, 200), rep(0, 100)) x <- c(rep(1, 32), rep(0, 168), rep(1, 15), rep(0, 85)) datos <- data.frame(y, x) table(datos) modelo.1 <- glm(y ~ x, data = datos, family = binomial) summary(modelo.1) Para la realización del test de Wald con R vamos a emplear la librería lmtest: ...

23 de diciembre de 2013 · rvaquerizo

El mejor gestor de datos del mundo es de Cádiz

Me ha gustado esta noticia de Elconfidencial.com: http://www.elconfidencial.com/tecnologia/2013-12-19/un-matematico-andaluz-desconocido-es-el-mejor-cientifico-de-datos-del-mundo_67675/. Resulta que José Antonio Guerrero es el número uno en Kaggle. Mirad que paso rato yo por Kaggle y no me había dado cuenta nunca de esto. He de confesaros que esta noticia me ha emocionado. Por cierto, si visitáis el perfil de José Antonio, entre sus skills está R y en la foto está trabajando con Excel. Un personaje excepcional.

19 de diciembre de 2013 · rvaquerizo

Cuidado con el p-valor. Depende del tamaño de la muestra

El otro martes, Teresa, mi profesora de la Facultad de Estudios Estadísticos, dijo una frase que me dejó helado: «Ojo con el p-valor porque depende del tamaño muestral». Estábamos estudiando regresión logística y tests de independencia. Ahora que uno mismo vuelve a estudiar qué es lo que hay detrás de la salida de los programas estadísticos, se plantean muchas dudas. Por definición, el p-valor depende del tamaño muestral y es una medida que la tomamos como un axioma para todo: el p-valor nunca miente hasta que tenemos mucha exposición. Voy a utilizar un ejemplo que vi en clase con Teresa ligeramente retocado (no creo que se enfade, no creo ni que lea esto). Trabajo con SAS porque estoy más acostumbrado a la salida que ofrece. Se trata de realizar un test de independencia para una tabla 2x2. La $H_0$ o hipótesis nula es que existe independencia entre el factor de nuestro estudio y la variable dependiente; en nuestro caso, $H_0$ es «no hay relación entre la utilización de un pesticida y la presencia de una enfermedad», frente a $H_1$, «hay relación entre la utilización del pesticida y la presencia de la enfermedad». Simulamos los datos con SAS: ...

17 de diciembre de 2013 · rvaquerizo

Calendario de Solvencia II (o Solvencia ¡!)

El 2 de octubre tuvimos propuesta de Directiva Quick-fix II con las fechas de entrada en funcionamiento de Solvencia II. Esto se votó a toda prisa el viernes 21 de noviembre y, a grandes rasgos, se decide que sea el 01/01/2016 el gran momento. Ya hay texto, hay directrices de EIOPA y parece que todo está en marcha. Ya veremos qué pasa con las garantías a largo plazo (qué grande el seguro de decesos). A ver si ya termina de cerrarse el desarrollo normativo. Parece que Solvencia II va a resolverse antes que el Baremo de Autos. Saludos.

16 de diciembre de 2013 · rvaquerizo

Truco (malo) de R. Leer datos desde Excel

Tenemos unos datos en Excel y deseamos crear un objeto en R con ellos. La forma más sencilla es seleccionar y copiar los datos y ejecutar el siguiente código: datos <- read.delim("clipboard") str(datos) Muy sencillo, pero necesitaba “fustigarme”. Si deseamos llevar los datos de R a Excel (el camino contrario), hacemos: write.table(datos, "clipboard", sep = "\t", row.names = FALSE) Igual de sencillo. No hagáis como yo, no olvidéis este código. Saludos.

3 de diciembre de 2013 · rvaquerizo

Truco Excel. Identificar el color de una celda

Para identificar el color de una celda en Excel, podemos emplear Interior.Color del siguiente modo: Sub Macro1() Dim i As Long Dim dato As Long For i = 3 To 6 dato = Cells(i, 2).Interior.Color Cells(i, 3).Value = dato Next i End Sub No funciona con formatos condicionales; si deseáis utilizar los colores de los formatos condicionales, habréis de idear cómo hacerlo o bien esperar a que tenga tiempo a redactar cómo lo hago yo; pero que nadie se espere un programa en Visual Basic brillante, que no fui capaz de hacerlo. Saludos.

27 de noviembre de 2013 · rvaquerizo

Truco Excel. Agrupar valores en un campo de una tabla dinámica

Si necesitamos agrupar un campo de una tabla dinámica, tenemos dos opciones: por un lado, agrupar manualmente o bien crear intervalos de determinado tamaño. Para agrupar datos manualmente, seleccionamos los elementos que deseamos agrupar en la tabla dinámica y pulsamos botón derecho > Agrupar: Inmediatamente se nos crea un nuevo campo en la tabla dinámica que, por sufijo, tendrá un “2” y aparece un nuevo grupo que por defecto se llamará “Grupo 1”. Podemos cambiar el nombre; en este caso agrupamos trimestres o cuatrimestres: ...

5 de noviembre de 2013 · rvaquerizo

Truco SAS. Unir todas las hojas de un Excel en una

Empleamos LIBNAME con SAS para acceder a Excel. Es un truco con limitaciones y que se tiene que ir mejorando a futuro. Se trata de leer todas las hojas de un libro Excel y pegarlas verticalmente en otra hoja QUE NO DEBE EXISTIR PREVIAMENTE. La macro es la siguiente; no se acompaña de un ejemplo de uso debido a su sencillez: %macro une_excel(ubicacion, nombre_union); libname selec "&ubicacion."; proc sql noprint; select "SELEC.'" || memname || "'n" into :lista_excel separated by " " from dictionary.members where libname = "SELEC"; quit; data SELEC.&nombre_union.; set &lista_excel.; run; libname selec clear; %mend; %une_excel(C:\TEMP\unir_excel2\unidos.xlsx, todas); Creamos una librería SAS a un libro Excel determinado. Leemos con DICTIONARY las hojas que tiene dicho libro y las unimos en una hoja de ese libro, que será la última. Como buena costumbre, desasignamos la librería con LIBNAME CLEAR. Como se ha indicado antes, tiene limitaciones; por ejemplo, no debe existir la hoja final con la unión. Pero es un buen ejemplo de uso de LIBNAME + Excel y DICTIONARY. Saludos.

20 de septiembre de 2013 · rvaquerizo