From 2e83f02d3deac6dd30283d1946028fb09f7e242a Mon Sep 17 00:00:00 2001 From: Heather Turner Date: Thu, 7 Dec 2017 11:26:46 +0000 Subject: [PATCH] add refs to DESCRIPTION, correct Luce ref --- DESCRIPTION | 19 +- README.md | 154 ++++-- cran-comments.md | 21 +- docs/articles/Overview.html | 480 ++++++++---------- .../figure-html/always-loses-1.png | Bin 16979 -> 18146 bytes docs/articles/index.html | 4 +- docs/articles/plackettluce.bib | 7 +- docs/authors.html | 2 +- docs/index.html | 79 ++- docs/man/figures/always-loses-1.png | Bin 17290 -> 17122 bytes docs/news/index.html | 57 +-- docs/reference/PlackettLuce-package.html | 2 +- docs/reference/PlackettLuce.html | 2 +- docs/reference/adjacency.html | 2 +- docs/reference/beans.html | 2 +- docs/reference/choices.html | 4 +- docs/reference/connectivity.html | 2 +- docs/reference/figures/always-loses-1.png | Bin 7267 -> 6819 bytes docs/reference/fitted.PlackettLuce.html | 2 +- docs/reference/grouped_rankings.html | 2 +- docs/reference/index.html | 2 +- docs/reference/itempar.PlackettLuce.html | 2 +- docs/reference/nascar.html | 2 +- docs/reference/plfit.html | 2 +- docs/reference/pltree.html | 6 +- docs/reference/pudding.html | 2 +- docs/reference/qvcalc.PlackettLuce.html | 2 +- docs/reference/rankings.html | 2 +- docs/reference/read.soc.html | 2 +- docs/reference/reexports.html | 2 +- docs/reference/summaries.html | 2 +- inst/WORDLIST | 1 + man/figures/always-loses-1.png | Bin 7267 -> 6819 bytes readme.bib | 7 +- vignettes/plackettluce.bib | 7 +- 35 files changed, 416 insertions(+), 466 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index ae2180e..7229845 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -8,15 +8,16 @@ Authors@R: c(person("Heather", "Turner", email = "Firth", role = "aut"), person("Jacob", "van Etten", role = "ctb")) URL: https://hturner.github.io/PlackettLuce/ BugReports: https://github.com/hturner/PlackettLuce/issues -Description: Functions to prepare rankings data and fit the Plackett-Luce model. - The standard Plackett-Luce model is generalized to accommodate ties of any - order in the ranking. Partial rankings, in which only a subset of items are - ranked in each ranking, are also accommodated in the implementation. - Disconnected/weakly connected networks implied by the rankings are handled - by adding pseudo-rankings with a hypothetical item. Methods are provided to - estimate standard errors or quasi-standard errors for inference as well as - to fit Plackett-Luce trees. See the package website or vignette for full - details. +Description: Functions to prepare rankings data and fit the Plackett-Luce model + jointly attributed to Plackett (1975) and Luce + (1959, ISBN:0486441369). The standard Plackett-Luce model is generalized + to accommodate ties of any order in the ranking. Partial rankings, in which + only a subset of items are ranked in each ranking, are also accommodated in + the implementation. Disconnected/weakly connected networks implied by the + rankings are handled by adding pseudo-rankings with a hypothetical item. + Methods are provided to estimate standard errors or quasi-standard errors + for inference as well as to fit Plackett-Luce trees. See the package website + or vignette for full details. License: GPL-3 Encoding: UTF-8 LazyData: true diff --git a/README.md b/README.md index 7eb93ab..43b1a7c 100644 --- a/README.md +++ b/README.md @@ -1,33 +1,50 @@ -PlackettLuce -============ +# PlackettLuce -[![Travis-CI Build Status](https://travis-ci.org/hturner/PlackettLuce.svg?branch=master)](https://travis-ci.org/hturner/PlackettLuce) [![AppVeyor Build Status](https://ci.appveyor.com/api/projects/status/github/hturner/PlackettLuce?branch=master&svg=true)](https://ci.appveyor.com/project/hturner/PlackettLuce) [![Coverage Status](https://img.shields.io/codecov/c/github/hturner/PlackettLuce/master.svg)](https://codecov.io/github/hturner/PlackettLuce?branch=master) +[![Travis-CI Build +Status](https://travis-ci.org/hturner/PlackettLuce.svg?branch=master)](https://travis-ci.org/hturner/PlackettLuce) +[![AppVeyor Build +Status](https://ci.appveyor.com/api/projects/status/github/hturner/PlackettLuce?branch=master&svg=true)](https://ci.appveyor.com/project/hturner/PlackettLuce) +[![Coverage +Status](https://img.shields.io/codecov/c/github/hturner/PlackettLuce/master.svg)](https://codecov.io/github/hturner/PlackettLuce?branch=master) Package website: . -Overview --------- +## Overview -The **PlackettLuce** package implements a generalization of the model jointly attributed to Plackett (1975) and Luce (1959) for modelling rankings data. Examples of rankings data might be the finishing order of competitors in a race, or the preference of consumers over a set of competing products. +The **PlackettLuce** package implements a generalization of the model +jointly attributed to Plackett (1975) and Luce (1959) for modelling +rankings data. Examples of rankings data might be the finishing order of +competitors in a race, or the preference of consumers over a set of +competing products. -The output of the model is an estimated **worth** for each item that appears in the rankings. The parameters are generally presented on the log scale for inference. +The output of the model is an estimated **worth** for each item that +appears in the rankings. The parameters are generally presented on the +log scale for inference. The implementation of the Plackett-Luce model in **PlackettLuce**: -- Accommodates ties (of any order) in the rankings, e.g. bananas ≻ {apples, oranges} ≻ pears. -- Accommodates sub-rankings, e.g. pears ≻ apples, when the full set of items is {apples, bananas, oranges, pears}. -- Handles disconnected or weakly connected networks implied by the rankings, e.g. where one item always loses as in figure below. This is achieved by adding pseudo-rankings with a hypothetical or ghost item. + - Accommodates ties (of any order) in the rankings, e.g. bananas + \(\succ\) {apples, oranges} \(\succ\) pears. + - Accommodates sub-rankings, e.g. pears \(\succ\) apples, when the + full set of items is {apples, bananas, oranges, pears}. + - Handles disconnected or weakly connected networks implied by the + rankings, e.g. where one item always loses as in figure below. This + is achieved by adding pseudo-rankings with a hypothetical or ghost + item. -![](man/figures/always-loses-1.png)
+![](man/figures/always-loses-1.png)
In addition the package provides methods for -- Obtaining quasi-standard errors, that don't depend on the constraints applied to the worth parameters for identifiability. -- Fitting Plackett-Luce trees, i.e. a tree that partitions the rankings by covariate values, such as consumer attributes or racing conditions, identifying subgroups with different sets of worth parameters for the items. + - Obtaining quasi-standard errors, that don’t depend on the + constraints applied to the worth parameters for identifiability. + - Fitting Plackett-Luce trees, i.e. a tree that partitions the + rankings by covariate values, such as consumer attributes or racing + conditions, identifying subgroups with different sets of worth + parameters for the items. -Installation ------------- +## Installation The package may be installed from GitHub via @@ -36,12 +53,19 @@ The package may be installed from GitHub via devtools::install_github("hturner/PlackettLuce") ``` -Usage ------ +## Usage -The [Netflix Prize](http://www.netflixprize.com/) was a competition devised by Netflix to improve the accuracy of its recommendation system. To facilitate this they released ratings about movies from the users of the system that have been transformed to preference data and are available from [PrefLib](http://www.preflib.org/data/election/netflix/). Each data set comprises rankings of a set of 3 or 4 movies selected at random. Here we consider rankings for just one set of movies to illustrate the functionality of **PlackettLuce**. +The [Netflix Prize](http://www.netflixprize.com/) was a competition +devised by Netflix to improve the accuracy of its recommendation system. +To facilitate this they released ratings about movies from the users of +the system that have been transformed to preference data and are +available from [PrefLib](http://www.preflib.org/data/election/netflix/). +Each data set comprises rankings of a set of 3 or 4 movies selected at +random. Here we consider rankings for just one set of movies to +illustrate the functionality of **PlackettLuce**. -The data can be read in using the `read.soc` function in **PlackettLuce** +The data can be read in using the `read.soc` function in +**PlackettLuce** ``` r library(PlackettLuce) @@ -54,9 +78,17 @@ head(netflix, 2) ## 1 68 2 1 4 3 ## 2 53 1 2 4 3 -Each row corresponds to a unique ordering of the four movies in this data set. The number of Netflix users that assigned that ordering is given in the first column, followed by the four movies in preference order. So for example, 68 users ranked movie 2 first, followed by movie 1, then movie 4 and finally movie 3. +Each row corresponds to a unique ordering of the four movies in this +data set. The number of Netflix users that assigned that ordering is +given in the first column, followed by the four movies in preference +order. So for example, 68 users ranked movie 2 first, followed by movie +1, then movie 4 and finally movie 3. -`PlackettLuce`, the model-fitting function in **PlackettLuce** requires that the data are provided in the form of *rankings* rather than *orderings*, i.e. the rankings are expressed by giving the rank for each item, rather than ordering the items. We can create a `"rankings"` object from a set of orderings as follows +`PlackettLuce`, the model-fitting function in **PlackettLuce** requires +that the data are provided in the form of *rankings* rather than +*orderings*, i.e. the rankings are expressed by giving the rank for each +item, rather than ordering the items. We can create a `"rankings"` +object from a set of orderings as follows ``` r R <- as.rankings(netflix[,-1], input = "ordering") @@ -69,9 +101,19 @@ R[1:3, as.rankings = FALSE] ## 2 1 2 4 3 ## 3 2 1 3 4 -Note that `read.soc` saved the names of the movies in the `"item"` attribute of `netflix`, so we have used these to label the items. Subsetting the rankings object `R` with `as.rankings = FALSE`, returns the underlying matrix of rankings corresponding to the subset. So for example, in the first ranking the second movie (Beverly Hills Cop) is ranked number 1, followed by the first movie (Mean Girls) with rank 2, followed by the fourth movie (Mission: Impossible II) and finally the third movie (The Mummy Returns), giving the same ordering as in the original data. +Note that `read.soc` saved the names of the movies in the `"item"` +attribute of `netflix`, so we have used these to label the items. +Subsetting the rankings object `R` with `as.rankings = FALSE`, returns +the underlying matrix of rankings corresponding to the subset. So for +example, in the first ranking the second movie (Beverly Hills Cop) is +ranked number 1, followed by the first movie (Mean Girls) with rank 2, +followed by the fourth movie (Mission: Impossible II) and finally the +third movie (The Mummy Returns), giving the same ordering as in the +original data. -Various methods are provided for `"rankings"` objects, in particular if we subset the rankings without `as.rankings = FALSE`, the result is again a `"rankings"` object and the corresponding print method is used: +Various methods are provided for `"rankings"` objects, in particular if +we subset the rankings without `as.rankings = FALSE`, the result is +again a `"rankings"` object and the corresponding print method is used: ``` r R[1:3] @@ -95,7 +137,9 @@ print(R[1:3], width = 60) ## 3 ## "Beverly Hills Cop > Mean Girls > The Mummy Returns > Mis ..." -The rankings can now be passed to `PlackettLuce` to fit the Plackett-Luce model. The counts of each ranking provided in the downloaded data are used as weights when fitting the model. +The rankings can now be passed to `PlackettLuce` to fit the +Plackett-Luce model. The counts of each ranking provided in the +downloaded data are used as weights when fitting the model. ``` r mod <- PlackettLuce(R, weights = netflix$n) @@ -107,9 +151,13 @@ coef(mod, log = FALSE) ## Mission: Impossible II ## 0.1498342 -Calling `coef` with `log = FALSE` gives the worth parameters, constrained to sum to one. These parameters represent the probability that each movie is ranked first. +Calling `coef` with `log = FALSE` gives the worth parameters, +constrained to sum to one. These parameters represent the probability +that each movie is ranked first. -For inference these parameters are converted to the log scale, by default setting the first parameter to zero so that the standard errors are estimable: +For inference these parameters are converted to the log scale, by +default setting the first parameter to zero so that the standard errors +are estimable: ``` r summary(mod) @@ -130,34 +178,60 @@ summary(mod) ## AIC: 3499.5 ## Number of iterations: 5 -In this way, Mean Girls is treated as the reference movie, the positive parameter for Beverly Hills Cop shows this was more popular among the users, while the negative parameters for the other two movies show these were less popular. +In this way, Mean Girls is treated as the reference movie, the positive +parameter for Beverly Hills Cop shows this was more popular among the +users, while the negative parameters for the other two movies show these +were less popular. -Comparisons between different pairs of movies can be made visually by plotting the log-worth parameters with comparison intervals based on quasi standard errors. +Comparisons between different pairs of movies can be made visually by +plotting the log-worth parameters with comparison intervals based on +quasi standard errors. ``` r qv <- qvcalc(mod) plot(qv) ``` -![](man/figures/qv-1.png) +![](man/figures/qv-1.png) -If the intervals overlap there is no significant difference. So we can see that Beverly Hills Cop is significantly more popular than the other three movies, Mean Girls is significant more popular than The Mummy Returns or Mission: Impossible II, but there was no significant difference in users' preference for these last two movies. +If the intervals overlap there is no significant difference. So we can +see that Beverly Hills Cop is significantly more popular than the other +three movies, Mean Girls is significant more popular than The Mummy +Returns or Mission: Impossible II, but there was no significant +difference in users’ preference for these last two movies. -Going Further -------------- +## Going Further -The full functionality of **PlackettLuce** is illustrated in the package vignette, along with details of the model used in the package and a comparison to other packages. The vignette can be found on the [package website](https://hturner.github.io/PlackettLuce/) or from within R once the package has been installed, e.g. via +The full functionality of **PlackettLuce** is illustrated in the package +vignette, along with details of the model used in the package and a +comparison to other packages. The vignette can be found on the [package +website](https://hturner.github.io/PlackettLuce/) or from within R once +the package has been installed, e.g. via vignette("Overview", package = "PlackettLuce") -Code of Conduct ---------------- +## Code of Conduct -Please note that this project is released with a [Contributor Code of Conduct](CONDUCT.md). By participating in this project you agree to abide by its terms. +Please note that this project is released with a [Contributor Code of +Conduct](CONDUCT.md). By participating in this project you agree to +abide by its terms. -References ----------- +## References -Luce, R. Duncan. 1959. *Individual Choice Behavior: A Theoretical Analysis*. doi:[10.2307/2282347](https://doi.org/10.2307/2282347). +
-Plackett, Robert L. 1975. “The Analysis of Permutations.” *Appl. Statist* 24 (2): 193–202. doi:[10.2307/2346567](https://doi.org/10.2307/2346567). +
+ +Luce, R. Duncan. 1959. *Individual Choice Behavior: A Theoretical +Analysis*. New York: Wiley. + +
+ +
+ +Plackett, Robert L. 1975. “The Analysis of Permutations.” *Appl. +Statist* 24 (2):193–202. . + +
+ +
diff --git a/cran-comments.md b/cran-comments.md index ed3c00a..eb61a61 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,5 +1,11 @@ +## Resubmission + +As requested the DESCRIPTION now contains a reference for the Plackett-Luce model. + ## Test environments +(Re-tested with the same results) + * Local - Ubuntu 14.04, R 3.4.3 - Ubuntu 14.04, R Under development (unstable) (2017-12-04 r73829) @@ -12,17 +18,8 @@ On Mac/Ubuntu, R CMD check only returns note that this is a new submission. -On Windows, R CMD check returns the same note in the log, however in the -terminal there is the following warning: +On Windows, R CMD check returns the same note in the log, however in the terminal there is the following warning: - * checking CRAN incoming feasibility ...Warning: running command '"pandoc -" "C:\Users\hturner\PlackettLuce.Rcheck\00_pkg_src\PlackettLuce\README.md -" -s --email-obfuscation=references --self-contained -o "C:\Users\hturner -\AppData\Local\Temp\RtmpyQZw3Z\READMEcf025d05abf.html"' had status 99 + * checking CRAN incoming feasibility ...Warning: running command '"pandoc" "C:\Users\hturner\PlackettLuce.Rcheck\00_pkg_src\PlackettLuce\README.md" -s --email-obfuscation=references --self-contained -o "C:\Users\hturner\AppData\Local\Temp\RtmpyQZw3Z\READMEcf025d05abf.html"' had status 99 -The warning seems to be due to pandoc not finding image files in `man/figures`. -I could successfully run the pandoc command by either changing directory to -"C:\Users\hturner\PlackettLuce.Rcheck\00_pkg_src\PlackettLuce" and calling -pandoc on "README.md", or adding `--resource-path -"C:\Users\hturner\PlackettLuce.Rcheck\00_pkg_src\PlackettLuce` to the call shown -in the warning. +The warning seems to be due to pandoc not finding image files in `man/figures`. I could successfully run the pandoc command by either changing directory to "C:\Users\hturner\PlackettLuce.Rcheck\00_pkg_src\PlackettLuce" and calling pandoc on "README.md", or adding `--resource-path "C:\Users\hturner\PlackettLuce.Rcheck\00_pkg_src\PlackettLuce` to the call shown in the warning. diff --git a/docs/articles/Overview.html b/docs/articles/Overview.html index 97a5ed5..f16d074 100644 --- a/docs/articles/Overview.html +++ b/docs/articles/Overview.html @@ -30,7 +30,7 @@ diff --git a/docs/man/figures/always-loses-1.png b/docs/man/figures/always-loses-1.png index 95015cdbf4b237c088fda22ea92721629494a36e..7956e5eb5eabd16708a5e275b570bb06bf3793fc 100644 GIT binary patch literal 17122 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 TNritQ0-<h=LG`ih|OM^b(W~ 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