patriciamar / shinyitemanalysis Goto Github PK
View Code? Open in Web Editor NEWTest and Item Analysis via Shiny
Home Page: http://www.ShinyItemAnalysis.org
Test and Item Analysis via Shiny
Home Page: http://www.ShinyItemAnalysis.org
Přidat do sekce DIF/Fairness Bockův model
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
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]?
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
Je treba dodat obsahlejsi popis vzberu dat - chybi zminka, ze si uzivatel muze vybrat momentalne ze 3 datasetu z difNLR
Success rate seems to be calculated from maximum total score. With binary items it should be calculated from number of items.
Přidat LF data s 80 položkami
Zkontrolovat shiny verzi na serveru. Zda se, ze je zde starsi.
Přidat vysvětlení/upozornění na korekci mnohonásobného porovnání v sekci DIF/Fairness
Upraveni verze pro web https://shiny.cs.cas.cz/ShinyItemAnalysis/
V zalozce vlevo by mela obsahovat
Problem se skalovanim odhadnutych parametru z difLord a difRaju.
Přidat Cronbachovo alfa do Traditional Analysis/Item Analysis
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
Přidat HCI dataset.
v DIF logistic, DIF logistic IRT Z a DIF Nonlinear, DIF IRT - pridat selectInput button pro korekci mnohonasobneho porovnani (viz p.adjust a p.adjust.methods), nastavit BH jako default
Upravit kod na nacteni dat, aby bylo mozno nahrat i vice (resp. mene) polozkova data, nejen 20 polozkova
Přidat reference pro jednotlivé metody
Zvážit změnu vzhledu aplikace
Oddělit funkce do samostatného souboru a přidat dokumentaci. Nabídnout v rámci balíku ShinyItemAnalysis
Vylepšit vzhled tabulek v sekci Data. Upravit tabulku key horizontálně. Změnit Item8 na i8 (sjednotit vzhled). Defaultně ukazovat 10 pozorování
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.
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
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
Promyslet a následně implementovat uložení obrázků/tabulek atd.
Zkusit využívat mirt package pro IRT modely
Sjednotit slidery pro Items, umístit tam, kde jsou potřeba (nad grafy), zatím chybí u DIF/IRT Lord a DIF/IRT Raju
Nefunguje momentálně stahování obrázků pro IRT mirt modely. Nejedná se o klasický plot a ani o ggplot.
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.
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
Prozatim (jina moznost v difR neni) jsou zde uvedeny maximalni modely pro vsechny polozky (i neDIFove). Pomoci mirtu by se dal problem odstranit.
Prepare plots in regression (especially the multinomial regression) as package functions, so that they can be easily prepared in R without the app.
Vypsat vybraný zdrojový kód k jednotlivým sekcím
Možnost volit jeden ze tří datasetů (GMAT, GMAT2, difMedical) z balíčku difNLR
Abychom věděli, jak uživatelé aplikaci využívají.
Přidat interpretaci bodů v obrázcích Regression a DIF/Fairness
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.
Opravit error
Je potřeba upravit vybraný R kód tak, aby odpovídal nové verzi difNLR balíčku
Přidat distractor plot pro skupiny
Přidání comment section do sekce About. Navrhuji použít Disqus, viz https://disqus.com/ (v praxi např. http://shiny.rstudio.com/tutorial/lesson3/ dole)
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.
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.
Možná bychom měli zvážit přidání
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.
Ošetřit možnost, že uživatel nedodá group vektor
Chybí korekční metody pro DIF/IRT
Rovnice neodpovidaji parametrizaci. Nutne prepsat.
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
Momentálně nemůžu přijít na to, jak sloučit update of Jakuba. Pracovali jsme na některých částech současně a teď se to musí ošetřit. Nejlepší by bylo, kdybychom toto ovládali všichni. Mělo by to jít pomocí GitHub desktop viz např zde https://help.github.com/articles/resolving-a-merge-conflict-from-the-command-line/. Pokud na to někdo přijdete, informujte, prosím, ostatní! Díky
Zlepsit funkci plotDIFirt aby slo jednoduse vkladat vystup difLord/difRaju/itemParEst atd.
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
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.