## ----include = FALSE----------------------------------------------------------
knitr::opts_chunk$set(
  collapse = TRUE,
  comment = "#>"
)

## ----setup, message = FALSE, warning = FALSE----------------------------------
library(rankingQ)
library(dplyr)

## -----------------------------------------------------------------------------
data(identity)

identity |>
  select(
    app_identity,
    party, religion, gender, race
  ) |>
  head()

## -----------------------------------------------------------------------------
identity |>
  select(
    app_identity,
    party, religion, gender, race,
    s_weight,
    anc_correct_identity
  ) |>
  head()

## -----------------------------------------------------------------------------
out_direct <- imprr_direct(
  data = identity,
  J = 4,
  main_q = c("party", "religion", "gender", "race"),
  weight = "s_weight"
)

## -----------------------------------------------------------------------------
out_direct$est_p_random

## -----------------------------------------------------------------------------
out_direct$results

## -----------------------------------------------------------------------------
out_direct$results |>
  filter(qoi == "top-k ranking")

## -----------------------------------------------------------------------------
out_direct <- imprr_direct(
  data = identity,
  J = 4,
  main_q = c("party", "religion", "gender", "race"),
  weight = "s_weight",
  anc_correct = "anc_correct_identity" # additional input
)

## -----------------------------------------------------------------------------
out_direct$est_p_random

## -----------------------------------------------------------------------------
out_direct$results |>
  filter(qoi == "average rank")

## -----------------------------------------------------------------------------
out_alternative <- imprr_direct(
  data = identity,
  J = 4,
  main_q = c("party", "religion", "gender", "race"),
  weight = "s_weight",
  p_random = 0.5 # estimated proportion of random responses
)

## -----------------------------------------------------------------------------
out_alternative$est_p_random

## -----------------------------------------------------------------------------
out_alternative$results |>
  filter(qoi == "average rank")

## -----------------------------------------------------------------------------
out_weights <- imprr_weights(
  data = identity,
  J = 4,
  main_q = c("party", "religion", "gender", "race"),
  weight = "s_weight",
  anc_correct = "anc_correct_identity", # additional input
)

## -----------------------------------------------------------------------------
out_weights$rankings |>
  select(ranking, weights) |>
  head()

## -----------------------------------------------------------------------------
out_weights$results |>
  select(weights, s_weight, app_identity, ranking) |>
  mutate(joint_weight = weights * s_weight) |>
  head()

## -----------------------------------------------------------------------------
items_df <- data.frame(
  variable = c("party", "religion", "gender", "race"),
  item = c("Party", "Religion", "Gender", "Race")
)

ipw_df <- out_weights$results |>
  mutate(joint_weight = weights * s_weight)

avg_rank(
  ipw_df,
  items = items_df,
  weight = "joint_weight",
  raw = FALSE
)

