coef_tol <- 1e-06
loglik_tol <- 1e-07
## artificial data
R <- matrix(c(1, 2, 0, 0,
4, 1, 2, 3,
2, 1, 1, 1,
2, 1, 0, 0,
1, 2, 3, 0,
2, 1, 1, 0,
1, 0, 3, 2), ncol = 4, byrow = TRUE)
colnames(R) <- c("apple", "banana", "orange", "pear")
mod <- PlackettLuce(R, npseudo = 0)
mod2 <- PlackettLuce(R, start = coef(mod, log = FALSE), npseudo = 0)
mod3 <- PlackettLuce(R, start = coef(mod), npseudo = 0)
mod4 <- PlackettLuce(R, start = unclass(coef(mod, log = FALSE)), npseudo = 0)
test_that("starting at solution returns same solution [npseudo = 0]",
{
expect_equal(mod2$iter, 0)
expect_equal(coef(mod), coef(mod2))
expect_equal(mod3$iter, 0)
expect_equal(coef(mod), coef(mod3))
# in this case const will change as starting values not rescaled
expect_equal(mod4$iter, 0)
expect_equal(coef(mod), coef(mod4), tolerance = coef_tol,
ignore_attr = TRUE)
})
mod <- PlackettLuce(R, npseudo = 0.5)
mod2 <- PlackettLuce(R, start = coef(mod, log = FALSE), npseudo = 0.5)
mod3 <- PlackettLuce(R, start = coef(mod), npseudo = 0.5)
mod4 <- PlackettLuce(R, start = unclass(coef(mod, log = FALSE)), npseudo = 0.5)
# suppress warning that iterations have not converged
mod5 <- suppressWarnings(PlackettLuce(R,
start = unclass(coef(mod, log = FALSE)),
npseudo = 0.5,
maxit = 0))
test_that("starting at solution returns same solution [npseudo = 0.5]",
{
expect_equal(mod2$iter, 0)
expect_equal(coef(mod), coef(mod2))
expect_equal(mod3$iter, 0)
expect_equal(coef(mod), coef(mod3))
# in this case generic start for hypothetical item
# => will iterate a little, to equivalent answer
expect_gt(mod4$iter, 0)
expect_equal(coef(mod), coef(mod4), tolerance = coef_tol,
ignore_attr = TRUE)
# here prevent further iterations so fix at starting val
expect_equal(mod5$iter, 0)
expect_equal(coef(mod), coef(mod5),
ignore_attr = TRUE)
})
if (require(psychotree) & require(sandwich)){
data("Topmodel2007", package = "psychotree")
preference <- Topmodel2007$preference
G <- as.grouped_rankings(preference)
plmod <- plfit(G, npseudo = 0, ref = "Anja", estfun = TRUE, object = TRUE)
plmod2 <- plfit(G, npseudo = 0, ref = "Anja", estfun = TRUE, object = TRUE,
start = coef(plmod))
test_that("plfit works with start [Topmodel2007]",
{
expect_equal(plmod2$object$iter, 0)
expect_equal(coef(plmod), coef(plmod2))
})
plmod <- plfit(G, npseudo = 0.5, ref = "Anja", estfun = TRUE, object = TRUE)
plmod2 <- plfit(G, npseudo = 0.5, ref = "Anja", estfun = TRUE,
object = TRUE, start = coef(plmod))
test_that("plfit works with start, npseudo > 0 [Topmodel2007]",
{
expect_equal(plmod2$object$iter, 0)
expect_equal(coef(plmod), coef(plmod2))
})
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.