Motivation

I define my utility function as follows: u = r - e + g√p, with r being the classroom response to the idea, e being the effort cost of sharing the idea, p being the probability that I think it’s a quality idea, and g being a parameter for “ego utility.” Let’s show how a utility funtion with ego utility can fail to be monotonic in p.

We can parametrize the model and graph how the decision to raise hand changes with p to make my point explicit visually. Let’s set g=3, b=0.5, and e=0.01.

For more context, read this post.

Graph time

I set my regular theme.

library(ggplot2);library(ggrepel); library(extrafont); library(ggthemes);library(reshape);library(grid);
library(scales);library(RColorBrewer);library(gridExtra);
my_theme <- function() {
  # Define colors for the chart
  palette <- brewer.pal("Greys", n=9)
  color.background = palette[2]
  color.grid.major = palette[4]
  color.panel = palette[3]
  color.axis.text = palette[9]
  color.axis.title = palette[9]
  color.title = palette[9]
  # Create basic construction of chart
  theme_bw(base_size=9, base_family="Palatino") + 
  # Set the entire chart region to a light gray color
  theme(panel.background=element_rect(fill=color.panel, color=color.background)) +
  theme(plot.background=element_rect(fill=color.background, color=color.background)) +
  theme(panel.border=element_rect(color=color.background)) +
  # Format grid
  theme(panel.grid.major=element_line(color=color.grid.major,size=.25)) +
  theme(panel.grid.minor=element_blank()) +
  theme(axis.ticks=element_blank()) +
  # Format legend
  theme(legend.position="bottom") +
  theme(legend.background = element_rect(fill=color.background)) +
  theme(legend.text = element_text(size=8,color=color.axis.title)) + 
  theme(legend.title = element_blank()) + 
  
  #Format facet labels
  theme(strip.text.x = element_text(size = 8, face="bold"))+
  # Format title and axes labels these and tick marks
  theme(plot.title=element_text(color=color.title, size=28)) +
  theme(axis.text.x=element_text(size=8)) +
  theme(axis.text.y=element_text(size=8)) +
  theme(axis.title.x=element_text(size=8)) +
  theme(axis.title.y=element_text(size=8)) +
  #Format title and facet_wrap title
  theme(strip.text = element_text(size=8), plot.title = element_text(size = 16, colour = "black", vjust = 1, hjust=0))+
    
  # Plot margins
  theme(plot.margin = unit(c(.2, .2, .2, .5), "cm"))
}

I will graph this utility function: u=4.5p-4sqrt(p)+0.49

When u is greater than 0, I share my idea. When u is less than 0, I don’t. The take-away here is that u is not monotonic in p. Let’s illustrate this graphically! Let’s annonate to explicitly show when you speak and when you don’t. We use geom_rect to color the areas where u exceeds 0 and where u is below 0.

df<-data.frame(xmin=c(0.049,0,0.405),
               xmax=c(0.405,0.049,1),
               ymin=c(-0.5,-0.5,-0.5),
               ymax=c(1,1,1),
               yesno=c("Don't share idea ","Share idea", "Share idea"))
sub <- expression(paste("The utility function with ego utility is: ", bold("u = 3.5p - 3sqrt(p) + 0.49")))
ego <- ggplot(data = data.frame(x = 0), mapping = aes(x = x))
utility <- function(x) 3*(x-sqrt(x))+x+(1-x)*0.5-0.01
ego + stat_function(fun = utility) + xlim(0,1) + ylim(-0.5,1) +
  my_theme()+ 
  geom_rect(data=df,aes(xmin=xmin,ymin=ymin,xmax=xmax,ymax=ymax,fill=yesno),alpha=0.2,inherit.aes=FALSE)+
  scale_fill_manual(values=c("orange1","royalblue1", "royalblue1"))+
  theme(legend.key = element_rect(colour = "grey53"), legend.position="bottom") +
  geom_hline(yintercept = 0, color="gray53")+
  ggtitle("On ego and sharing ideas", subtitle=sub)+
  labs(y = "Utility from sharing the idea (u)", x="Probability I think the idea is high quality (p)", caption="Take-away: u is not monotonic in p.\nInspiration: 'Psychology and Economics' lecture on belief-based utility\nVisualization via Alex Albright (thelittledataset.com)") +
  theme(plot.margin = unit(c(.2, .2, .2, .3), "cm"))+
  ggsave("share.png", width = 7, height = 6, dpi = 800)

This is the graph included in my blog post.

LS0tCnRpdGxlOiAiUGxvdCB1dGlsaXR5IGN1cnZlIHdpdGggZWdvIgphdXRob3I6IEFsZXggQWxicmlnaHQKZGF0ZTogMTAtMTEtMTcKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQojIE1vdGl2YXRpb24KSSBkZWZpbmUgbXkgdXRpbGl0eSBmdW5jdGlvbiBhcyBmb2xsb3dzOiBgdSA9IHIgLSBlICsgZ+KImnBgLCB3aXRoIGByYCBiZWluZyB0aGUgY2xhc3Nyb29tIHJlc3BvbnNlIHRvIHRoZSBpZGVhLCBgZWAgYmVpbmcgdGhlIGVmZm9ydCBjb3N0IG9mIHNoYXJpbmcgdGhlIGlkZWEsIGBwYCBiZWluZyB0aGUgcHJvYmFiaWxpdHkgdGhhdCBJIHRoaW5rIGl0J3MgYSBxdWFsaXR5IGlkZWEsIGFuZCBgZ2AgYmVpbmcgYSBwYXJhbWV0ZXIgZm9yICJlZ28gdXRpbGl0eS4iICoqTGV0J3Mgc2hvdyBob3cgYSB1dGlsaXR5IGZ1bnRpb24gd2l0aCBlZ28gdXRpbGl0eSBjYW4gZmFpbCB0byBiZSBtb25vdG9uaWMgaW4gYHBgLioqCgpXZSBjYW4gcGFyYW1ldHJpemUgdGhlIG1vZGVsIGFuZCBncmFwaCBob3cgdGhlIGRlY2lzaW9uIHRvIHJhaXNlIGhhbmQgY2hhbmdlcyB3aXRoIHAgdG8gbWFrZSBteSBwb2ludCBleHBsaWNpdCB2aXN1YWxseS4gTGV0J3Mgc2V0IGBnPTNgLCBgYj0wLjVgLCBhbmQgYGU9MC4wMWAuIAoKKkZvciBtb3JlIGNvbnRleHQsIFtyZWFkIHRoaXMgcG9zdC5dKGh0dHBzOi8vdGhlbGl0dGxlZGF0YXNldC5jb20vMjAxNy8xMC8xMi9vbi1lZ28tYW5kLXNoYXJpbmctaWRlYXMvKSoKCiMgR3JhcGggdGltZQpJIHNldCBteSByZWd1bGFyIHRoZW1lLgpgYGB7ciwgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRX0KbGlicmFyeShnZ3Bsb3QyKTtsaWJyYXJ5KGdncmVwZWwpOyBsaWJyYXJ5KGV4dHJhZm9udCk7IGxpYnJhcnkoZ2d0aGVtZXMpO2xpYnJhcnkocmVzaGFwZSk7bGlicmFyeShncmlkKTsKbGlicmFyeShzY2FsZXMpO2xpYnJhcnkoUkNvbG9yQnJld2VyKTtsaWJyYXJ5KGdyaWRFeHRyYSk7CgpteV90aGVtZSA8LSBmdW5jdGlvbigpIHsKCiAgIyBEZWZpbmUgY29sb3JzIGZvciB0aGUgY2hhcnQKICBwYWxldHRlIDwtIGJyZXdlci5wYWwoIkdyZXlzIiwgbj05KQogIGNvbG9yLmJhY2tncm91bmQgPSBwYWxldHRlWzJdCiAgY29sb3IuZ3JpZC5tYWpvciA9IHBhbGV0dGVbNF0KICBjb2xvci5wYW5lbCA9IHBhbGV0dGVbM10KICBjb2xvci5heGlzLnRleHQgPSBwYWxldHRlWzldCiAgY29sb3IuYXhpcy50aXRsZSA9IHBhbGV0dGVbOV0KICBjb2xvci50aXRsZSA9IHBhbGV0dGVbOV0KCiAgIyBDcmVhdGUgYmFzaWMgY29uc3RydWN0aW9uIG9mIGNoYXJ0CiAgdGhlbWVfYncoYmFzZV9zaXplPTksIGJhc2VfZmFtaWx5PSJQYWxhdGlubyIpICsgCgogICMgU2V0IHRoZSBlbnRpcmUgY2hhcnQgcmVnaW9uIHRvIGEgbGlnaHQgZ3JheSBjb2xvcgogIHRoZW1lKHBhbmVsLmJhY2tncm91bmQ9ZWxlbWVudF9yZWN0KGZpbGw9Y29sb3IucGFuZWwsIGNvbG9yPWNvbG9yLmJhY2tncm91bmQpKSArCiAgdGhlbWUocGxvdC5iYWNrZ3JvdW5kPWVsZW1lbnRfcmVjdChmaWxsPWNvbG9yLmJhY2tncm91bmQsIGNvbG9yPWNvbG9yLmJhY2tncm91bmQpKSArCiAgdGhlbWUocGFuZWwuYm9yZGVyPWVsZW1lbnRfcmVjdChjb2xvcj1jb2xvci5iYWNrZ3JvdW5kKSkgKwoKICAjIEZvcm1hdCBncmlkCiAgdGhlbWUocGFuZWwuZ3JpZC5tYWpvcj1lbGVtZW50X2xpbmUoY29sb3I9Y29sb3IuZ3JpZC5tYWpvcixzaXplPS4yNSkpICsKICB0aGVtZShwYW5lbC5ncmlkLm1pbm9yPWVsZW1lbnRfYmxhbmsoKSkgKwogIHRoZW1lKGF4aXMudGlja3M9ZWxlbWVudF9ibGFuaygpKSArCgogICMgRm9ybWF0IGxlZ2VuZAogIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbj0iYm90dG9tIikgKwogIHRoZW1lKGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGw9Y29sb3IuYmFja2dyb3VuZCkpICsKICB0aGVtZShsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplPTgsY29sb3I9Y29sb3IuYXhpcy50aXRsZSkpICsgCiAgdGhlbWUobGVnZW5kLnRpdGxlID0gZWxlbWVudF9ibGFuaygpKSArIAogIAogICNGb3JtYXQgZmFjZXQgbGFiZWxzCiAgdGhlbWUoc3RyaXAudGV4dC54ID0gZWxlbWVudF90ZXh0KHNpemUgPSA4LCBmYWNlPSJib2xkIikpKwoKICAjIEZvcm1hdCB0aXRsZSBhbmQgYXhlcyBsYWJlbHMgdGhlc2UgYW5kIHRpY2sgbWFya3MKICB0aGVtZShwbG90LnRpdGxlPWVsZW1lbnRfdGV4dChjb2xvcj1jb2xvci50aXRsZSwgc2l6ZT0yOCkpICsKICB0aGVtZShheGlzLnRleHQueD1lbGVtZW50X3RleHQoc2l6ZT04KSkgKwogIHRoZW1lKGF4aXMudGV4dC55PWVsZW1lbnRfdGV4dChzaXplPTgpKSArCiAgdGhlbWUoYXhpcy50aXRsZS54PWVsZW1lbnRfdGV4dChzaXplPTgpKSArCiAgdGhlbWUoYXhpcy50aXRsZS55PWVsZW1lbnRfdGV4dChzaXplPTgpKSArCgogICNGb3JtYXQgdGl0bGUgYW5kIGZhY2V0X3dyYXAgdGl0bGUKICB0aGVtZShzdHJpcC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemU9OCksIHBsb3QudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IDE2LCBjb2xvdXIgPSAiYmxhY2siLCB2anVzdCA9IDEsIGhqdXN0PTApKSsKICAgIAogICMgUGxvdCBtYXJnaW5zCiAgdGhlbWUocGxvdC5tYXJnaW4gPSB1bml0KGMoLjIsIC4yLCAuMiwgLjUpLCAiY20iKSkKfQpgYGAKSSB3aWxsIGdyYXBoIHRoaXMgdXRpbGl0eSBmdW5jdGlvbjogYHU9NC41cC00c3FydChwKSswLjQ5YAoKV2hlbiBgdWAgaXMgZ3JlYXRlciB0aGFuIDAsIEkgc2hhcmUgbXkgaWRlYS4gV2hlbiBgdWAgaXMgbGVzcyB0aGFuIDAsIEkgZG9uJ3QuIFRoZSB0YWtlLWF3YXkgaGVyZSBpcyB0aGF0IGB1YCBpcyBub3QgbW9ub3RvbmljIGluIGBwYC4gTGV0J3MgaWxsdXN0cmF0ZSB0aGlzIGdyYXBoaWNhbGx5ISBMZXQncyBhbm5vbmF0ZSB0byBleHBsaWNpdGx5IHNob3cgd2hlbiB5b3Ugc3BlYWsgYW5kIHdoZW4geW91IGRvbid0LiBXZSB1c2UgYGdlb21fcmVjdGAgdG8gY29sb3IgdGhlIGFyZWFzIHdoZXJlIGB1YCBleGNlZWRzIDAgYW5kIHdoZXJlIGB1YCBpcyBiZWxvdyAwLgpgYGB7cn0KZGY8LWRhdGEuZnJhbWUoeG1pbj1jKDAuMDQ5LDAsMC40MDUpLAogICAgICAgICAgICAgICB4bWF4PWMoMC40MDUsMC4wNDksMSksCiAgICAgICAgICAgICAgIHltaW49YygtMC41LC0wLjUsLTAuNSksCiAgICAgICAgICAgICAgIHltYXg9YygxLDEsMSksCiAgICAgICAgICAgICAgIHllc25vPWMoIkRvbid0IHNoYXJlIGlkZWEgIiwiU2hhcmUgaWRlYSIsICJTaGFyZSBpZGVhIikpCgpzdWIgPC0gZXhwcmVzc2lvbihwYXN0ZSgiVGhlIHV0aWxpdHkgZnVuY3Rpb24gd2l0aCBlZ28gdXRpbGl0eSBpczogIiwgYm9sZCgidSA9IDMuNXAgLSAzc3FydChwKSArIDAuNDkiKSkpCgplZ28gPC0gZ2dwbG90KGRhdGEgPSBkYXRhLmZyYW1lKHggPSAwKSwgbWFwcGluZyA9IGFlcyh4ID0geCkpCnV0aWxpdHkgPC0gZnVuY3Rpb24oeCkgMyooeC1zcXJ0KHgpKSt4KygxLXgpKjAuNS0wLjAxCmVnbyArIHN0YXRfZnVuY3Rpb24oZnVuID0gdXRpbGl0eSkgKyB4bGltKDAsMSkgKyB5bGltKC0wLjUsMSkgKwogIG15X3RoZW1lKCkrIAogIGdlb21fcmVjdChkYXRhPWRmLGFlcyh4bWluPXhtaW4seW1pbj15bWluLHhtYXg9eG1heCx5bWF4PXltYXgsZmlsbD15ZXNubyksYWxwaGE9MC4yLGluaGVyaXQuYWVzPUZBTFNFKSsKICBzY2FsZV9maWxsX21hbnVhbCh2YWx1ZXM9Yygib3JhbmdlMSIsInJveWFsYmx1ZTEiLCAicm95YWxibHVlMSIpKSsKICB0aGVtZShsZWdlbmQua2V5ID0gZWxlbWVudF9yZWN0KGNvbG91ciA9ICJncmV5NTMiKSwgbGVnZW5kLnBvc2l0aW9uPSJib3R0b20iKSArCiAgZ2VvbV9obGluZSh5aW50ZXJjZXB0ID0gMCwgY29sb3I9ImdyYXk1MyIpKwogIGdndGl0bGUoIk9uIGVnbyBhbmQgc2hhcmluZyBpZGVhcyIsIHN1YnRpdGxlPXN1YikrCiAgbGFicyh5ID0gIlV0aWxpdHkgZnJvbSBzaGFyaW5nIHRoZSBpZGVhICh1KSIsIHg9IlByb2JhYmlsaXR5IEkgdGhpbmsgdGhlIGlkZWEgaXMgaGlnaCBxdWFsaXR5IChwKSIsIGNhcHRpb249IlRha2UtYXdheTogdSBpcyBub3QgbW9ub3RvbmljIGluIHAuXG5JbnNwaXJhdGlvbjogJ1BzeWNob2xvZ3kgYW5kIEVjb25vbWljcycgbGVjdHVyZSBvbiBiZWxpZWYtYmFzZWQgdXRpbGl0eVxuVmlzdWFsaXphdGlvbiB2aWEgQWxleCBBbGJyaWdodCAodGhlbGl0dGxlZGF0YXNldC5jb20pIikgKwogIHRoZW1lKHBsb3QubWFyZ2luID0gdW5pdChjKC4yLCAuMiwgLjIsIC4zKSwgImNtIikpKwogIGdnc2F2ZSgic2hhcmUucG5nIiwgd2lkdGggPSA3LCBoZWlnaHQgPSA2LCBkcGkgPSA4MDApCmBgYApUaGlzIGlzIHRoZSBncmFwaCBpbmNsdWRlZCBpbiBteSBibG9nIHBvc3QuIAo=