Încorporarea exercițiilor R/examene ca formulare în documentele R/Markdown sau Quarto

URMĂREȘTE-NE
16,065FaniÎmi place
1,142CititoriConectați-vă

(Acest articol a fost publicat pentru prima dată pe R/exameneși cu amabilitate a contribuit la R-bloggeri). (Puteți raporta problema legată de conținutul acestei pagini aici)


Doriți să vă distribuiți conținutul pe R-bloggeri? dați clic aici dacă aveți un blog, sau aici dacă nu aveți.

Introducere în noul pachet exams2forms pentru includerea de chestionare sau întrebări individuale din șabloane de exerciții dinamice în documente rmarkdown sau quarto, de exemplu, pentru învățarea în ritm propriu și autoevaluare.

Încorporarea exercițiilor R/examene ca formulare în documentele R/Markdown sau Quarto

Prezentare generală

Noul pachet exams2forms, în colaborare cu Reto Stauffer, oferă mai multe blocuri pentru încorporarea exercițiilor scrise cu examenele pachetului R (cunoscute și sub numele de R/exams) în documente interactive sau chestionare scrise cu rmarkdown sau quarto.

Ideea este că exercițiile dinamice în formatul Rmd (R/Markdown) sau Rnw (R/LaTeX) ale R/examenelor pot fi reutilizate și în documente HTML, pagini web sau cărți online. Acest lucru facilitează utilizarea lor pentru învățarea în ritm propriu și autoevaluare, fără a fi nevoie de un sistem de management al învățării etc. Și pentru evaluările (sumative) aceleași exerciții dinamice ar putea fi apoi exportate în diferite sisteme de management al învățării sau folosite în examene scrise.

Toate tipurile de exerciții R/examen sunt acceptate:

  • Alegere unică (alegere).
  • Alegere multiplă (mchoice).
  • Numeric (num).
  • Text (șir).
  • Cloze combinând toate elementele anterioare (cloze).

Multe dintre ideile, precum și codul din pachet au fost adaptate din pachetul webexercises, scris de Dale Barr și Lisa DeBruine.

Primele exemple

Ca demonstrație rapidă pentru exercițiile R/examene încorporate într-un document HTML, cele două exemple din tutorialul Primii pași sunt incluse mai jos: Exercițiul cu alegere unică swisscapital și exercițiul numeric deriv, ambele în trei variații aleatorii.

Nu există capital de jure, dar capitala de facto și sediul autorităților federale este Berna.

  • Fals
  • Fals
  • Fals
  • Adevărat
  • Fals

Nu există capital de jure, dar capitala de facto și sediul autorităților federale este Berna.

  • Fals
  • Fals
  • Adevărat
  • Fals
  • Fals

Nu există capital de jure, dar capitala de facto și sediul autorităților federale este Berna.

  • Fals
  • Adevărat
  • Fals
  • Fals
  • Fals

Folosind regula produsului pentru (f(x) = g(x) cdot h(x))unde (g(x) := x^{7}) şi (h(x) := e^{3,9 x})obținem ( begin{aligned} f'(x) &= (g(x) cdot h(x))’ = g'(x) cdot h(x) + g(x) cdot h'(x ) \ &= 7 x^{7 – 1} cdot e^{3,9 x} + x^{7} cdot e^{3,9 x} cdot 3,9 \ &= e^{3,9 x} cdot (7 x^6 + 3,9 x^{7}) \ &= e^{3,9 x} cdot x^6 cdot (7 + 3,9 x end{aligned} ) Evaluat la (x = 0,67)raspunsul este ( e^{3,9 cdot 0,67} cdot 0,67^6 cdot (7 + 3,9 cdot 0,67) = 11,860944. ) Astfel, rotunjite la două cifre avem (f'(0,67) = 11,86).

Folosind regula produsului pentru (f(x) = g(x) cdot h(x))unde (g(x) := x^{4}) şi (h(x) := e^{3,1 x})obținem ( begin{aligned} f'(x) &= (g(x) cdot h(x))’ = g'(x) cdot h(x) + g(x) cdot h'(x ) \ &= 4 x^{4 – 1} cdot e^{3,1 x} + x^{4} cdot e^{3,1 x} cdot 3,1 \ &= e^{3,1 x} cdot (4 x^3 + 3,1 x^{4}) \ &= e^{3,1 x} cdot x^3 cdot (4 + 3,1 x end{aligned} ) Evaluat la (x = 0,53)raspunsul este ( e^{3,1 cdot 0,53} cdot 0,53^3 cdot (4 + 3,1 cdot 0,53) = 4,343937. ) Astfel, rotunjite la două cifre avem (f'(0,53) = 4,34).

Folosind regula produsului pentru (f(x) = g(x) cdot h(x))unde (g(x) := x^{5}) şi (h(x) := e^{3,6 x})obținem ( begin{aligned} f'(x) &= (g(x) cdot h(x))’ = g'(x) cdot h(x) + g(x) cdot h'(x ) \ &= 5 x^{5 – 1} cdot e^{3,6 x} + x^{5} cdot e^{3,6 x} cdot 3,6 \ &= e^{3,6 x} cdot (5 x^4 + 3,6 x^{5}) \ &= e^{3,6 x} cdot x^4 cdot (5 + 3,6 x end{aligned} ) Evaluat la (x = 0,7)răspunsul este ( e^{3,6 cdot 0,7} cdot 0,7^4 cdot (5 + 3,6 cdot 0,7) = 22,440478. ) Astfel, rotunjite la două cifre avem (f'(0,7) = 22,44).

Pe lângă întrebarea și elementul de interacțiune, există trei butoane care oferă următoarea funcționalitate.

Buton Funcţie
Verificați răspunsul și afișați dacă este corect sau nu. Când faceți clic, simbolul este comutat și este afișat, pe care se poate face clic pentru a ascunde soluția din nou.
? Afișați explicația completă a soluției corecte.
Treceți la următoarea întrebare.

Includerea explicației soluției este opțională, iar butonul de întrebare următoare este afișat numai dacă există mai multe variante aleatorii ale unei întrebări. Pictogramele și textul mouseover pot fi, de asemenea, adaptate (vezi mai jos).

Pentru a configura un fișier autonom similar cu aceste două exerciții, aplicația exams2webquiz() interfata de la exams2forms pachetul poate fi folosit:

library("exams2forms")
exams2webquiz(c("swisscapital.Rmd", "deriv.Rmd"), n = 3)

Exemple mai elaborate

Pentru a prezenta mai multe tipuri de exerciții, sunt folosite următoarele exemple din pachetul R/examene: majuscule (cu alegere multiplă), funcție (șir/text), fruct (numeric cu tabel și imagini), lm2 (cloze care conține șir, mai multe elemente de alegere, numerice și cu alegere unică, precum și un fișier de date încorporat).

  • Adevărat. New Delhi este capitala Indiei.
  • Adevărat. Varșovia este capitala Poloniei.
  • Fals. Capitala Noii Zeelande este Wellington.
  • Adevărat. Tokyo este capitala Japoniei.
  • Adevărat. Riad este capitala Arabiei Saudite.

glm este funcția R pentru regresia logistică. Vedea ?glm pentru pagina de manual corespunzătoare.

Având în vedere următoarele informații:

Calcula:

Informațiile furnizate pot fi interpretate ca prețul pentru trei coșuri cu fructe cu combinații diferite ale celor trei fructe. Aceasta corespunde unui sistem de ecuații liniare în care prețul celor trei fructe este vectorul necunoscutelor (x):

Sistemul de ecuații liniare este atunci: ( begin{aligned} left( begin{array}{rrr} 0 & 2 & 1 \ 1 & 0 & 2 \ 2 & 1 & 0 end{array} right) cdot left( begin{array}{r} x_1 \ x_2 \ x_3 end{array} right) & = & left( begin{array}{r} 508 \ 735 \ 203 end{array} dreapta) end{aliniat} ) Acest lucru poate fi rezolvat folosind orice algoritm de soluție, de exemplu, eliminarea: ( x_1 = 59, , x_2 = 85, , x_3 = 338. ) Pe baza celor trei prețuri pentru diferite fructe, este ușor să calculați prețul total al celui de-al patrulea coș de fructe prin:

Teorie: Modelele de regresie liniară sunt estimate de obicei prin cele mai mici pătrate obișnuite (OLS). Teorema Gauss-Markov stabilește anumite proprietăți de optimitate: și anume, dacă erorile au așteptare zero, varianță constantă (homoscedastică), fără autocorelație și regresorii sunt exogeni și nu dependenți liniar, estimatorul MCO este cel mai bun estimator liniar imparțial (ALBASTRU).

Aplicație: Coeficienții estimați împreună cu semnificațiile lor sunt raportați în rezumatul modelului de regresie ajustat, arătând că y creste semnificativ cu x (la nivel de 5%).

Call:
lm(formula = y ~ x, data = d)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.66428 -0.16666 -0.00005  0.16780  0.53977 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) 0.008474   0.026627   0.318    0.751    
x           0.637386   0.046427  13.729   <2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.266 on 98 degrees of freedom
Multiple R-squared:  0.6579,    Adjusted R-squared:  0.6544 
F-statistic: 188.5 on 1 and 98 DF,  p-value: < 2.2e-16

Cod: Analiza poate fi replicată în R folosind următorul cod.

## data
d <- read.csv("linreg.csv")
## regression
m <- lm(y ~ x, data = d)
summary(m)
## visualization
plot(y ~ x, data = d)
abline(m)

Din nou, exams2webquiz() funcția poate fi folosită pentru a configura un fișier independent pe baza acelorași exerciții:

exams2webquiz(c("capitals.Rmd", "function.Rmd", "fruit.Rmd", "lm2.Rmd"))

Blocuri de construcție

Pentru a realiza funcționalitatea demonstrată mai sus, pachetul oferă următorul conținut:

  • exams2forms(): Funcția principală de lucru din pachet. Ca si altele exams2xyz() interfețe, aceasta ia un vector sau o listă de fișiere de exerciții și returnează text Markdown, inclusiv fragmente HTML, care poate fi inclus în rmarkdown sau quarto documente. Aceasta include întrebări, interacțiuni adecvate pentru diferitele tipuri de răspunsuri (cu soluții corecte, de asemenea, încorporate în HTML) și, opțional, explicații complete ale soluției.
  • webex.css, webex.js: CSS (Cascading Style Sheets) și fișiere Javascript livrate în pachet și furnizează codul necesar pentru afișarea exercițiului și testului și procesarea diferitelor tipuri de interacțiuni.
  • webquiz(): Funcție de ambalare mică care creează a knitr::html_document() dar include fișierele CSS și Javascript de mai sus.
  • exams2webquiz(): Interfață comodă care combină toate elementele de mai sus. Se instituie o webquiz() document în care exams2forms() este folosit pentru a încorpora exercițiile specificate, apelurile rmarkdown::render() pentru a-l procesa și, implicit, îl afișează în browser. Acest lucru este cel mai util pentru a încerca rapid modul în care exercițiile R/examen pot funcționa în documentele HTML.
  • forms_num(), forms_string(), forms_schoice(), forms_mchoice(): Funcții de ajutor pentru doar încorporarea interacțiunilor utilizatorului pentru diferitele tipuri de exerciții. De obicei, nu este apelat direct de către utilizator.

Fișiere demo

în timp ce exams2webquiz() este convenabil pentru configurarea rapidă a unui document HTML care conține anumite exerciții, de obicei sunt necesare personalizări suplimentare pentru documente mai elaborate. Pentru a demonstra cum funcționează acest lucru exams2forms pachetul oferă două demonstrații rmarkdown fișiere care pot fi descărcate și de aici:

Primul dosar quiz.Rmd redă un număr de exerciții diferite într-un test folosind un singur exams2forms() apel, indicând că results ar trebui incluse "asis":

---
title: "R/exams quiz"
output: exams2forms::webquiz
---

```{r setup, include = FALSE}
## package and list of various exercises
library("exams2forms")
exm <- list(
  c("swisscapital.Rmd", "capitals.Rmd"),
  "deriv.Rnw",
  "deriv2.Rnw",
  "fruit.Rmd",
  "boxplots.Rmd",
  "ttest.Rmd",
  "function.Rmd",
  "lm2.Rnw",
  "fourfold2.Rmd"
)
```

```{r quiz, echo = FALSE, message = FALSE, results = "asis"}
exams2forms(exm, n = 3)
```

The questions.Rmd fișierul arată similar, dar conține secțiuni diferite, fiecare cu o singură întrebare configurată prin exams2forms().

Ambele fișiere pot fi redate în HTML prin intermediul rmarkdown::render() sau făcând clic pe butonul de tricotare după deschiderea fișierelor în RStudio etc.

Configurare și personalizare

Când configurați un document mai elaborat sau chiar o pagină web completă sau o carte online cu rmarkdown sau quartoapoi simplu webquiz() Document HTML furnizat de exams2forms probabil nu este suficient. În acest caz, cel mai bine este să luați fișierele CSS și Javascript din pachet sau să le descărcați aici:

Fișierele pot fi apoi plasate în același folder ca și rmarkdown sau quarto proiect. De asemenea, pot fi adaptate relativ ușor prin modificarea definițiilor de culori, pictograme, text etc. în primele câteva rânduri ale fiecărui fișier.

Pentru a include CSS și Javascript într-un rmarkown proiect, antetul YAML ar trebui să includă:

output:
  html_document:
    css: webex.css
    includes:
      after_body: webex.js

În mod similar, într-un quarto proiectați antetul YAML sau _quarto.yml fișierul ar trebui să includă:

format:
  html:
    css: webex.css
    include-after-body: webex.js

Forme de interacțiune autonome

Deși nu este obiectivul principal al exams2forms pachet, este, de asemenea, posibilă includerea directă a formularelor de interacțiune în documente precum în webexercises pachet, adică fără a configura exerciții complete R/examene. Câteva exemple simple sunt incluse mai jos pentru interacțiuni numerice, text, cu alegere unică și, respectiv, cu alegere multiplă (ambele folosind interacțiuni derulante aici).

Care este răspunsul la întrebarea supremă a vieții, a universului și a tuturor lucrurilor?

Care super-erou este identitatea secretă a lui Bruce Wayne?

Care dintre următorii răufăcători este nu un adversar al lui Batman?

Care dintre următoarele personaje sunt interese romantice ale lui Spider-Man?

  • Mary Jane Watson
  • Oale cu ardei
  • Selina Kyle
  • Gwen Stacy

Fragmentele de cod corespunzătoare incluse în bucățile de cod inline sunt:

  • forms_num(42, width = 10)
  • forms_string("Batman", width = 20, usecase = FALSE)
  • forms_schoice(c("Bane", "Riddler", "Thanos", "Poison Ivy"), c(FALSE, FALSE, TRUE, FALSE), display = "dropdown")
  • forms_mchoice(c("Mary Jane Watson", "Pepper Potts", "Selina Kyle", "Gwen Stacy"), c(TRUE, FALSE, FALSE, TRUE), display = "dropdown")

Dominic Botezariu
Dominic Botezariuhttps://www.noobz.ro/
Creator de site și redactor-șef.

Cele mai noi știri

Pe același subiect

LĂSAȚI UN MESAJ

Vă rugăm să introduceți comentariul dvs.!
Introduceți aici numele dvs.