Git Product home page Git Product logo

shinyitemanalysis's Introduction

ShinyItemAnalysis

Test and item analysis via shiny

R-CMD-check GHversion online version cranlogs

Overview

ShinyItemAnalysis is an R package including functions and interactive shiny application for the psychometric analysis of educational tests, psychological assessments, health-related and other types of multi-item measurements, or ratings from multiple raters. Offered methods include:

  • Exploration of total and standard scores
  • Analysis of measurement error and reliability
  • Analysis of correlation structure and validity
  • Traditional item analysis
  • Item analysis with regression models
  • Item analysis with IRT models
  • Detection of differential item functioning
  • ... and more via add-on modules

Number of toy datasets is available, the interactive application also allows the users to upload and analyze their own data and to automatically generate PDF or HTML reports.

ShinyItemAnalysis is available online at Czech Academy of Sciences and shinyapps.io. It can be also downloaded from CRAN. Visit our web page about ShinyItemAnalysis to learn more!

Installation

The easiest way to get ShinyItemAnalysis is to install it from CRAN:

install.packages("ShinyItemAnalysis")

Click here for more information about installing versions 1.4.0+

From ShinyItemAnalysis version 1.4.0 on, only the most necessary package dependencies are installed out of the box. You may be prompted later on to install additional packages ensuring a smooth run of the interactive application. To install everything straight out, use rather:

install.packages("ShinyItemAnalysis", dependencies = TRUE)

Or you can get the newest development version from GitHub:

if(!require(remotes)) install.package("remotes")
remotes::install_github("patriciamar/ShinyItemAnalysis")

Version

Current version available on CRAN is 1.5.1. The newest development version available on GitHub is 1.5.1.
Version available online at Czech Academy of Sciences is 1.5.1. Version available online at shinyapps.io is 1.5.1.

Usage

It is very easy to run ShinyItemAnalysis in R:

ShinyItemAnalysis::run_app()
# or
ShinyItemAnalysis::startShinyItemAnalysis()

Or if you are an RStudio IDE user, simply click on Run ShinyItemAnalysis in Addins menu (located at the end of the toolbar). Last but not least, you can also try the app directly online at Czech Academy of Sciences or shinyapps.io!

References

When using ShinyItemAnalysis software, we appreciate if you include a reference in your publications. To cite the software, please, use:

Martinková P., & Hladká A. (2023) Computational Aspects of Psychometric Methods: With R. (1st ed.). Chapman and Hall/CRC. doi: 10.1201/9781003054313. ISBN 9781003054313.

Martinková P., & Drabinová A. (2018) ShinyItemAnalysis for teaching psychometrics and to enforce routine analysis of educational tests. The R Journal, 10(2), 503-515. doi: 10.32614/RJ-2018-074.

Czech speakers can also refer to paper in journal Testforum.

Getting help and provide feedback

If you find any bug or just need help with ShinyItemAnalysis you can leave your message as an GitHub issue or directly contact us at [email protected]. We warmly encourage you to provide your feedback using Google form.

License

This program is free software and you can redistribute it and or modify it under the terms of the GNU GPL 3.

shinyitemanalysis's People

Contributors

adelahladka avatar jakhou avatar lstepanek avatar patriciamar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

shinyitemanalysis's Issues

Překlepy

Nacházím spoustu překlepů. Možná by bylo dobré, kdybychom všichni podrobně prošli před publikací texty a případné nedostatky odstranili

verze pro web

Upraveni verze pro web https://shiny.cs.cas.cz/ShinyItemAnalysis/
V zalozce vlevo by mela obsahovat

  • link na CRAN (nahore, tucne)
  • odkaz na grant
  • copyright
  • odkaz na verzi 0.1 (dole, mensim pismem, jen proto, ze pod timto linkem jsme vykazali do RIV starsi verzi a je nutne dat moznost se na ni z tohoto linku doklikat)
  • mozna i odkaz na verzi 0.2 (dole, mensim pismem)
  • counter

Errors

Když běží shiny objevují se občas při vykreslování tabulek a grafů errory, které ovšem nevedou k spadnutí aplikace. Asi by ale bylo dobré jednotlivě je projít a pokud možno odstranit.

Add corrplot / correlation structure

Consider adding a corplot or other measures of correlaton structure under Summary/Correlation Structure.

Code:
library(psych)
library(corrplot)
corP <- polychoric(data)
corrplot(corP$rho)
round(corP$rho,2)

Download plot/matrix

group

Ošetřit možnost, že uživatel nedodá group vektor

difR bug

V difLogistic() je následující bug:
library(difNLR, difR)
data(GMAT)
fit <- difR::difLogistic(GMAT, 21, 1, p.adjust.method = "BH")
fit$DIFitems
[1] 1 2
ALE pro položku 7!!!
fit$logitPar[7, ]
(Intercept) SCORE GROUP SCORE:GROUP
-2.19638844 0.23828032 0.49264312 -0.02123276

funkce plotDIFirt

Zlepsit funkci plotDIFirt aby slo jednoduse vkladat vystup difLord/difRaju/itemParEst atd.

Volba datasetů

Možnost volit jeden ze tří datasetů (GMAT, GMAT2, difMedical) z balíčku difNLR

Cronbachovo alfa

Přidat Cronbachovo alfa do Traditional Analysis/Item Analysis

Reference

Přidat reference pro jednotlivé metody

Různá vylepšení - k diskuzi

Zakládám nové vlákno, kde můžeme navrhovat drobná zlepšení.

  • Zvážit, zda neodstranit odkazy na staré verze z dolního panelu. Ponechala bych je pouze v About sekci.
    HOTOVO, na jednom řádku

  • Nebylo by lepší začínat na záložce Data? Kdykoliv o tom mluvíme, vždy se začíná představením datových souborů
    HOTOVO

  • Je možno odstranit zakomentovaný kód? Nevím, jestli jej budeme ještě potřebovat?
    HOTOVO

  • v Items slideru je stupnice 1-3-5-7-9-12 atd., tedy mezi 9 a 12 jsou dvě čísla místo jednoho. Slider pak úplně přesně neodpovídá stupnici, např. pro 12 je spíš těsně za 12 atd. Navíc mezi ostatními čísly jsou dvě čárky, přitom je tam ale jen jedna hodnota (krom teda 9-12)

  • momentálně úplně chybí jakékoliv upozornění na chybějící group a tedy nemožnost spustit DIF analyzu
    Přidáno statické upozornění aspoň do DATA sekce

  • Rozšířit popisky datasetů v DATA sekci
    HOTOVO

  • Zvážit přidání záložky HOME resp upravit záložku ABOUT, kde by byl popisek a úvod k ShinyItemAnalysis. Zatím je popisek ponechán v Summary/Total scores
    Návrh viz pull request 104 - ABOUT section

  • Zvážit přidání comment section

  • Zvážit používání google analytics, abychom věděli, co uživatelé používají

  • U Summary/Standard Scores chybí jakýkoliv popisek
    PŘIDÁNO

  • Připadá mi, že Correlation Structure se spíš hodí pod Traditional Analysis než Summary. V Summary jsou pouze statistiky ohledně skórů, kdežto v Trad. An. jsou položky. Corr. Str. se týká ovšem korelací mezi položkami a se skóry (myslím) nepracuje
    Zatím přemístěno, Nyní na konci TA

  • Nebylo by dobré do nadpisu přidat název aplikace?
    Momentálně přidáno

Data - tabulky

Vylepšit vzhled tabulek v sekci Data. Upravit tabulku key horizontálně. Změnit Item8 na i8 (sjednotit vzhled). Defaultně ukazovat 10 pozorování

R code

Je potřeba upravit vybraný R kód tak, aby odpovídal nové verzi difNLR balíčku

Package

Zde sepisuju postup, jak budovat package. Asi bychom se jej měli všichni naučit ovládat, ať můžeme postupně kontrolovat, že vše probíhá, jak má :)

Zabalení je celkem jednoduché, člověk si otevře project v RStudiu a vpravo nahoře si otěvře záložku Build. Zde jsou možnosti Build&Reload, Check a More. Pomocí Check lze zkontrolovat, zda balíček neobsahuje žádné chyby či nesrovnalosti. Build&Reload pak package zabalí a nahraje do knihovny.

Aby byl balíček se vším všudy, musí obsahovat DESCRIPTION (popis balíku), NAMESPACE (závislost s jinými balíky), složku R (zde jsou všechny funkce), složku man (dokumentace funkcí), inst (shiny - server a ui).

Dokumentace funkcí i datasetů se vytváří v R souborech ve složce R pomocí speciální syntaxe (viz např. https://cran.r-project.org/web/packages/roxygen2/vignettes/rd.html). Pak se pomocí příkazu devtools::document() automaticky vytvoří Rd soubory obsahující dokumentaci. Check se dá pak provést příkazem devtools::check(document = FALSE, args = c('--as-cran')), kde --as-cran je klíčové, protože nás informuje o požadavcích CRANu. Samozřejmě se Check dá udělat i pomocí zmíněného tlačítka, je ale v More/Configure Build Tools dobré nastavit --as-cran pro Check Package - R CMD additional options.

Balíček nelze dát na CRAN pokud obsahuje byť jediný error/warning/note, je potřeba vše ošetřit. V logu je většinou celkem podrobně popsáno, kde je chyba. Jak chybu odstranit většinou hledám na stackoverflow.

Package dependencies

Bylo by dobre zjistit, ktere balicky vyuzivaji ktere funkce. Jelikoz se nam seznam pouzitych balicku dost rozsiruje, stava se pri kompilovani balicku, ze dochazi ke kolizim v jmenech funkci. Napr existuje objekt alpha v ggplot2 a take funkce alpha v balicku psych. Pokud budeme vedet, ktere funkce nase aplikace vyuziva, lze to pak jednoduse specifikovat, co se ma natahnout a nebude dochazet k temto problemum, ktere mimo jine brani v publikovani na CRANu

záložka About

Zkontrolovat a doplnit seznam použitých packages.
Upravit seznam autorů nahoře i do Licence dole. Jakube prosím o fotografii, souhlasíte-li.

Item slider

Sjednotit slidery pro Items, umístit tam, kde jsou potřeba (nad grafy), zatím chybí u DIF/IRT Lord a DIF/IRT Raju

mirt package

Zkusit využívat mirt package pro IRT modely

Body v grafech

Přidat interpretaci bodů v obrázcích Regression a DIF/Fairness

Download pdf

Allow for quick export of test and item analysis (preferably to pdf).

Default setting: Summary, Traditional Analysis, for each item: Distractor plot, Multionmial logistic regression. IRT section: 2PL IRT equation, plots, table. DIF section (if grouping parameter available): Total Scores, Delta plot, logistic table+plot of all DIF items.
(with possibility to check other options)

Deal with problem of possible long time response:
https://github.com/rstudio/shinyapps/issues/190
will most likely need some tuning: http://shiny.rstudio.com/articles/scaling-and-tuning.html

Testování dat

Pokud uživatel nenahraje 'group' aplikace poběží normálně, ale v DIF/Fairness sekci jsou vypsány pouze errory jednotlivých funkcí. Momentálně je v sekci Data upozornění na to, že analýza v DIF/Fairness nepoběží, ale errors nejsou nijak ošetřené. Zvážit přidání příkazu validate()
viz https://shiny.rstudio.com/articles/validation.html

IRT models

Možná bychom měli zvážit přidání

  • statistik na porovnání modelů (BIC, AIC, anova)
  • model fit, item/person fit,
  • možnost exportu factor scores (odhady znalostí, graf zcela dole).

Factor scores zaberou hodně času a asi by se první stránka dost zrychlila, kdyby byly počítány až po rozkliknutí nějaké option.

Tabulka a grafy v DIF/IRT

Prozatim (jina moznost v difR neni) jsou zde uvedeny maximalni modely pro vsechny polozky (i neDIFove). Pomoci mirtu by se dal problem odstranit.

R package

Odstranila jsem momentálně balíčky foreign, gridExtra a shinyAce z dependencies, jelikož to vypadá, že nejsou vůbec potřeba. Balíček jsem následně zkompilovala bez problémů. Pokud by u vás nastal nějaký problém, dejte mi vědět.

SD odhady v NLR

V nové verzi difNLR je změněn způsob fitování NLR modelu. Nyní se vychází z plného modelu (4PL model, kde všechny 4 parametry se mohou lišit pro dané skupiny) a při volbě podmodelu (např. 2PL, 3PL, ...) se pomocí funkce constrNLR() nastaví omezení (např. pro 2PL se fixně nastaví c = 0, d = 0, cDIF = 0 a dDIF = 0, pro 3PL zase d = 0, dDIF = 0). Model ovšem i pro tyto fixní koeficienty odhaduje SD a kovarianci mezi všemi 8 parametry, tj. např v neDIFové položce v našem 3PL modelu s guessingem shodným pro obě skupiny mají aDIF a bDIF nulovou hodnotu, ale nenulové SD (ve verzi 0.2.0 bylo SD = 0 ručně dopsáno, v menším modelu totiž tento parametr nebyl vůbec odhadován). Tyto nenulové hodnoty, stejně jako nenulové hodnoty kovariancí, ovlivní výsledné SD všech parametrů.

Je potřeba to nějak ošetřit, případně jak by se to mělo udělat?

VYŘEŠENO

Odkazování dat

Zkontrolovat v server.R odkazování dat.

Napr. line 1148 output$threeparamcoef , je to ok, ze se 3PL IRT model pevne fituje z dat GMAT2[, 1:20]?

Uprava cteni dat

Upravit kod na nacteni dat, aby bylo mozno nahrat i vice (resp. mene) polozkova data, nejen 20 polozkova

Popis dat

Je treba dodat obsahlejsi popis vzberu dat - chybi zminka, ze si uzivatel muze vybrat momentalne ze 3 datasetu z difNLR

Zdrojový kód

Vypsat vybraný zdrojový kód k jednotlivým sekcím

Slidery

Vypadá to, že slidery pro MH mají jinou strukturu v kódu než pro ostatní DIF metody. Bylo by dobré to v kódu sjednotit. Viz řádky kolem cca 350 v server.R.

difR

Problem se skalovanim odhadnutych parametru z difLord a difRaju.

data LF

Přidat LF data s 80 položkami

Funkce

Oddělit funkce do samostatného souboru a přidat dokumentaci. Nabídnout v rámci balíku ShinyItemAnalysis

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.