#options(knitr.table.format = 'html') knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/README-", out.width = "100%" )
The purpose of deals
is to faclitiate operations with and presentation of decisions under uncertainty.
You can install the released version of deals from Github with:
remotes::install_github("dmi3kno/deals")
This is a basic example which shows you how to solve a common problem:
library(deals) library(magrittr) ## basic example code
Leland, Schneider, & Wilcox (2019) introduced definition of "transparent frames" for decisions under uncertainty (hereafter, "deals"). In this package a deal
is a list of two dataframes, each with two columns p
(probability of a given outcome) and x
(the outcome itself). Decision maker is offered a choice between two uncertain prospects and can choose one of them.
# Allais paradox a1 <- list( data.frame( x=c(5e5), p=c(1), stringsAsFactors = FALSE), data.frame( x=c(2.5e6, 5e5, 0), p=c(0.1, 0.89, 0.01), stringsAsFactors = FALSE) ) a1 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a1) deal_make_transparent(a1) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a1))
a2 <- list( data.frame( x=c(5e5,0), p=c(0.11,0.89), stringsAsFactors = FALSE), data.frame( x=c(2.5e6,0), p=c(0.10,0.90), stringsAsFactors = FALSE) ) a2 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a2) deal_make_transparent(a2) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a2))
a3 <- list( data.frame( x=c(0, 45, 30, -15, -15), p=c(0.9, 0.06, 0.01, 0.01, 0.02), stringsAsFactors = FALSE), data.frame( x=c(0, 45, 45, -10, -15), p=c(0.9, 0.06, 0.01, 0.01, 0.02), stringsAsFactors = FALSE) ) a3 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) # this one is transparent deal_is_transparent(a3) deal_make_transparent(a3) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a3))
a4 <- list( data.frame( x=c(0, 45, 30, -15), p=c(0.9, 0.06, 0.01, 0.03), stringsAsFactors = FALSE), data.frame( x=c(0, 45, -10, -15), p=c(0.9, 0.07, 0.01, 0.02), stringsAsFactors = FALSE) ) a4 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a4) deal_make_transparent(a4) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a4))
a5 <- list( data.frame( x=c(2500, 2400, 0), p=c(0.33, 0.66, 0.01), stringsAsFactors = FALSE), data.frame( x=c(2400, 2400, 2400), p=c(0.33, 0.66, 0.01), stringsAsFactors = FALSE) ) a5 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a5) deal_make_transparent(a5) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a5))
a6 <- list( data.frame( x=c(2500, 0), p=c(0.33, 0.67), stringsAsFactors = FALSE), data.frame( x=c(2400, 0), p=c(0.34, 0.66), stringsAsFactors = FALSE) ) a6 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a6) deal_make_transparent(a6) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a6))
The following pair of deals constitute Allais Paradox. Second deal is proportionate copy of the first one.
a7 <- list( data.frame( x=c(4000, 0), p=c(0.8, 0.2), stringsAsFactors=FALSE), data.frame( x=c(3000), p=c(1), stringsAsFactors = FALSE) ) a7 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a7) deal_make_transparent(a7) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a7))
a8 <- list( data.frame( x=c(4000, 0), p=c(0.2, 0.8), stringsAsFactors=FALSE), data.frame( x=c(3000, 0), p=c(0.25, 0.75), stringsAsFactors = FALSE) ) a8 %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a8) deal_make_transparent(a8) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a8))
The following pair of deals exemplify Ellsberg Paradox.
a9r <- list( data.frame( x=c(8, 0), p=c(0.1, 0.9), stringsAsFactors=FALSE), data.frame( x=c(20, 0), p=c(0.05, 0.95), stringsAsFactors = FALSE) ) a9r %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a9r) deal_make_transparent(a9r) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a9r)) a9b <- list( data.frame( x=c(8, 0), p=c(0.6, 0.4), stringsAsFactors=FALSE), data.frame( x=c(20, 0), p=c(0.3, 0.7), stringsAsFactors = FALSE) ) a9b %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(a9b) deal_make_transparent(a9b) %>% deal_to_textdf() %>% knitr::kable(col.names = NULL) deal_is_transparent(deal_make_transparent(a9b))
References:
Leland, J. W., Schneider, M., & Wilcox, N. T. (2019). Minimal Frames and Transparent Frames for Risk, Time, and Uncertainty. Management Science.
Stochastic dominance: http://nejchladnik.com/blog/2015/11/14/the-concept-of-stochastic-dominance/
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.