Exploring graphs is always a fun. Attaching the edges and nodes with real examples of psychological effects and accompany them with useless mental shortcuts is beyond fun. This is why we will call it a “cognitive bias” explorer using DAG.
Here are the graphs edges and nodes and we are calling them biases and weird links. Because, yes Let’s mix the math with psychology.
biases <- c( "Confirmation Bias", "Anchoring Bias", "Availability Heuristic", "Dunning-Kruger Effect", "Survivorship Bias", "Recency Bias", "Sunk Cost Fallacy", "Bandwagon Effect", "Framing Effect", "Self-Serving Bias", "Negativity Bias", "Halo Effect" ) # useless links weird_links <- c( "You saw it on Reddit", "Too lazy to verify", "Sounds familiar", "Because Elon tweeted it", "Grandma said so", "Wikipedia said maybe", "Your gut feeling", "Cited by no one", "Used in a TED talk", "Found in fortune cookie", "Might be science", "Feels statistically valid" )
With this real life useless connections we can build a data.frame:
edges <- data.frame( from = sample(biases, n_links, replace = TRUE), to = sample(biases, n_links, replace = TRUE), reason = sample(weird_links, n_links, replace = TRUE), stringsAsFactors = FALSE )
And finally, let’s glue all the pieces together:
library(igraph) library(ggraph) library(ggplot2) bias_explorer <- function(seed = 2908, n_links = 25) { set.seed(seed) # Some psych effects from RL biases <- c( "Confirmation Bias", "Anchoring Bias", "Availability Heuristic", "Dunning-Kruger Effect", "Survivorship Bias", "Recency Bias", "Sunk Cost Fallacy", "Bandwagon Effect", "Framing Effect", "Self-Serving Bias", "Negativity Bias", "Halo Effect" ) # useless links weird_links <- c( "You saw it on Reddit", "Too lazy to verify", "Sounds familiar", "Because Elon tweeted it", "Grandma said so", "Wikipedia said maybe", "Your gut feeling", "Cited by no one", "Used in a TED talk", "Found in fortune cookie", "Might be science", "Feels statistically valid" ) edges <- data.frame( from = sample(biases, n_links, replace = TRUE), to = sample(biases, n_links, replace = TRUE), reason = sample(weird_links, n_links, replace = TRUE), stringsAsFactors = FALSE ) edges <- edges[edges$from != edges$to, ] g <- graph_from_data_frame(edges, vertices = data.frame(name = biases), directed = TRUE) ggraph(g, layout = "drl") + geom_edge_link( aes(label = reason), arrow = arrow(length = unit(3, 'mm')), end_cap = circle(2, 'mm'), start_cap = circle(2, 'mm'), label_colour = "darkgray", edge_width = 1.2, colour = "skyblue" ) + geom_node_point(color = "darkred", size = 6) + geom_node_text(aes(label = name), repel = TRUE, fontface = "bold", size = 3.5) + labs( title = "Bias_explorer(): The Absurd Web of Biases", subtitle = "Visualizing ridiculous mental shortcuts.", caption = "Edges represent irrational and useless connections." ) + theme_void() }
Just to get a graph of random connections that can spark useless or useful imagination when examining your or one’s head.
As always, the complete code is available on GitHub in Useless_R_function repository. The sample file in this repository is here (filename: Cognitive bias.R). Check the repository for future updates.
Carry on with R-coding and stay healthy!