-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.Rmd
118 lines (80 loc) · 3.75 KB
/
README.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
---
output: github_document
---
<!-- README.md is generated from README.Rmd. Please edit that file -->
```{r, include = FALSE}
knitr::opts_chunk$set(
collapse = TRUE,
comment = "#>",
fig.path = "man/figures/README-",
out.width = "100%"
)
```
# moodleStats <a href="https://lightbridge-ks.github.io/moodleStats/"><img src="man/figures/logo.png" align="right" height="138" /></a>
<!-- badges: start -->
[![Lifecycle: experimental](https://img.shields.io/badge/lifecycle-experimental-orange.svg)](https://lifecycle.r-lib.org/articles/stages.html#experimental) [![R-CMD-check](https://github.com/Lightbridge-KS/moodleStats/actions/workflows/R-CMD-check.yaml/badge.svg)](https://github.com/Lightbridge-KS/moodleStats/actions/workflows/R-CMD-check.yaml)
[![Codecov test coverage](https://codecov.io/gh/Lightbridge-KS/moodleStats/branch/main/graph/badge.svg)](https://app.codecov.io/gh/Lightbridge-KS/moodleStats?branch=main)
<!-- badges: end -->
> A high-level, ready-to-use R package for quiz & questions analysis of [Moodle Grades Report](https://docs.moodle.org/311/en/Quiz_reports#Grades_report)
# Installation
You can install the development version of moodleStats from [GitHub](https://github.com/) with:
``` r
# install.packages("remotes")
remotes::install_github("Lightbridge-KS/moodleStats")
```
# Goal
The goal of this package it to provide a high-level functions for analysis of [Moodle Grades Report](https://docs.moodle.org/311/en/Quiz_reports#Grades_report) such as calculation of **descriptive statistics** for quiz & questions, and performing an **item analysis**.
# Workflow
```{r load-pkg}
library(moodleStats)
```
## Read Data
Read Moodle Grades Report from `.csv` file into a Data Frame.
```{r grades_df}
grades_df <- readr::read_csv(moodleStats_example("grades_report.csv"))
```
```{r}
head(grades_df)
```
## Prepare Data
Cleaning and filtering data can be done in 1 step using `prep_grades_report()`
```{r grades_df_preped}
grades_df_preped <- prep_grades_report(grades_df,
choose_state = "Finished", # 1. choose only "Finished" attempt
choose_grade = "max", # 2. choose only the best score of each student
choose_time = "first" # 3. choose the first time that student submitted
)
head(grades_df_preped)
```
## Quiz Metadata
Show quiz metadata such as maximum settings of quiz and questions by `quiz_meta()`
```{r grades_df_meta}
quiz_meta(grades_df_preped)
```
## Quiz Summary
`summary_quiz()` calculates various quiz summary statistics, and combine it into 1 row data frame.
```{r quiz_report_df}
quiz_report_df <- summary_quiz(grades_df_preped)
quiz_report_df
```
## Question Summary and Item Analysis
`summary_questions()` calculates various question summary statistics and item analysis into a data frame.
```{r question_report_df}
question_report_df <- summary_questions(grades_df_preped)
```
Here is summary statistics for each questions.
```{r}
question_report_df %>%
dplyr::select(Questions:SD)
```
And, here is an **item analysis** for Moodle Grades Report.
- **`Difficulty_Index`** is for **Item Difficulty Index (p)**, a measure of the *proportion* of examinees who answered the item correctly.
- **`Discrimination_Index`** is for **Item Discrimination Index (r)**, a pairwise *point-biserial correlation* between the score of each questions and total score of the quiz.
```{r}
question_report_df %>%
dplyr::select(Questions, Difficulty_Index:p.value)
```
# Learn more
- [Get started using moodleStats](https://lightbridge-ks.github.io/moodleStats/articles/moodleStats.html)
------------------------------------------------------------------------
Last updated: `r format(Sys.time(), '%d %B %Y')`