patriciamar / ShinyItemAnalysis

Test and Item Analysis via Shiny
http://www.ShinyItemAnalysis.org
37 stars 22 forks source link

Porovnání regresních modelů #124

Closed adelahladka closed 7 years ago

adelahladka commented 7 years ago

Přikládám první návrh kódu pro porovnání regresních modelů.

library(difNLR)
data(GMAT)
Data <- GMAT[, 1:20]
sts <- apply(Data, 1, sum)

regFce_noDIF <- deriv3(
  ~ c + (1 - c) / (1 + exp(-a * (x - b))),
  namevec = c("a", "b", "c"),
  function.arg = function(x, a, b, c) {}
)

scaledsc <- sts

Q3 <- cut(scaledsc, quantile(scaledsc, (0:3) / 3),
          c("I", "II", "III"),
          include.lowest = TRUE)

x <- cbind(mean(scaledsc[Q3 == "I"]),
           apply(Data[Q3 == "I",], 2, mean))
y <- cbind(mean(scaledsc[Q3 == "III"]),
           apply(Data[Q3 == "III",], 2, mean))
u1 <- y[, 1] - x[, 1]
u2 <- y[, 2] - x[, 2]
### intercept of line
c <- -(-u1 * y[, 2] + u2 * y[, 1]) / u1
### slope of line
t <- u2 / u1
g <- apply(cbind(0, t * (-4) + c), 1, max)

b <- ((1 + g) / 2 - c) / t

alpha <- 4 * t / (1 - g)

discr <- alpha
diffi <- b
guess <- g

start <- cbind(discr, diffi, guess)
colnames(start) <- c("a", "b", "c")

fit2PL <- lapply(1:20, function(i) glm(Data[, i] ~ sts))
fit3PL <- lapply(1:20, function(i) nls(Data[, i] ~  regFce_noDIF(sts, a, b, c),
                                       algorithm = "port", start = start[i,],
                                       lower = c(-Inf, -Inf, 0), 
                                       upper = c(Inf, Inf, 1)))

bestAIC <- ifelse(sapply(fit2PL, AIC) < sapply(fit3PL, AIC), "2PL", "3PL")
bestBIC <- ifelse(sapply(fit2PL, BIC) < sapply(fit3PL, BIC), "2PL", "3PL")

LRstat <- -2 * (sapply(fit2PL, logLik) - sapply(fit3PL, logLik))
LRdf <- 1
LRpval <- 1 - pchisq(LRstat, LRdf)
bestLR <- ifelse(LRpval < 0.05, "3PL", "2PL")

rbind(c("AIC", "2PL", sprintf("%.2f", round(sapply(fit2PL, AIC), 2))),
      c("AIC", "3PL", sprintf("%.2f", round(sapply(fit3PL, AIC), 2))),
      c("BIC", "2PL", sprintf("%.2f", round(sapply(fit2PL, BIC), 2))),
      c("BIC", "3PL", sprintf("%.2f", round(sapply(fit3PL, BIC), 2))),
      c("LR", "Chisq-value", sprintf("%.2f", round(LRstat, 3))), 
      c("LR", "p-value", ifelse(round(LRpval, 3) < 0.001, "<0.001", 
sprintf("%.3f", round(LRpval, 3)))), 
      c("BEST AIC", " ", bestAIC), 
      c("BEST BIC", " ", bestBIC), 
      c("BEST LR", " ", bestLR))
patriciamar commented 7 years ago

Vypadá to pěkně! Možná u toho LR testu by se mohla využít ještě korekce na mnohonásobná porovnání.

adelahladka commented 7 years ago

Přidáno

adelahladka commented 7 years ago

Tabulka potřebuje upravit

adelahladka commented 7 years ago

Tabulka je upravena, tučné řádky se mi nepodařily zprovoznit a nechci na tom zbytečně trávit moc času. Otevřu pro tento problém novou issue, tuhle uzavírám. Myslím, že to nemá velkou prioritu.

patriciamar commented 7 years ago

Jeste hlasi error object 'sketch' not found.

adelahladka commented 7 years ago

Opraveno

patriciamar commented 7 years ago

Nahrano na serveru, zda se, ze negeneruje tabulku.

adelahladka commented 7 years ago

Lokálně se mi tabulka generuje. Za chvílí commitnu svou poslední verzi, na které vše funguje

adelahladka commented 7 years ago

Ještě mě napadá - je na serveru balíček library(DT)?

patriciamar commented 7 years ago

Vsechny nove balicky je vzdy potreba:

patriciamar commented 7 years ago

Library by mela byt nainstalovana. Hlasi to nyni error: 'arg' should be one of “dataTables.bootstrap.extra.css”, “dataTables.bootstrap.min.css”, “dataTables.bootstrap4.min.css”, “dataTables.foundation.min.css”, “dataTables.jqueryui.min.css”, “dataTables.material.min.css”, “dataTables.semanticui.min.css”, “dataTables.uikit.min.css”, “jquery.dataTables.extra.css”, “jquery.dataTables.min.css” lze zkusit na ostrem odkazu i v adresari TestAD

adelahladka commented 7 years ago

Nevím o co se jedná. Lokální verze mi jde bez problémů. Jede to někomu dalšímu alespoň lokálně?

Může to být ještě nesrovnalost v balíčcích, tady je moje info session:

 package           * version   date       source        
 assertthat          0.1       2013-12-06 CRAN (R 3.3.2)
 backports           1.0.5     2017-01-18 CRAN (R 3.3.2)
 colorspace          1.3-2     2016-12-14 CRAN (R 3.3.2)
 corrplot          * 0.77      2016-04-21 CRAN (R 3.3.2)
 CTT               * 2.1       2014-02-25 CRAN (R 3.3.1)
 deltaPlotR        * 1.5       2014-11-20 CRAN (R 3.3.1)
 devtools            1.12.0    2016-06-24 CRAN (R 3.3.1)
 difNLR            * 1.0.0     2017-01-19 local         
 difR              * 4.7.0     2016-11-22 local         
 digest              0.6.11    2017-01-03 CRAN (R 3.3.2)
 DT                * 0.2       2016-08-09 CRAN (R 3.3.2)
 evaluate            0.10      2016-10-11 CRAN (R 3.3.2)
 expm                0.999-0   2015-10-07 CRAN (R 3.3.1)
 foreign             0.8-67    2016-09-13 CRAN (R 3.3.2)
 ggplot2           * 2.2.1     2016-12-30 CRAN (R 3.3.2)
 GPArotation         2014.11-1 2014-11-25 CRAN (R 3.3.2)
 gridExtra         * 2.2.1     2016-02-29 CRAN (R 3.3.1)
 gtable              0.2.0     2016-02-26 CRAN (R 3.3.1)
 htmltools           0.3.5     2016-03-21 CRAN (R 3.3.1)
 htmlwidgets         0.8       2016-11-09 CRAN (R 3.3.2)
 httpuv              1.3.3     2015-08-04 CRAN (R 3.3.1)
 jsonlite            1.2       2016-12-31 CRAN (R 3.3.2)
 knitr               1.15.1    2016-11-22 CRAN (R 3.3.2)
 labeling            0.3       2014-08-23 CRAN (R 3.3.1)
 lattice           * 0.20-34   2016-09-06 CRAN (R 3.3.2)
 lazyeval            0.2.0     2016-06-12 CRAN (R 3.3.2)
 lme4              * 1.1-12    2016-04-16 CRAN (R 3.3.1)
 ltm               * 1.0-0     2013-12-20 CRAN (R 3.3.1)
 magrittr            1.5       2014-11-22 CRAN (R 3.3.1)
 MASS              * 7.3-45    2016-04-21 CRAN (R 3.3.2)
 Matrix            * 1.2-7.1   2016-09-01 CRAN (R 3.3.2)
 memoise             1.0.0     2016-01-29 CRAN (R 3.3.1)
 mgcv                1.8-15    2016-09-14 CRAN (R 3.3.2)
 mime                0.5       2016-07-07 CRAN (R 3.3.1)
 miniUI              0.1.1     2016-01-15 CRAN (R 3.3.2)
 minqa               1.2.4     2014-10-09 CRAN (R 3.3.1)
 mirt              * 1.21      2016-12-01 CRAN (R 3.3.2)
 mnormt              1.5-5     2016-10-15 CRAN (R 3.3.1)
 moments           * 0.14      2015-01-05 CRAN (R 3.3.1)
 msm               * 1.6.4     2016-10-04 CRAN (R 3.3.1)
 multilevel        * 2.6       2016-08-04 CRAN (R 3.3.1)
 munsell             0.4.3     2016-02-13 CRAN (R 3.3.1)
 mvtnorm             1.0-5     2016-02-02 CRAN (R 3.3.1)
 nlme              * 3.1-128   2016-05-10 CRAN (R 3.3.2)
 nloptr              1.0.4     2014-08-04 CRAN (R 3.3.1)
 nnet              * 7.3-12    2016-02-02 CRAN (R 3.3.2)
 plyr                1.8.4     2016-06-08 CRAN (R 3.3.1)
 polycor           * 0.7-9     2016-08-27 CRAN (R 3.3.1)
 psych             * 1.6.12    2017-01-08 CRAN (R 3.3.2)
 psychometric      * 2.2       2010-08-08 CRAN (R 3.3.2)
 R6                  2.2.0     2016-10-05 CRAN (R 3.3.1)
 Rcpp                0.12.9    2017-01-14 CRAN (R 3.3.2)
 reshape2          * 1.4.2     2016-10-22 CRAN (R 3.3.1)
 rmarkdown         * 1.3       2016-12-21 CRAN (R 3.3.2)
 rprojroot           1.2       2017-01-16 CRAN (R 3.3.2)
 scales              0.4.1     2016-11-09 CRAN (R 3.3.2)
 sfsmisc             1.1-0     2016-02-23 CRAN (R 3.3.2)
 shiny             * 1.0.0     2017-01-12 CRAN (R 3.3.2)
 ShinyItemAnalysis * 1.1.0     2017-01-19 local         
 shinyjs           * 0.9       2016-12-26 CRAN (R 3.3.2)
 stringi             1.1.2     2016-10-01 CRAN (R 3.3.1)
 stringr           * 1.1.0     2016-08-19 CRAN (R 3.3.1)
 survival            2.40-1    2016-10-30 CRAN (R 3.3.2)
 tibble              1.2       2016-08-26 CRAN (R 3.3.2)
 withr               1.0.2     2016-06-20 CRAN (R 3.3.1)
 WrightMap         * 1.2.1     2016-03-23 CRAN (R 3.3.2)
 xtable              1.8-2     2016-02-05 CRAN (R 3.3.1)
 yaml                2.1.14    2016-11-12 CRAN (R 3.3.2)
patriciamar commented 7 years ago

Na TestAD jiz funguje. Produkuje jeden prazdny sloupec navic, jinak vypada v poradku. Pro data perle hlasi convergence issues.

adelahladka commented 7 years ago

Na TestAD se mi tabulka nezobrazuje. Na Test je nejaka stara verze. Na ostre verzi vypada vse OK

adelahladka commented 7 years ago

Snad uz konecne hotovo! Viz posledni commit

adelahladka commented 7 years ago

Tak, uz jsem prisla na to, kde je chyba. library(DT) musi byt nactena i v ui.R aby to fungovalo hned na prvni nacteni. Ja mela lokalne nactene balicky, takze mi to samozrejme fungovalo. Ale na webu to fungovat nemohlo. Ted uz snad bude vse OK

patriciamar commented 7 years ago

Nova verze je na TestAD. Tabulka se jiz generuje, skvele! Slo by zaridit, aby nazvy polozek licovaly s hodnotami? V tomto pripade myslim nepotrebujeme moznost serazeni.

adelahladka commented 7 years ago

Uz jsem to nekde psala, ale ted to nemuzu najit. Problem neni v tabulce ale v chrome. V externim okne to hezky funguje.

patriciamar commented 7 years ago

Zkousim to nyni v Exploreru, tam to vypada pekne, ale prvni sloupec je posunuty. Radi to nicmene spravne.

patriciamar commented 7 years ago

Roztazeni/zmenseni okna tento problem vyresi, na prvni pohled to ale ne vzdy vypada pekne. Celkove to nyni pusobi lepe nez puvodni tabulka. Spokojime se s tim takto a issue jiz uzavreme, nebo mame jeste nekdo nejake napady?

adelahladka commented 7 years ago

Ja bych toto uzavrela. S tim podle me nic nevymyslime