`custom-plot.rmd`

This vignette exemplifies different ways to plot the specification curve. In general, the function `plot_specs()`

takes care of the overall process. However, more specific customizations are possible once we use the more specific functions `plot_curve()`

, `plot_choices`

, and `plot_samplesizes()`

. These function produce regular ggplot-objects that can be customized further.

In order to have some data to work with, we run the minimal example contained in the package.

```
library(specr)
library(dplyr)
# run spec analysis
results <- run_specs(example_data,
y = c("y1", "y2"),
x = c("x1", "x2"),
model = "lm",
controls = c("c1", "c2"),
subset = list(group1 = unique(example_data$group1),
group2 = unique(example_data$group2)))
```

Let’s quickly get some ideas about the specification curve by using `summarise_specs()`

`summarise_specs(results, group = c("x", "controls"))`

```
## # A tibble: 8 x 9
## # Groups: x [2]
## x controls median mad min max q25 q75 obs
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 x1 c1 3.16 4.50 -2.05 8.96 0.581 6.39 123
## 2 x1 c1 + c2 3.16 4.46 -1.94 8.49 0.228 6.25 123
## 3 x1 c2 3.79 4.51 -1.61 9.14 0.632 6.48 123
## 4 x1 no covariates 3.95 4.21 -1.80 9.28 1.13 6.73 123
## 5 x2 c1 4.75 4.77 -0.258 8.75 1.36 7.79 123
## 6 x2 c1 + c2 4.35 4.74 -0.0841 8.71 1.08 7.14 123
## 7 x2 c2 4.40 4.78 0.373 9.58 1.18 7.61 123
## 8 x2 no covariates 4.81 4.92 0.463 9.22 1.57 8.12 123
```

We see that it makes quite a difference whether `x1`

or `x2`

is used as independent variable.

The simplest way to visualize most of the information contained in the results data frame is by using the `plot_specs()`

function.

`plot_specs(results)`

We can further customize that function, e.g., by removing unnecessary information or by reordering/transforming the analytical choices (and thereby visualize specific contrasts).

```
plot_specs(results,
choices = c("x", "y", "controls", "subsets"), # model is not plotted
rel_heights = c(0.75, 2)) # changing relative heights of the two parts
```

Alternatively, we can also plot the curve and the choice panel individually and bind them together afterwards.

```
# Plot specification curve (p1)
p1 <- plot_curve(results) +
geom_hline(yintercept = 0, linetype = "dashed", color = "grey") +
ylim(-8, 12) +
labs(x = "", y = "unstandarized regression coefficient") +
theme_classic()
# Plot choices (p2)
p2 <- plot_choices(results) +
labs(x = "specifications (ranked)") +
theme_classic() +
theme(strip.text.x = element_blank())
# Combine plots
plot_specs(plot_a = p1,
plot_b = p2,
labels = c("", ""),
rel_height = c(2, 2.5))
```

The additional function `plot_samplesizes()`

provides and additional panel that can be added via the `cowplot::plot_grid()`

```
p3 <- plot_samplesizes(results) +
theme_classic()
# Combine via cowplot
cowplot::plot_grid(p1, p2, p3,
ncol = 1,
align = "v",
rel_heights = c(1.5, 2, 0.8),
axis = "rbl")
```