+ All Categories
Home > Documents > Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza...

Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza...

Date post: 18-Aug-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
25
Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y swirlify César Gamboa Sanabria a,* a Escuela de Estadística, Universidad de Costa Rica Abstract In recent decades, advances in computing have grown tremendously. The rise of new technologies provides a great contribution not only to the simplification of processes, but also to the dissemination of knowledge. Multiple software has been created for various purposes, but not all of them aim to generate interactive learning. The present article offers necessary tools for those who are engaged in teaching statistics mainly to update their teaching methods using the free software R through the packages swirl and swirlify. Thus, with these tools students experience and their programming skills are improved, which is so important nowadays. keywords: R, statistics, swirl, swirlify, Github Resumen En las últimas décadas los avances en la computación han tenido un crecimiento enorme. El auge de las nuevas tecnologías brinda un gran aporte no solo a la simplificación de procesos, sino también a la divulgación del conocimiento. Múltiples software han sido creados con diversos fines, pero no todos tienen como objetivo generar un aprendizaje interactivo. El presente artículo ofrece las herramientas necesarias para que aquellos que se dedican a la enseñanza principal- mente de la estadística puedan actualizar sus métodos didácticos haciendo uso del software libre R mediante los paquetes swirl y swirlify, mejorando así la experiencia de sus estudiantes y fomentando en ellos las habilidades en programación que son tan importantes en la actualidad. Palabras clave: R, estadística, swirl, swirlify, Github 1. Introducción Los lenguajes de programación ofrecen una enorme versatilidad en la solución de problemas aplicados a distintas áreas del conocimiento, lo que los vuelve una herramienta crucial en la resolución de problemas. En el campo de la estadística, muchos son los paquetes informáticos creados para la exploración y el análisis de datos o la depuración de éstos; algunos solamente requieren apuntar y hacer click como SPSS 1 o Minitab 2 mientras que otros requieren aprender a programar, como Stata 3 oR 4 . * email: [email protected] ~ LinkedIn: https://linkedin.com/in/cgamboasanabria ~ Github: https://github.com/cgamboasanabria 1 https://www.ibm.com/analytics/us/en/technology/spss/ 2 http://www.minitab.com 3 http://www.stata.com/ 4 https://cran.r-project.org/ Preprint submitted to Elsevier 20 de mayo de 2017
Transcript
Page 1: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl yswirlify

César Gamboa Sanabriaa,∗

aEscuela de Estadística, Universidad de Costa Rica

Abstract

In recent decades, advances in computing have grown tremendously. The rise of new technologies provides a greatcontribution not only to the simplification of processes, but also to the dissemination of knowledge. Multiplesoftware has been created for various purposes, but not all of them aim to generate interactive learning.

The present article offers necessary tools for those who are engaged in teaching statistics mainly to update theirteaching methods using the free software R through the packages swirl and swirlify. Thus, with these toolsstudents experience and their programming skills are improved, which is so important nowadays.

keywords: R, statistics, swirl, swirlify, Github

Resumen

En las últimas décadas los avances en la computación han tenido un crecimiento enorme. El auge de las nuevastecnologías brinda un gran aporte no solo a la simplificación de procesos, sino también a la divulgación delconocimiento. Múltiples software han sido creados con diversos fines, pero no todos tienen como objetivo generarun aprendizaje interactivo.

El presente artículo ofrece las herramientas necesarias para que aquellos que se dedican a la enseñanza principal-mente de la estadística puedan actualizar sus métodos didácticos haciendo uso del software libre R mediante lospaquetes swirl y swirlify, mejorando así la experiencia de sus estudiantes y fomentando en ellos las habilidadesen programación que son tan importantes en la actualidad.

Palabras clave: R, estadística, swirl, swirlify, Github

1. Introducción

Los lenguajes de programación ofrecen una enorme versatilidad en la solución de problemas aplicados a distintasáreas del conocimiento, lo que los vuelve una herramienta crucial en la resolución de problemas. En el campode la estadística, muchos son los paquetes informáticos creados para la exploración y el análisis de datos o ladepuración de éstos; algunos solamente requieren apuntar y hacer click como SPSS1 o Minitab2 mientras queotros requieren aprender a programar, como Stata3 o R4.

∗email: [email protected] ~ LinkedIn: https://linkedin.com/in/cgamboasanabria ~ Github:https://github.com/cgamboasanabria

1https://www.ibm.com/analytics/us/en/technology/spss/2http://www.minitab.com3http://www.stata.com/4https://cran.r-project.org/

Preprint submitted to Elsevier 20 de mayo de 2017

Page 2: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

El presente artículo ejemplifica como el lenguaje de programación R puede ser utilizado como herramienta para laenseñanza de la estadística, pues este, al ser un software libre, cuenta con una gran cantidad de colaboradoresque constantemente crean códigos dirigidos a solucionar distintos problemas; esto lo vuelve uno de los lenguajesmás versátiles en la actualidad.

El método clásico de enseñanza de la estadística (por lo general a nivel universitario) ha sido relegar a un salónde clases la labor de mostrarle al estudiante las diversas técnicas y procedimientos teórico-prácticos necesariospara un buen trabajo estadístico. Sin embargo, en muchas ocasiones esta forma de enseñanza no logra alcanzar ladivulgación deseada pues no todos los que desean aprender tienen las mismas facilidades económicas, sociales ogeográficas, por lo que el uso del internet genera una diferencia crucial en los métodos de enseñanza modernos.

En la actualidad es posible utilizar internet para hacer del material didáctico algo más accesible en todo momentoy lugar, no solo en una región sino a nivel mundial. Este hecho implica un fortalecimiento de la enseñanza,generando en el educador una mayor reputación y prestigio en las diversas comunidades en línea.

A nivel Universitario es frecuente que un estudiante asista a clases para aprender a construir modelos de regresión.Si el profesor le explica los conceptos teóricos y realiza algunos ejemplos pequeños pues las operaciones matricialespueden hacerse tediosas dependiendo de la cantidad de datos. El estudiante es perfectamente capaz de entendercómo se obtienen los coeficientes de regresión y demás procesos asociados, pero aprenderá más si los datosutilizados son más abundantes, con diversas variantes, posibles errores, etc. Por medio de códigos sencillos latecnología actual le permite al educador agilizar los procesos algebráicos y matriciales que antes llevaban mucho.Algunas veces el estudiante no alcanzará a tomar nota de todos los comandos que el profesor realiza durante todala clase, por lo que es importante ofrecer un medio al que el estudiante tenga acceso en todo momento.

El lenguaje de programación R cuenta con muchos paquetes de funciones que se orientan a diversos problemas demúltiples áreas del conocimiento, esto lo vuelve una de las herramientas más importantes en la actualidad por loque resulta importante utilizar esta herramienta como método de enseñanza. Enseñar a utilizar este lenguaje enun salón de clases por medio de muchos ejemplos quizá no sea el mejor método pues la mejor forma de aprenderes por la experiencia, bajo este enfoque se utiliza el paquete swirl.

Se introduce en el presente artículo el uso de los paquetes swirl(Kross et al. 2017), creado por creado por SeanKross, Nick Carchedi, Bill Bauer y Gina Grdina y swirlify (Kross and Carchedi 2016), creado por Sean Kross,Nick Carchedi. Este paquete busca que el estudiante logre aprender a programar con el lenguaje R por medio delecciones interactivas creadas por el profesor. Con lecciones interactivas se hace referencia a que el estudiantetendrá que utilizar R (preferiblemente mediante el entorno de desarrollo integrado RStudio5) para responderdirectamente en la consola las preguntas que irán apareciendo en la misma.

En una primera sección de muestra como generar las lecciones interactivas haciendo uso de las ocho funcionesdisponibles en el paquete swirlify para crear las preguntas necesarias dependiendo del tema a enseñar. Una vezexplicada la construcción de las lecciones se muestra la forma en que dichas lecciones pueden ser puestas a pruebapor el creador de las mismas. Finalmente, se ofrecen dos opciones para divulgar las lecciones creadas a todosaquellos que estén interesados en realizarlas, así como algunas consideraciones finales referentes a la enseñanzamediante el uso del lenguaje de programación R.

2. Creación de lecciones interactivas

Para poder crear las lecciones interactivas es necesario tener instalado el software R en su versión 3.1.0 osuperior; si se es usuario de Linux, se recomienda seguir las instrucciones que están en el siguiente en el sitio:https://github.com/swirldev/swirl/wiki/Installing-swirl-on-Linux. La instalación de R dependerá si se utilizaWindows6 o Mac7, por lo que se recomienda ver los tutoriales cortesía de Roger Peng del departamento deBioestadística de la Universidad Johns Hopkins.

5https://www.rstudio.com/6http://youtu.be/mfGFv-iB7247http://youtu.be/Icawuhf0Yqo

2

Page 3: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Además, se recomienda tener instalado el RStudio pues esta interfaz facilita la creación de las lecciones. Una vezhecho esto, es necesario instalar los paquetes swirl y swirlify, para ello se ejecuta el siguiente comando.

install.packages(c("swirl", "swirlify"), dependencies=TRUE)

Con los paquetes instalados, es necesario cargarlos, se sugiere ejecutar el siguiente comando.

lapply(c("swirl", "swirlify"), require, character.only = TRUE)

Las lecciones interactivas se crean (o se se modifican si ya fueron creadas) utilizando diversas funciones delpaquete swirlify mediante conjuntos de lecciones individuales. La extensión de las diversas lecciones dependeráenteramente del profesor, pero como sugerencia general se recomienda crear varias lecciones cortas en vez degenerar pocas lecciones pero que sean demasiado largas.

Para crear una nueva lección lo primero que se debe hacer es seleccionar el directorio donde la misma va a sercreada, esto puede lograrse mediante el comando ctrl+shift+h o utilizando la función setwd() de R de la siguientemanera.

setwd("Dirección_de_la_carpeta")

Una vez seleccionado el directorio se utiliza la función new_lesson() para crear la primera lección.

new_lesson("Mi leccion", "Mi curso")

Esto creará, en el directorio que fue seleccionado previamente, una carpeta llamada “Mi_curso”. Dentro de estacarpeta se encontrará otra carpeta llamada “Mi_leccion”, la cual contiene cuatro archivos:

customTests.R: Se especifican las funciones propias para probar si las respuestas del usuario (en este casoel estudiante) son correctas o incorrectas.

dependson.txt: Se usa para listar los nombres de los paquetes que swirl debe comprobar que esténinstalados antes de iniciar la lección, esto con el fin de que al ejecutar alguna función no se generen errorespor no tener instalados los paquetes necesarios.

initLesson.R: Es un script en el cual lo que se escriba dentro de él aparecerá al inicio de la lección. Puedencargarse los datos a utilizar dentro de él o crear funciones que se usarán pronto en la misma lección.

lesson.yaml: Es donde se colocan las preguntas. Cada una va precedida por un “-”.

Generalmente, al ejecutar la función new_lesson(), el archivo lesson.yaml se abre automáticamente cuyocontenido es el siguiente.

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

Existen una serie de funciones para agregar las preguntas que se mostrarán al estudiante, las cuales empiezan conwq_, puede verse el objetivo de cada una en la documentación el paquete ejecutando el comando ??swirlify.

3

Page 4: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Texto. La funcionalidad más básica de este tipo de lecciones interactivas es mostrarle al estudiante un simplemensaje de texto, el resultado mostrado puede verse en la figura 1. Cuando éste ha terminado la lectura del mismosolamente debe presionar enter para empezar. El código necesario para ejecutar esta función es el siguiente.

wq_message()

Con esto, el archivo lesson.yaml debe quedar de la siguiente manera.

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

Comando. Es posible agregar una pregunta de tal forma que estudiante tenga que obtener un resultado pormedio de un comando. Por ejemplo, si el profesor desea que su alumno ejecute 2+2 para obtener como resultado 4pero el estudiante ejecutó el comando 2*2, que también genera 4, entonces se considerará como una respuestacorrecta pero se añadirá una nota de que el comando esperado era 2+2, pero que 2*2 también funciona. Paraagregar este tipo de preguntas basta con ejecutar el siguiente comando.

wq_command()

Ejecutar esta función modificará el contenido del archivo lesson.yaml al igual que sucedió al agregar un mensajede texto para generar un resultado como el de la figura 2. El resultado del archivo lesson.yaml debería ser elque sigue.

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

4

Page 5: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura. Las figuras también están disponibles mediante la función wq_figure(). En este caso, cuando el estudiantellegue a este tipo de preguntas verá en la pestaña de gráficos una figura determinada por el profesor de maneraautomática, acompañada de un mensaje de texto en la consola de R. El profesor debe generar un script en dondese ejecute el comando que genera el gráfico deseado y guardarlo en la carpeta del curso, de esta forma el estudianteobservará en su pantalla un resultado similar al de la figura 3. Esto se logra con el siguiente comando para luegomodificar el archivo lesson.yaml.

wq_figure()

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

- Class: figureOutput: ' En la pestana de graficos se muestra un grafico de cajas de la longitud

de la planta para cada especie. Considera que hay mucha variabilidad entreespecies? '

Figure: figura1.RFigureType: new

COn el argumento FigureType: new se especifica que la figura debe aparecer como una figura nueva en laventana gráfica de RStudio, mientras que si se tiene FigureType: add entonces la nueva figura aparecerá sobrela anterior. Así, cuando el estudiante llegue a esta parte, el gráfico se mostrará de manera automática.

Funciones. El uso de funciones es algo muy común, es por ello que la función wq_script() permite que elestudiante ejecute alguna función que previamente fue guardada en una carpeta llamada scripts dentro de lacarpeta Mi_curso, aunque suele ser algo más complicado de usar. A modo de ejemplo se muestra una funciónsencilla que recibe como argumentos la cantidad de observaciones y la candidad de grupos para luego obtener losgrados de libertad de tratamientos, del error y del total.

grados<-function(observaciones, grupos){#genere ahora una función llamada "grados" que reciba como argumento la cantidad#de observaciones y de grupos para que muestre los grados de libertad de#tratamiento, del error y del total en un solo vector.

}

Esta pseudofunción (pues en realidad no calcula nada), una vez creada, debe ir en una carpeta llamada scriptsdentro del directorio “Mi_curso” que fue creado inicialmente.

5

Page 6: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

save.image("./Mi_curso/scripts/grados.R")

El script grados.R es el que el estudiante editará y éste será comparado con el script generado por el profesor(que sería el esperado), el resultado mostrado al estudiante es similar al de la figura 4. Este script de comparaciónllevará el mismo nombre que la función pero agregando siempre -correct.R al final:

grados<-function(observaciones, grupos){#genere ahora una función llamada "grados" que reciba como argumento la cantidad#de observaciones y de grupos para que muestre los grados de libertad de#tratamiento, del error y del total en un solo vector.tratamientos<-grupos-1error<-observaciones-grupostotal<-observaciones-1

c(tratamientos, error, total)}

Este script también debe ser guardado en la carpeta scripts.

save.image("./Mi_curso/scripts/grados-correct.R")

Ahora es necesario crear un script que sirva para comparar los creados por el estudiante y por el profesor, estescript se llamará customTests.R y será similar al siguiente.

test_grados<-function(){#La función try ayuda a que si el estudiante comete un error#la sesión de swirl no se cierre

try({

#La función get recibe lo que el estudiante colocó como función

func<-get('grados', globalenv())

#Luego se compara el comportamiento de `func` con algunos resultados

t1<-identical(func(5, 3), c(2,2,4))t2<-identical(func(10, 3), c(2,7,9))t3<-identical(func(7, 2), c(1,5,6))ok<-all(t1, t2, t3)

}, silent = TRUE)

#Se verifica que los resultados sean correctos

exists('ok') && isTRUE(ok)}

Una vez editados estos tres archivos basta con ejecutar la función correspondiente y editar el archivo lesson.yaml.

wq_script()

6

Page 7: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

- Class: figureOutput: ' En la pestana de graficos se muestra un grafico de cajas de la longitud

de la planta para cada especie. Considera que hay mucha variabilidad entreespecies? '

Figure: figura1.RFigureType: new

- Class: scriptOutput: ' Ahora, basandose unicamente en la base de datos, genere ahora una funcion

llamada *grados* que reciba como argumento la cantidad de observaciones y degrupos para que muestre los grados de libertad de tratamiento, del error y deltotal en un solo vector. '

AnswerTests: test_grados()Hint: ' Los grados de libertad son k-1 para tratamientos, n-k para error y n-1 para el

total, donde n es el total de observaciones y k el total de grupos... 'Script: grados.R

Cuando el estudiante llegue a esta pregunta, el script suma.R se abrirá automáticamente para que el estudiante loedite y, una vez editado, éste debe ser salvado y luego ejecutar submit() en la consola para realizar la comparacióny poder seguir avanzando, como se muestra en la figura 5.

Valor exacto. En algunas ocasiones la respuesta correcta a una pregunta es un valor numérico en particular queel estudiante debe ingresar de una manera similar a la figura 6. Este tipo de preguntas también se encuentrandisponibles mediante la siguiente función wq_numerical(), tras ejecutarla se modifica el archivo lesson.yaml.

wq_numerical()

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemplo

7

Page 8: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Version: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

- Class: figureOutput: ' En la pestana de graficos se muestra un grafico de cajas de la longitud

de la planta para cada especie. Considera que hay mucha variabilidad entreespecies? '

Figure: figura1.RFigureType: new

- Class: scriptOutput: ' Ahora, basandose unicamente en la base de datos, genere ahora una funcion

llamada *grados* que reciba como argumento la cantidad de observaciones y degrupos para que muestre los grados de libertad de tratamiento, del error y deltotal en un solo vector. '

AnswerTests: test_grados()Hint: ' Los grados de libertad son k-1 para tratamientos, n-k para error y n-1 para el

total, donde n es el total de observaciones y k el total de grupos... 'Script: grados.R

- Class: exact_questionOutput: ' De acuerdo a la funcion generada anteriormente, indique cuantos son los

grados de libertad del error... 'CorrectAnswer: 147AnswerTests: omnitest(correctVal=147)Hint: ' Los grados de libertad del error son n-k... '

Texto. Es posible también generar preguntas cuya respuesta sea una palabra o frase que el estudiante debeindicar, como se ejemplifica en la figura 7, por medio de la función wq_text(). De igual forma se modifica elarchivo lesson.yaml.

wq_text()

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: text

8

Page 9: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Output: ' Este ejemplo consiste en una comparacion entre tres poblaciones.El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

- Class: figureOutput: ' En la pestana de graficos se muestra un grafico de cajas de la longitud

de la planta para cada especie. Considera que hay mucha variabilidad entreespecies? '

Figure: figura1.RFigureType: new

- Class: scriptOutput: ' Ahora, basandose unicamente en la base de datos, genere ahora una funcion

llamada *grados* que reciba como argumento la cantidad de observaciones y degrupos para que muestre los grados de libertad de tratamiento, del error y deltotal en un solo vector. '

AnswerTests: test_grados()Hint: ' Los grados de libertad son k-1 para tratamientos, n-k para error y n-1 para el

total, donde n es el total de observaciones y k el total de grupos... 'Script: grados.R

- Class: exact_questionOutput: ' De acuerdo a la funcion generada anteriormente, indique cuantos son los

grados de libertad del error... 'CorrectAnswer: 147AnswerTests: omnitest(correctVal=147)Hint: ' Los grados de libertad del error son n-k... '

- Class: text_questionOutput: ' Existen al menos dos supuestos fundamentales que se deben tener en cuenta al

hacer un Analisis de Variancia Parametrico, uno de ellos se relaciona con ladistribucion que deben seguir los errores y se trata de la distribucion: '

CorrectAnswer: NormalAnswerTests: omnitest(correctVal='Normal')Hint: ' Es el otro nombre que recibe la distribucion Gaussiana... '

Selección única. Existe una función para agregar preguntas cuya respuesta sea una única opción de entre variasposibles respuestas para que el estudiante seleccione la correcta, como aparece en la figura 8, esto se hace mediantela siguiente función.

wq_multiple()

El contenido del archivo lesson.yaml es el siguiente.

9

Page 10: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

- Class: figureOutput: ' En la pestana de graficos se muestra un grafico de cajas de la longitud

de la planta para cada especie. Considera que hay mucha variabilidad entreespecies? '

Figure: figura1.RFigureType: new

- Class: scriptOutput: ' Ahora, basandose unicamente en la base de datos, genere ahora una funcion

llamada *grados* que reciba como argumento la cantidad de observaciones y degrupos para que muestre los grados de libertad de tratamiento, del error y deltotal en un solo vector. '

AnswerTests: test_grados()Hint: ' Los grados de libertad son k-1 para tratamientos, n-k para error y n-1 para el

total, donde n es el total de observaciones y k el total de grupos... 'Script: grados.R

- Class: exact_questionOutput: ' De acuerdo a la funcion generada anteriormente, indique cuantos son los

grados de libertad del error... 'CorrectAnswer: 147AnswerTests: omnitest(correctVal=147)Hint: ' Los grados de libertad del error son n-k... '

- Class: text_questionOutput: ' Existen al menos dos supuestos fundamentales que se deben tener en cuenta al

hacer un Analisis de Variancia Parametrico, uno de ellos se relaciona con ladistribucion que deben seguir los errores y se trata de la distribucion: '

CorrectAnswer: NormalAnswerTests: omnitest(correctVal='Normal')Hint: ' Es el otro nombre que recibe la distribucion Gaussiana... '

- Class: mult_question

10

Page 11: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Output: ' Basandose en el criterio del p-value, con una significancia de 0.05,indique la respuesta correcta '

AnswerChoices: No hay diferencias significativas ; Hay diferencias significativasCorrectAnswer: Hay diferencias significativas entre las 3 especiesAnswerTests: omnitest(correctVal='Hay diferencias significativas entre las 3 especies')Hint: ' Cuando el p-value es menor al nivel de significancia fijado entonces se rechaza

la hipotesis nula que en este caso es de igualdad de promedios entre grupos. '

Sitios web. La última función disponible es una que permite agregar enlaces a sitios web para que el estudiantelos visite si así lo desea como se muestra en la figura 9, esto es posible mediante el siguiente comando.

wq_video()

Finalmente, el archivo lesson.yaml queda de la siguiente manera.

- Class: metaCourse: Mi cursoLesson: Mi leccionAuthor: Nombre del creador de la leccionType: StandardOrganization: Nombre de la universidad por ejemploVersion: 2.4.3

- Class: textOutput: ' Este ejemplo consiste en una comparacion entre tres poblaciones.

El primer paso es cargar los datos que se utilizaran, que sonmediciones de tres tipos de plantas (setosa, versicolor yvirginica), estos valores se asignaran a tres objetos diferentes... '

- Class: cmd_questionOutput: ' Ejecute la funcion data() para cargar la base de datos Iris. 'CorrectAnswer: data(iris)AnswerTests: omnitest( correctExpr=' data(iris) ', correctVal= data(iris) )Hint: ' Solo ejecute data(iris) '

- Class: figureOutput: ' En la pestana de graficos se muestra un grafico de cajas de la longitud

de la planta para cada especie. Considera que hay mucha variabilidad entreespecies? '

Figure: figura1.RFigureType: new

- Class: scriptOutput: ' Ahora, basandose unicamente en la base de datos, genere ahora una funcion

llamada *grados* que reciba como argumento la cantidad de observaciones y degrupos para que muestre los grados de libertad de tratamiento, del error y deltotal en un solo vector. '

AnswerTests: test_grados()Hint: ' Los grados de libertad son k-1 para tratamientos, n-k para error y n-1 para el

total, donde n es el total de observaciones y k el total de grupos... 'Script: grados.R

- Class: exact_question

11

Page 12: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Output: ' De acuerdo a la funcion generada anteriormente, indique cuantos son losgrados de libertad del error... '

CorrectAnswer: 147AnswerTests: omnitest(correctVal=147)Hint: ' Los grados de libertad del error son n-k... '

- Class: text_questionOutput: ' Existen al menos dos supuestos fundamentales que se deben tener en cuenta al

hacer un Analisis de Variancia Parametrico, uno de ellos se relaciona con ladistribucion que deben seguir los errores y se trata de la distribucion: '

CorrectAnswer: NormalAnswerTests: omnitest(correctVal='Normal')Hint: ' Es el otro nombre que recibe la distribucion Gaussiana... '

- Class: mult_questionOutput: ' Basandose en el criterio del p-value, con una significancia de 0.05,

indique la respuesta correcta 'AnswerChoices: No hay diferencias significativas; Hay diferencias significativasCorrectAnswer: Hay diferencias significativas entre las 3 especiesAnswerTests: omnitest(correctVal='Hay diferencias significativas entre las 3 especies')Hint: ' Cuando el p-value es menor al nivel de significancia fijado entonces se rechaza

la hipotesis nula que en este caso es de igualdad de promedios entre grupos. '

- Class: videoOutput: ' El nivel de significancia no necesariamente es de 0.05 todo el tiempo,

existen varios criterios que pueden servir de guia para fijar este valor. Sidesea ver un documento en el que se profundiza mas sobre este tema solo escriba Yes... '

VideoLink: http://www.scaillet.ch/risk_mngt/ASA_statement.pdf

3. Prueba de lecciones interactivas

Una vez hechas las preguntas, es momento de probar la lección. Sea lo que sea que se agregue a una lección, debeagregarse a lo que se conoce como course manifest, basta con ejecutar el siguiente comando.

add_to_manifest()

Esto creará en la carpeta “Mi_curso” un archivo llamado MANIFEST. Este archivo mantiene el orden en que sedesea que aparezcan las lecciones y también sigue el rastro de lo que contienen las mismas, de esta manera sise quieren agregar archivos u otras cosas, el estudiante no podrá acceder hasta haber completado los requisitos.Básicamente lo que hace este archivo es mantener las cosas en orden. Lo siguiente es poner a prueba la lección.

test_lesson()

En la consola debería aparecer algo como esto:

##### Begin testing: Mi leccion ########## End testing: Mi leccion #####

De ser así, significa que no hubo problemas y que la lección funciona correctamente. El idioma predeterminadopara algunos de los comentarios (principalmente cuando el estudiante ingresa una respuesta errónea) de swirl esel inglés, sin embargo es posible modificar esto para que dichos comentarios aparezcan en español; para ello es

12

Page 13: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

necesario ejecutar el comando select_language(language = "spanish", append_rprofile = FALSE). Si seusa el argumento append_rprofile=TRUE entonces se agragará al Rprofile (que manipula las opciones iniciales)una instrucción para que los comentarios de swirl sean siempre en el idioma seleccionado (“chinese_simplified”,“english”, “french”, “german”, “korean”, “spanish” o “turkish”). Para ver como se ejecuta la lección basta conusar el siguiente comando.

demo_lesson()#Pueden probarse ciertas partes modificando los argumentos de la función

En la consola aparecerá lo fué escrito en los ejemplos anteriores, ahí es donde también se deben responder laspreguntas. Los resultados en la consola de cada tipo de pregunta agregada se muestran al final del presentedocumento.

4. Divulgación de las lecciones

Una vez creado, revisado y probado el curso es deseable compartirlo con los estudiantes o interesados en el mismo,para lograr esto hay dos formas que son las más recomendadas.

Divulgar el curso como un archivo.. La forma clásica de divulgación de la información es mediante archivos. Pormedio del paquete swirlify emplearemos el siguiente método para crear un archivo con extensión .swc queservirá como medio de instalación del curso para los estudiantes:

1. Ejecutar la función set_lesson(). Tras esto aparecerá una pantalla para seleccionar la sesión que se deseacompartir, que es el archivo con extensión .yaml.

2. Para crear el archivo con extensión .swc se ejecuta la función pack_course. El archivo .swc aparecerá en elmismo directorio de trabajo fijado al inicio, pero es posible cambiarlo mediante el argumento export_path.

3. El archivo con extensión .swc se envía a los estudiantes vía email, dropbox, etc.

4. El estudiante puede instalar (si ya cargó el paquete swirl) el curso desde el archivo .swc mediante la funcióninstall_course(), la cual abrirá una pantalla para seleccionar el archivo .swc. Luego basta con ejecutar lafunción swirl y seguir las instrucciones.

Divulgar mediante el Swirl Course Network (SCN).. SCN8 es un repositorio público de cursos usando el paqueteswirl. Para poder agregar un curso primero es necesario crear una cuenta en Github y luego seguir los siguientespasos:

1. Crear el archivo con extensión .swc como fue explicado en la sección anterior.

2. Una vez iniciada la sesión en Github ir al sitio https://github.com/swirldev/scn y seleccionar donde dice Fork.

3. Añadir el archivo con extensión .swc al Fork generado.

4. Añadir un archivo con extensión .Rmd desde RStudio al Fork generado. Este archivo debe ser similar alsiguiente:

---title: "Mi curso"---

### Autor

8Para más información visitar http://swirlstats.com/scn/.

13

Page 14: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

- César Gamboa S.

### Co-Autores

- Siméon-Denis Poisson- Gabriel Cramer- Franklin Chang-Díaz- Elon Musk

### Descripción

Este curso muestra las funcionalidades básicas de swirl y swirlify.

### Instalación

swirl::install_course("Mi curso")

#### Manual de instalación

1. Descargar [este](http://swirlstats.com/scn/Mi_Curso.swc) archivo.2. Ejecutar `swirl::install_course()` en la consola.3. seleccionar el archivo que acaba de descargarse.

### Sitio web

- https://github.com/cgamboasanabria/repositorio_de_cursos

5. Ejecutar en la consola rmarkdown::render_site() cuando el directorio esté listo en el Fork.

6. Añadir, dar commit y push a los cambios en Github, luego enviar un Pull request.

Tras añadir el curso al SCN los estudiantes estará debidamente autorizados para instalar el curso utilizando elcomando install_course("Nombre del curso") del paquete swirl.

Registros de progreso de los estudiantes.. Es posible que el profesor desee llevar un resgistro del avance de susestudiantes. Esto también es posible modificando el archivo initLesson.R y utilizando Google Forms. El detallede este proceso puede encontrarse en el sitio http://swirlstats.com/swirlify/classroom.html.

5. Consideraciones finales

La enseñanza de la estadística en el siglo XXI no debe limitarse solamente a impartir una clase magistral en lascuatro paredes de un salón de clases, debe hacerse de una forma más interactiva y atractiva para los estudiantes;que éstos se sientan parte importante del proceso de aprendizaje. En este sentido, sacarle el máximo provecho alas herramientas aquí propuestas estimula la experiencia de los estudiantes en el aprendizaje de los temas tratadospor el profesor, además de ayudar a consolidar las habilidades en programación que resultan tan importantes enla actualidad.

Aprender algún lenguaje de programación es de gran importancia en la actualidad debido al manejo de grandesvolúmenes de información, y la mejor manera de hacerlo es utilizando directamente un lenguaje determinado,que en el caso del presente artículo es R. El uso conjunto de los paquetes ‘swirl y swirlify ofrecen una opciónversatil y fácil de utilizar tanto para profesores como para estudiantes en pro de ampliar los conocimientos que yaposeen o bien agregar nuevos, además de estimular la creatividad en un aspecto que algunas ocasiones suele sermuy abstracta debido a la cantidad y complejidad de las líneas de programación que muchas veces se muestranen los salones de clases o algunos sitios de Internet.

14

Page 15: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

6. Referencias

Kross, Sean, and Nick Carchedi. 2016. Swirlify: A Toolbox for Writing ’Swirl’ Courses. https://CRAN.R-project.org/package=swirlify.

Kross, Sean, Nick Carchedi, Bill Bauer, and Gina Grdina. 2017. Swirl: Learn R, in R. https://CRAN.R-project.org/package=swirl.

15

Page 16: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Índice de figuras

1. Resultado al agregar un mensaje de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. Resultado de generar un comando . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

3. Resultado de generar una figura determinada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4. Script creado por parte del estudiante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5. Script enviado por parte del estudiante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

6. Resultado de pedir al estudiante que genere un valor exacto . . . . . . . . . . . . . . . . . . . . 22

7. Resultado de generar una respuesta de texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

8. Resultado de generar una pregunta con varias opciones de respuesta . . . . . . . . . . . . . . . . 24

9. Resultado de sugerir al estudiante un sitio web . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

16

Page 17: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 1: Resultado al agregar un mensaje de texto

17

Page 18: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 2: Resultado de generar un comando

18

Page 19: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 3: Resultado de generar una figura determinada

19

Page 20: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 4: Script creado por parte del estudiante

20

Page 21: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 5: Script enviado por parte del estudiante

21

Page 22: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 6: Resultado de pedir al estudiante que genere un valor exacto

22

Page 23: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 7: Resultado de generar una respuesta de texto

23

Page 24: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 8: Resultado de generar una pregunta con varias opciones de respuesta

24

Page 25: Formas interactivas de enseñanza mediante el lenguaje R ... · Formas interactivas de enseñanza mediante el lenguaje R: Los paquetes swirl y ... Palabras clave:R,estadística,swirl,swirlify,Github

Figura 9: Resultado de sugerir al estudiante un sitio web

25


Recommended