Abstract

Psycho is an R package that aims at providing tools for psychologists, neuropsychologists and neuroscientists, to transform statistical outputs into something readable that can be, almost directly, copied and pasted into a report. It also implements various functions useful in psychological science, such as correlation matrices, assessment plot creation or normalization. The package revolves around the psychobject. Main functions from the package return this type, and the `analyze()`

function transforms other R objects into psychobjects. Four functions can then be applied on a psychobject: `summary()`

, `print()`

, `plot()`

and `values()`

. Contrary to many other packages which goal is to produce statistical analyzes, `psycho`

aims at filling the gap between statistical R outputs and statistical report writing, with a focus on APA formatting guidelines, to enhance the standardization of results reporting. Complex outputs, such as those of Bayesian and frequentist mixed models, are automatically transformed into readable text, tables, and plots that illustrate the effects. Thus, the results can easily be incorporated into shareable reports and publications, promoting data exploration, saving time and preventing errors for better, reproducible, science.

- Go here: https://cran.r-project.org/
- Download the last version for your OS
- Install it
- Go here: https://www.rstudio.com/products/rstudio/download/#download
- Download the right version for your OS
- Install it
- Start R studio

If you’ve never used `psycho`

, enter one of the following in the console and press enter:

```
# This for the stable version:
install.packages("psycho")
# Or this for the dev version:
install.packages("devtools")
library(devtools)
devtools::install_github("neuropsychology/psycho.R")
```

**In case of error**: Sometimes the installation fails, and you might find in the red output the following lines:

```
there is no package called ‘**thenameofapackage**’
ERROR: lazy loading failed for package ‘psycho’
```

Try installing the missing packages (`install.packages("thenameofapackage")`

) and then, install psycho again (sometimes this can be done several times).

Anyway, once you have `psycho`

, just put this at the beginning of every script:

`library(psycho)`

The package mainly revolves around the `psychobject`

. Main functions from the package return this type, and the `analyze()`

function transforms other R objects into psychobjects. 4 functions can be then applied on a psychobject: `summary()`

, `print()`

, `plot()`

and `values()`

.

- Formatted Correlation with Effect Size
- Extracting a Reference Grid of your Data for Machine Learning Models Visualization
- Copy/paste t-tests Directly to Manuscripts
- Easy APA Formatted Bayesian Correlation
- Fancy Plot (with Posterior Samples) for Bayesian Regressions
- How Many Factors to Retain in Factor Analysis
- Beautiful and Powerful Correlation Tables
- Format and Interpret Linear Mixed Models
- How to do Repeated Measures ANOVAs
- Standardize (Z-score) a dataframe
- Compute Signal Detection Theory Indices
- Installing R, R Studio and psycho

In general, the `plot()`

function returns, most of the times, a ggplot object. That means it remains quite flexible. Here’s an example.

```
library(psycho)
# Let's create a correlation plot
p <- plot(psycho::correlation(iris))
# Custom theme and colours
p <- p +
scale_fill_gradientn(colors = c("#4CAF50", "#FFEB3B", "#FF5722")) +
ylab("Variables\n") +
labs(fill = "r") +
theme(
plot.background = element_rect(fill = "#607D8B"),
axis.title.y = element_text(size = 20, angle = 90, colour = "white"),
axis.text = element_text(size = 15, colour = "white"),
legend.title = element_text(size = 20, colour = "white"),
legend.text = element_text(size = 15, colour = "white"),
title = element_text(size = 16, colour = "white")
)
p
```

Neuropsychologists often need to compare a single case to a small control group. However, the standard two-sample t-test does not work because the case is only one observation. Crawford and Garthwaite (2012) demonstrate that the Crawford-Garthwaite (2007) t-test is a better approach (in terms of controlling Type I error rate) than other commonly-used alternatives.

```
library(psycho)
patient <- 61 # The IQ of a patient
controls <- c(86, 100, 112, 95, 121, 102) # The IQs of a control group
result <- crawford.test(patient, controls)
print(result)
```

`## The Bayesian test for single case assessment (Crawford, Garthwaite, 2007) suggests that the patient's score (Raw = 61, Z = -3.36, percentile = 0.038) is significantly different from the controls (M = 102.67, SD = 12.39, p < .05*). The patient's score is lower than 98.70% (95% CI [93.08, 100.00]) of the control population.`

`plot(result)`

Assessing dissociation between processes is a fundamental part of clinical neuropsychology. However, while the detection of suspected impairments is a fundamental feature of single-case studies, evidence of an impairment on a given task usually becomes of theoretical interest only if it is observed in the context of less impaired or normal performance on other tasks. Crawford and Garthwaite (2012) demonstrate that the Crawford-Howell (1998) t-test for dissociation is a better approach (in terms of controlling Type I error rate) than other commonly-used alternatives.

```
library(psycho)
case_X <- 132
case_Y <- 7
controls_X <- c(100, 125, 89, 105, 109, 99)
controls_Y <- c(7, 8, 9, 6, 7, 10)
result <- crawford_dissociation.test(case_X, case_Y, controls_X, controls_Y)
```

`## The Crawford-Howell (1998) t-test suggests no dissociation between test X and test Y (t(5) = 1.62, p > .1). The patient's score on test X is not significantly altered compared to its score on test Y.`

Clinicians willing to check if their intervention had an effect on a single participant might want to use the Mellenbergh & van den Brink (1998) test, comparing the difference between baseline and post-test to the standart deviation of a control group.

```
library(psycho)
t0 <- 82 # The IQ of a patient at baseline
t1 <- 105 # The IQ of a patient after the new therapy
controls <- c(94, 100, 108, 95, 102, 94) # The IQs of a control group
rez <- mellenbergh.test(t0, t1, controls = controls)
# if we do not have a control group, we can also directly enter the SD of the score.
# For IQ, the SD is of 15.
rez <- mellenbergh.test(t0, t1, controls = 15)
```

This package helped you? Don’t forget to cite the various packages you used :)

You can cite `psycho`

as follows:

- Makowski, (2018).
*The psycho Package: An Efficient and Publishing-Oriented Workflow for Psychological Science*. Journal of Open Source Software, 3(22), 470. https://doi.org/10.21105/joss.00470

Improve this vignette by modifying this file!