Presentación del Curso

R y bioestadística

Instrucciones

Instrucciones

Tip

Accede desde una computadora/laptop 💻 para una mejor experiencia.

Acción Teclado
Siguiente Diapositiva ó Espacio ó N
Diapositiva Previa ó P
Abrir Menú M
Hacer Zoom Alt ó Ctrl (linux) + click Mouse

Puntos importantes del curso:

Puntos importantes del curso:


No necesitas tener experiencia previa en programación. Este curso está diseñado para aprender los fundamentos de R y bioestadística.


Está enfocado a estudiantes de ciencias biológicas y de la salud: aprenderás los análisis estadísticos más comunes en tu campo de estudio.

Ejemplo de algunos gráficos y análisis que podrás realizar al terminar este curso:

Objetivos del curso

Objetivos del curso

Aprender a utilizar R

Objetivos del curso

Aprender a utilizar R


Aplicar los conceptos básicos de R para análisis de datos y bioestadística.

Objetivos del curso

Aprender a utilizar R


Aplicar los conceptos básicos de R para análisis de datos y bioestadística.

Adquirir habilidades que te permitan aplicar la estadística en tu campo de estudio particular.

Cómo Aprenderas R y Bioestadística en este curso

Cómo Aprenderas R y Bioestadística en este curso


Cada lección está diseñada cuidadosamente para ayudarte a aprender de la manera más efectiva posible. Utilizamos herramientas de enseñanza novedosas basadas en neurociencia y aprendizaje activo. Conócleas a continuación…

Nota

Conoce más sobre mi en este enlace. Soy un maestro en neurobiología que ha trabajado muchos años en la investigación de la memoria y el aprendizaje. Pero sobre todo, llevo más de 20 años como aficionado de la programación. Esto me ha permitido combinar mis dos pasiones en este curso.

Un poco de teoría…

Vamos a ver un ejemplo de cómo se enseña programación y los procesos mentales que podemos utilizar para mejorar el aprendizaje de un lenguaje de programación.

No te preocupes si no entiendes el código, es solo para que te familiarices con el entorno de enseñanza-aprendizaje.

Modelos Mentales y Aprendizaje de un lenguaje de programación

  • Los modelos mentales son representaciones cognitivas 1 que nos ayudan a entender conceptos abstractos y aplicarlos a nuestra realidad.
  • Cuando aprendemos un lenguaje, asociamos conceptos abstractos (palabras) con conceptos concretos (objetos, situaciones, etc.) que ya conocemos.

Cada persona representa y asocia ideas de acuerdo a su experiencia personal

  • Técnicas que utilizamos para que construyas un modelo mental que te permita entender la programación y estadística:
  • Ejemplo: En programación, una función es un bloque de código que realiza una tarea específica. Las funciones toman argumentos de entrada (input) y devuelven un resultado de salida (‘output’).
  • Para tratar de entender este concepto abstracto, podemos relacionar conceptos conocidos. Explora estas tres analogías (haz click en cada pestaña para ver la analogía). Cada persona puede entender mejor una u otra analogía, dependiendo de su experiencia personal.

Puedes pensar una función como un cocinero que toma ingredientes y sigue un recetario para producir un platillo específico.

Una función puede ser asociada con una máquina o caja que recibe ingredientes y produce un producto final.

Si tienes experiencia en matemáticas, tal vez ya relacionaste que tanto una función matemática como una función en programación toman una entrada (argumentos) y producen una salida (resultado). Por ejemplo, \(f(x) = x^2\) es una función matemática que toma un número y lo eleva al cuadrado. Sin embargo, una función en programación puede interactuar con datos más complejos, como palabras, un conjunto de datos o un archivo.

Siguientes pasos

  • Una vez que te he presentado la definición de una función y te he dado una analogía para ayudarte a entenderla, podría mostrarte un ejemplo de código en R, explicarte cómo funciona y pedirte que lo apliques en tu computadora.
  • Sin embargo, este enfoque puede ser problemático para alguien sin mucha experiencia en programación. Por ejemplo, considera si con el siguiente ejemplo podrías entender mejor las funciones en R.
  • La Estructura básica de una función en R es la siguiente: nombre_funcion(argumento1, argumento2, ...). Un ejemplo de una función en R es print() que muestra un valor que especifiqiemos dentro de los paréntesis, por ejemplo print("texto").

Y luego… cómo lo aplico?

  • Podría enseñarte un video donde te enseñe a usar la función, o podría darte un código para que lo copies y pegues en tu computadora.
  • Pero, ¿realmente estas adquiriendo conocimiento 1 nuevo?
  • O solo estás siguiendo instrucciones sin entender realmente lo que estás haciendo (aún cuando puedas correr el código de manera correcta).

Y luego… para qué me sirve?

  • Si continuamos con los siguientes conceptos, como variables, tipos de datos, paquetes, ¿podrás relacionar estos conceptos entre sí y aplicarlos a situaciones nuevas?
  • Un gran problema es que no te darás cuenta si hay un problema en tu entendimiento de las funciones hasta que intentes aplicarlas a situaciones nuevas, donde no tienes un ejemplo de código para copiar y pegar y debes de asociar muchos conceptos entre sí.
  • Esta es la principal razón por la que muchos estudiantes se sienten abrumados y frustrados al aprender a programar, nos desmotivamos y abandonamos el aprendizaje.

Cómo Solucionamos este Problema

  • Evidentemente, esta no es una pregunta con una respuesta simple.
  • Sin embargo, la neurociencia y la psicología cognitiva nos han proporcionado información valiosa sobre cómo aprendemos y cómo podemos mejorar el proceso de aprendizaje para aprender a programar (Muller, 2023).

  • Ahora, imagina que tienes una herramienta donde puedes poner tu codigo y esta te ayudará a “comunicarte” con el código en tiempo real.
  • Los conceptos ya no serán meramente una abstracción.
  • Esta herramienta 1 te ayudan a construir el modelo mental correcto a través de la práctica directa y la retroalimentación inmediata.
  • Si no entendemos las bases de R o de la bioestadística desde los fundamentos, el aprendizaje se vuelve más difícil.

Ejemplo de este aprendizaje activo

Utilizando la función print(), haz que este código imprima "Hola Mundo" en la consola. Recuerda que la función print() toma un argumento entre paréntesis. Sustituye la línea punteada con tu respuesta. Una vez que lo hayas hecho, haz click en el botón azul “Run Code”. No te preocupes si todavía no queda claro, es solo para que te familiarices con el entorno de programación.

Solución

print("Hola Mundo")

¿Qué pasa si cambias el texto “Hola Mundo” por otro texto en el siguiente código? ¿Qué pasa si eliminas las comillas del texto? ¿Qué pasa si eliminas la función print? Modiica el código y observa los resultados antes de ver la respuesta en la siguiente diapositiva.

Respuesta

Respuesta: - Si cambias el texto (siempre y cuando esté entre “comillas”), se imprimirá tu mensaje. - Si eliminas las comillas, obtendrás un error de sintaxis. - Si eliminas la función print, el texto no se mostrará en la consola.

Reflexión

  • Toma en cuenta que, cuando comenzamos a aprender a programar, es común sentirse abrumado por la cantidad de información: instalación de software, entender el programa, escribir código a la par que vemos una lección, errores, etc.
  • En este curso, utilizamos recursos pedagógicos que simplifican un primer acercamiento a la programación.
  • En esta lección, pudiste ser capaz de correr tu primer código en R sin necesidad de instalar software adicional. Sin embargo, existen más beneficios de este enfoque que veremos a continuación.

Combina Teoría y Práctica

  • Por ejemplo, si en la lección surge el conepto de “calcular la media de una variable”, puedes correr el código en la consola y ver el resultado inmediatamente.
  • De este modo, el aprendizaje es más fluido y se facilita la conexión entre la teoría y la práctica.

Corre el siguiente código para calcular la media de la variable weight en el conjunto de datos PlantGrowth. Si no puedes observar el resultado deplazate con tu mouse a la parte inferior de la consola y verás el resultado.

Reproducibilidad

  • En cualquier lenguaje de programación, es muy común que un estudiantes tenga problemas con el código.
  • Esto se puede deber a muchos factores: problemas con la instalación del software, errores en el código al copiarlo, etc.
  • Cuando adquieras más experiencia, verás que estos errores suelen solucionarse rápidamente. Sin embargo, para un principiante, estos problemas pueden ser muy frustrantes y desmotivarte.
  • Tener la consola directamente en la lección ASEGURA que siempre tengas el código correcto para mostrar los conceptos de cada lección.

Fuentes de error en un código: problemas con el software, problemas con tu computadora, escribir mal el código.

  • Alternativamente, también podemos asegurarnos que si existe un error, esto sea lo deseado. Por ejemplo, en la lección sobre ‘Errores Comúnes en R’, se presentarán distintos errores y se le enseñará al estudiante a identificarlos y corregirlos.
  • Sólo como ejemplo, si corres el siguiente código, obtendrás un error de sintaxis. Esto es intencional para que aprendas a identificar y corregir errores. Corre el siguiente código, observa el mensaje de error y continúa con la lección.

Conecta Conceptos de Manera Práctica

  • Es importante que los estudiantes puedan conectar los conceptos teóricos con la práctica para generar modelos mentales claros.
  • Podemos lograr esto gracias a que no tendrás que preocuparte por: aprender un nuevo concepto, reescribirlo en tu computadora, correrlo, regresar a la lección, etc.
  • En el siguiente ejemplo, observa como en una misma diapositiva, vamos a presentar un concepto de estadística, el código para su calculo, el código para visualizar y finalmente el código para modificar el gráfico.
  • No te preocupes si no entiendes el código o los conceptos teóricos, solo es para que te familiarices con el entorno de programación.

Media e histograma de una variable

La media es un valor que representa el centro de un conjunto de datos. En este caso, vamos a calcular la media de la variable weight en el conjunto de datos PlantGrowth. Luego, vamos a graficar un histograma, que es una representación visual de la distribución de los datos. Finalmente, vamos a dibujar la media en el histograma.

# Cargar el conjunto de datos
data("PlantGrowth")

# calcular la media de la variable "weight"
media.pesos <- mean(PlantGrowth$weight)

# Mostrar la media
media.pesos
[1] 5.073
# Graficar un histograma de la variable "weight"
hist(PlantGrowth$weight, main = "Histograma de la variable 'weight'", xlab = "Peso")

# Graficar un histograma de la variable "weight"
hist(PlantGrowth$weight, main = "Histograma de la variable 'weight'", xlab = "Peso")

# Dibujar la media en el histograma
abline(v = media.pesos, col = "red", lwd = 2, lty = 2)

# Leyenda
legend("topright", legend = c("Media"), col = c("red"), lty = 2, cex = 0.8)

El resultado es que podremos generar modelos mentales densamente conectados que permiten reconocer patrones y resolver problemas de forma eficiente, a menudo aparentemente sin esfuerzo (Siegmund, and Peitek y 2017).

Otras Herramientas de Aprendizaje

Programación en lenguaje natural

Comprende el código de R con lenguaje natural. Por ejemplo, en el siguiente código, se le pide a “Karel” que avance un espacio, junte un “coso” y vuelva a avanzar.

# Este programa hace que Karel avance un espacio, junte un coso y vuelva a avanzar
generar_mundo("mundo001")
avanzar()
juntar_coso()
avanzar()
ejecutar_acciones()

Aprendizaje Basado en Proyectos

  • En este enfoque, los estudiantes trabajan en proyectos prácticos que les permiten aplicar los conceptos aprendidos en situaciones reales.
  • Para esto, aplicarás tus conocimientos que aprendas en las lecciones a conjuntos de datos reales y resolverás problemas de bioestadística en tu computadora.

{fig-align-center}

Problemas y Examenes diversos

  • Para evaluar tu progreso, tendrás acceso a problemas y exámenes diversos que te permitirán aplicar los conceptos aprendidos en situaciones nuevas.
  • Este enfoque, basado en aprendizaje cognitivo, busca facilitar la transferencia de habilidades y conocimientos de manera efectiva.
  • Al involucrar diversos sistemas sensoriales, se facilita la retención de información y la aplicación de conceptos a situaciones nuevas (Mayer, 2009).
  • Esto se conoce como codificación dual, que combina palabras e imágenes, aprovechando la capacidad de tu cerebro para procesar la información visual y lingüística. Al presentar información de esta manera integrada, se refuerzan mutuamente, facilitando un aprendizaje más eficaz.
  • Ve los siguientes ejemplos. Algunos ejercicios tardan unos segundos en cargar porque son interactivos. Puedes intentar resolverlos si gustas.

Aplicaciones para ilustrar conceptos de estadística

Espera unos segundos a que cargue el gráfico interactivo. Si no lo puedes minimiza la barra lateral de la aplicación con el bontón <

Ordena el código

Subraya el error

Aprendizaje Visual

Juego Interactivo (tarda unos segundos en cargar)

Video Interactivo

Ritmo y Repetición

  • Permitiremos que los estudiantes trabajen a su propio ritmo y revisen el material según sea necesario.
  • Para evitar aspectos negativos de los cursos en línea, como la procrastinación y la falta de finalización, se establecerán plazos claros y regulares que fomenten un ritmo de estudio constante entre los estudiantes.
  • El cronograma está diseñado en lecciones/módulos de 30 minutos, proporcionando una estructura que facilita el aprendizaje progresivo.

Cada dos semanas, se habilitará un nuevo módulo. Esto te dará tiempo suficiente para revisar el material con calma y fomentamos que almacenes en tu memoria a largo plazo los conceptos aprendidos. Recuerda que aprender muchos conceptos en poco tiempo es contraproducente.

No te quedes fuera, ya casi comenzamos

Proximas fechas de inicio:

Así es, el calendario también es R…

# install.packages("calendR")
library(calendR)

# Vector of NA which length is the number of days of the year or month
myfills <- rep(NA, 72) 
# myfills <- rep(NA, 366) # For leap years

# Add the events to the desired days
myfills[c(1:20)] <- "Comienzo-Introducción"
myfills[c(21:40)] <- "Estadística-I"
myfills[c(41:72)] <- "Estadística-II"

calendario <- calendR(from = "2024-11-01",  # Start date
        to = "2025-01-11",    # End date
        lty = 0,              # Line type
        special.days = myfills,
        special.col = 1:3, 
        weeknames = c("L", "M", "Mi", "J", "V", "S", "D"),
        title = "Fechas del Curso",  # Title
        start = "M",          # Start on Mondays
        legend.pos = "bottom",
        months.pos = 0)       # Left-align month names

calendario

Siguientes Pasos y Contacto

  • Si tienes alguna pregunta, no dudes en contactarme, consulta esta página para más información.
  • Accede a este enlace para más información de cómo inscribirte.
  • Puedes ver Otra clase muestra (15 minutos) en esta página, donde veremos un ejemplo práctico de cómo se aplican los conceptos de R y bioestadística en un problema real.

Fin