- Extend
`pltree`

to allow option of modelling log-worth with a linear predictor (via`pladmm()`

). - Improved handling of model formula in
`pladmm()`

, including possibility to specify contrasts for any factors in the formula. - Add anova method for PLADMM models.
- Add
`weights`

argument to`pladmm()`

, allowing aggregated rankings to be modelled, optionally using an`aggregate_rankings`

object to specify rankings and weights together.

- Avoid computing variance-covariance matrix in
`predict.PLADMM(vcov = FALSE)`

and`AIC`

when new data specified (partial fix to #50). - Correct residual df for PLADMM models based on partial rankings (previously assumed all rankings had equal number of items).
- Update URL for Preflib data sets.

- New
`pladmm`

function to fit the Plackett-Luce model with log-worth modelled by item covariates. - Add three new variables to the
`beans`

data. The planting date, and geographical coordinates (@kauedesousa, #41).

- Fix test that fails with new behaviour of
`all.equal()`

. - Update citation to use Computational Statistics paper (#44).

- Fix Preflib URL.

- Now correctly handles cases where intermediate tie orders are not observed, fixing corresponding tie parameters to zero (#42).

`vcov.PlackettLuce()`

works again for`ref = NULL`

(bug introduced with vcov method in version 0.2-4)- avoid dependency on R >= 3.6.0 by providing alternatives to
`asplit()`

`read.soi()`

and`read.toi()`

now handle incomplete rankings with very irregular lengths correctly.`read.*()`

functions for Preflib formats now give a meaningful error when the file or URL does not exist, and a warning if the file is corrupt.`as.rankings`

with`input = "orderings"`

now checks coded values can be matched to item names, if provided.`PlackettLuce()`

now works with`nspeudo > 0`

when there are no observed paired comparisons.`?PlackettLuce`

now gives advice on analysing data with higher order ties.

- Fix bug in
`as.rankings.matrix()`

introduced in version 0.2-7. - Import
`eigs`

from RSpectra vs rARPACK.

- New
`"aggregated_rankings"`

object to store aggregated rankings with the corresponding frequencies. Objects of class`"rankings"`

can be aggregated via the`aggregate`

method; alternatively`rankings()`

and`as.rankings()`

will create an`"aggregated_rankings"`

object when`aggregate = TRUE`

.`as.rankings()`

also handles pre-aggregated data, accepting frequencies via the`freq`

argument. - New
`freq()`

function to extract frequencies from aggregated rankings. `as.rankings()`

can now create a`"grouped_rankings"`

object, if a grouping index is passed via the`index`

argument.- New
`as.matrix()`

methods for rankings and aggregated rankings to extract the underlying matrix of rankings, with frequencies in the final column if relevant. This means rankings can be saved easily with`write.table()`

. - New
`complete()`

and`decode()`

functions to help pre-process orderings before converting to rankings,`complete()`

infers the item(s) in r’th rank given the items in the other (r - 1) ranks.`decode()`

converts coded (partial) orderings to orderings of the items in each ordering. - New
`read.soi()`

,`read.toc()`

and`read.toi()`

to read the corresponding PrefLib file formats (for data types “Strict Orders - Incomplete List”, “Orders with Ties - Complete List” and “Orders with Ties - Incomplete List”). An`as.aggregated_rankings()`

method is provided to convert the data frame of aggregated orderings to an`"aggregated_rankings"`

object.

`pltree()`

now respects`na.action`

and will pad predictions and fitted values for`na.action = "na.exclude"`

if the rankings are missing for a whole group or one of the model covariates has a missing value.`PlackettLuce()`

now has an`na.action`

argument for handling of missing rankings.`fitted()`

and`choices()`

now return data frames, with list columns as necessary.

`rankings()`

now sets redundant/inconsistent ranks to`NA`

rather than dropping them. This does not affect the final ranking, unless it is completely`NA`

.- The frequencies column in the data frame returned by
`read.soc()`

is now named`Freq`

rather than`n`

. - The
`"item"`

attribute of the data frame returned by`read.soc()`

is now named`"items"`

. - The
`labels`

argument in`as.rankings()`

has been deprecated and replaced by`items`

. `grouped_ranking()`

has been deprecated and replaced by`group()`

.- The redundant columns in the
`nascar`

data have been dropped.

- Avoid using
`isFALSE()`

for compatibility with R < 3.5. - Don’t test number of iterations when comparing models on grouped and ungrouped rankings.

- Higher tolerance in tests of
`vcov()`

for CRAN Windows test machine.

`PlackettLuce()`

now supports MAP estimation with a multivariate normal prior on log-worths and/or a gamma prior on ranker adherence.`PlackettLuce()`

now returns log-likelihood and degrees of freedom for the null model (where all outcomes, including ties, have equal probability).- There is now a
`vcov`

method for Plackett-Luce trees.

`itempar.PlackettLuce()`

now always returns a matrix, even for a single node tree.

`pltree()`

or`PlackettLuce()`

with grouped rankings now work correctly with weights.

- Print methods for
`"PlackettLuce"`

and`"summary.PlacketLuce"`

objects now respect`options("width")`

.

`fitted`

always returns`n`

which is now weighted count of rankings (previously only returned unweighted count with argument`aggregate = TRUE`

).

- Correct vcov for weighted rankings of more than two items.
- Enable
`AIC.pltree`

to work on`"pltree"`

object with one node.

- Add
`AIC.pltree`

to enable computation of AIC on new observations (e.g. data held out in cross-validation). - Add
`fitted.pltree`

to return combined fitted probabilities for each choice within each ranking, for each node in a Plackett-Luce tree.

`vcov.PlackettLuce`

now works for models with non-integer weights (fixes #25).`plot.pltree`

now works for`worth = TRUE`

with psychotree version 0.15-2 (currently pre-release on https://r-forge.r-project.org/R/?group_id=330)`PlackettLuce`

and`plfit`

now work when`start`

argument is set.`itempar.PlackettLuce`

now works with`alias = FALSE`

- Add
**pkgdown**site. - Add content to README (fixes #5).
- Add
`plot.PlackettLuce`

method so that plotting works for a saved`"PlackettLuce"`

object

- Improved vignette, particularly example based on
`beans`

data (which has been updated). - Improved help files particularly
`?PlackettLuce`

and new`package?PlackettLuce`

. (Fixes #14 and #21).

`maxit`

defaults to 500 in`PlackettLuce`

.- Steffensen acceleration only applied in iterations where it will increase the log-likelihood (still only attempted once iterations have reached a solution that is “close enough” as specified by
`steffensen`

argument).

`coef.pltree()`

now respects`log = TRUE`

argument (fixes #19).- Fix bug causes lack of convergence with iterative scaling plus pseudo-rankings.
`[.grouped_rankings]`

now works for replicated indices.

- Add vignette.
- Add data sets
`pudding`

,`nascar`

and`beans`

. - Add
`pltree()`

function for use with`partykit::mob()`

. Requires new objects of type`"grouped_rankings"`

that add a grouping index to a`"rankings"`

object and store other derived objects used by`PlackettLuce`

. Methods to print, plot and predict from Plackett-Luce tree are provided. - Add
`connectivity()`

function to check connectivity of a network given adjacency matrix. New`adjacency()`

function computes adjacency matrix without creating edgelist, so remove`as.edgelist`

generic and method for `“PlackettLuce” objects. - Add
`as.data.frame`

methods so that rankings and grouped rankings can be added to model frames. - Add
`format`

methods for rankings and grouped_rankings, for pretty printing. - Add
`[`

methods for rankings and grouped_rankings, to create valid rankings from selected rankings and/or items. - Add method argument to offer choices of iterative scaling (default), or direct maximisation of the likelihood via BFGS or L-BFGS.
- Add
`itempar`

method for “PlackettLuce” objects to obtain different parameterizations of the worth parameters. - Add
`read.soc`

function to read Strict Orders - Complete List (.soc) files from https://www.preflib.org.

Old behaviour should be reproducible with arguments

`npseudo = 0, steffensen = 0, start = c(rep(1/N, N), rep(0.1, D))`

where `N`

is number of items and `D`

is maximum order of ties.

- Implement pseudo-data approach - now used by default.
- Improve starting values for ability parameters
- Add Steffensen acceleration to iterative scaling algorithm
- Dropped
`ref`

argument from`PlackettLuce`

; should be specified instead when calling`coef`

,`summary`

,`vcov`

or`itempar`

. `qvcalc`

generic now imported from**qvcalc**

- Refactor code to speed up model fitting and computation of fitted values and vcov.
- Implement ranking weights and starting values in
`PlackettLuce`

. - Add package tests
- Add
`log`

argument to`coef`

so that worth parameters (probability of coming first in strict ranking of all items) can be obtained easily.

- GitHub-only release of prototype package.