Bayesian ranking methods implementation
WeightedLossRanking (ranking_function.r) RankingWeights (ranking_function.r) SelectNP (sim_ranking_experiment.r) SimData (sim_ranking_experiment.r) PostSamples (sim_ranking_experiment.r) RunSimulation (sim_ranking_experiment.r)
see lossDF data frame
use variables For data set, vary on:
-
N, number of objects to be ranked (for now, just pick 25) assigned in qbeta function qbeta(i/N+1, 1, 1)
-
gap size between true parameters and type of gap size (even vs random gap size) this depends on a_n and b_n in the qbeta function
-
n number of sample for each item (varying within each dataset unif) choose an n_max, n_min then do qbeta*n for each (goes from n_max to n_min) qbeta(i/N+1, 1, 1)n a_n, b_n n_max, n_min for now, just do a=1, b=1 but leave this open for now. vary n when p is close. given a vector of n for a current problem. come up with various n (from more to less uniform values)
- assign in order ASCENDING
- assign in reverse order DESCENDING
- randomly assign N RANDOM
-
binomial vs normal (add later maybe) Ranking methods:
-
loss type
-
weights on ranks
Do this for:
- if top item is in top 5
#Functions for Simulation:
- create n, p
- create data from n, p
- create rankings from n, p
- posterior from stan
- use posterior to get rankings
- save rankings matrix in a list by ranking method. each matrix has a cols items, rank. N, n_sim, n_rankingMethod
Testing with ranking_sim_debug.r
#varying gap width expected order stats from various beta distributions standard unif will evenly space from i/N+1 qbeta(i/N+1, 1, 1) gives 1/N+1 a_p b_p
- tests ranking_function.r using a simple normal model, normal two-level data, and simple random intercept model.
- Step 1 listed after Step 2 for ease of testing when editing ranking_function.r
- relies on several .stan files.
- small normal n = 5
- normal two-level data from Multilevel Models class
- binomial random intercept n = 10 with conflicts (cafe)
- NJ n = 21 county LBW
- IL n = 102 county LBW
- compare ranking Methods
- could use total loss?
- answer how often we meet our goal: how often you meet your goal (% true top 10 in ranking's top 10)?
- houses WeightedLossRanking function
pros:
- accounts for varying levels on uncertainty in the point estimates of various ranked items cons:
- assumes ranks are evenly spaced (TODO check)
file: loss_on_ranks.r (function = loss_on_ranks)
file: loss_on_ranks.r (function = loss_on_ranks)
file: loss_on_ranks.r (function = loss_on_ranks)
pros:
- accounts for varying levels on uncertainty in the point estimates of various ranked items cons:
file:
file:
file:
(TODO can we be this flexible?)
pros:
- accounts for varying levels on uncertainty in the point estimates of various ranked items cons:
- ranking will depend on data's scale (TODO check this)
file:
file:
file:
pros:
- allows users to weight ranked items or positions (or both? TODO add as 2nd step)
- accounts for varying levels on uncertainty in the point estimates of various ranked items cons:
file:
file:
file:
pros:
- accounts for varying levels on uncertainty in the point estimates of various ranked items cons:
- assumes ranks are evenly spaced (TODO check)
file:
file:
file:
file: posteriormeans.r
pros:
- simple, typically used across fields cons:
- ignores varying levels on uncertainty in the point estimates of various ranked items
see their package (maybe include here)
- multilevel modeling from Ron's earlier student (name?) into ranking
- comparison loss functions with weighting
- additional ranking methods by other authors
- PLMIX: An R package for modeling and clustering partially ranked data https://arxiv.org/pdf/1612.08141.pdf
- pmr https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3665468/
- mederrRank https://cran.r-project.org/web/packages/mederrRank/mederrRank.pdf
- http://jmlr.csail.mit.edu/papers/volume12/weng11a/weng11a.pdf
Feb 2018: abstract to JSM (accepted April 2018) DONE
April 2018: draft program DONE
May 2018: finish program
June 2018: simulations + outline + draft paper
July 2018: write paper, write talk, practice talk
July 28-30: JSM talk
August 2018: send paper to Ron for final edits, submit